Added a hack, python script for removing the logging of a trace depending on a keyword. Current implementation requires the keyword to be typed in the file; just change the 'trace_remove_key_word' from kTraceModuleCall to whatever. Hack should be fine since it works and it's a tool that has only limited utility.
Adding to repository to make it easy to access and for reference if someone wants to make a similar hack or write a better one.
Review URL: https://webrtc-codereview.appspot.com/395002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1687 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/tools/refactoring/removetrace.py b/tools/refactoring/removetrace.py
new file mode 100644
index 0000000..43c622d
--- /dev/null
+++ b/tools/refactoring/removetrace.py
@@ -0,0 +1,161 @@
+# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# NOTE: This is a hack which disobeys a number of conventions and best
+# practices. It's here just to be easily shared. If it's to remain in the
+# repository it should be refactored.
+
+#!/usr/bin/env python
+
+import stringmanipulation
+import filemanagement
+import sys
+
+trace_remove_key_word = 'kTraceModuleCall'
+
+if((len(sys.argv) != 2) and (len(sys.argv) != 3)):
+ print 'parameters are: parent directory [--commit]'
+ quit()
+
+if((len(sys.argv) == 3) and (sys.argv[2] != '--commit')):
+ print 'parameters are: parent directory [--commit]'
+ quit()
+
+commit = (len(sys.argv) == 3)
+
+directory = sys.argv[1];
+occurances = []
+
+trace_identifier = 'WEBRTC_TRACE('
+extensions = ['.h','.cc','.c','.cpp']
+files_to_fix = []
+for extension in extensions:
+ files_to_fix.extend(filemanagement.listallfilesinfolder(directory,\
+ extension))
+
+# This function identifies the begining of a trace statement
+def istracebegining(line):
+ return stringmanipulation.issubstring(line, trace_identifier) != -1
+
+def endofstatement(line):
+ return stringmanipulation.issubstring(line, ';') != -1
+
+def removekeywordfound(line):
+ return stringmanipulation.issubstring(line, trace_remove_key_word) != -1
+
+# Used to store temporary result before flushing to real file when finished
+def temporaryfilename():
+ return 'deleteme.txt'
+
+
+def find_occurances(path, file_name):
+ full_filename = path + file_name
+ file_handle = open(full_filename,'r')
+ line_is_trace = False
+ last_trace_line = -1
+ for line_nr, line in enumerate(file_handle):
+ if(istracebegining(line)):
+ line_is_trace = True;
+ last_trace_line = line_nr
+
+ if(line_is_trace):
+ if(removekeywordfound(line)):
+ occurances.append(last_trace_line)
+
+ if(endofstatement(line)):
+ line_is_trace = False;
+
+def remove_occurances(path, file_name):
+ full_file_name = path + file_name
+ if (not filemanagement.fileexist(full_file_name)):
+ print 'File ' + full_file_name + ' is not found.'
+ print 'Should not happen! Ever!'
+ quit()
+
+ full_temporary_file_name = path + temporaryfilename()
+ temporary_file = open(full_temporary_file_name,'w')
+ original_file = open(full_file_name,'r')
+ next_occurance_id = 0;
+ removing_statement = False
+ if(len(occurances) == next_occurance_id):
+ return
+ next_occurance = occurances[next_occurance_id]
+ next_occurance_id += 1
+ for line_nr, line in enumerate(original_file):
+ if(line_nr == next_occurance):
+ removing_statement = True
+ if(len(occurances) == next_occurance_id):
+ next_occurance_id = -1
+ else:
+ next_occurance = occurances[next_occurance_id]
+ next_occurance_id += 1
+
+ if (not removing_statement):
+ temporary_file.writelines(line)
+
+ if(endofstatement(line)):
+ removing_statement = False;
+
+ temporary_file.close()
+ original_file.close()
+ filemanagement.copyfile(full_file_name,full_temporary_file_name)
+ filemanagement.deletefile(full_temporary_file_name)
+
+def nextoccurance():
+ if (len(occurances) == 0):
+ return -1
+ return_value = occurances[0]
+ occurances = occurances[1:len(occurances)]
+ return return_value
+
+def would_be_removed_occurances(path, file_name):
+ full_file_name = path + file_name
+ if (not filemanagement.fileexist(full_file_name)):
+ print 'File ' + full_file_name + ' is not found.'
+ print 'Should not happen! Ever!'
+ quit()
+
+ original_file = open(full_file_name,'r')
+ removing_statement = False
+ next_occurance_id = 0;
+ if(len(occurances) == next_occurance_id):
+ return
+ next_occurance = occurances[next_occurance_id]
+ next_occurance_id += 1
+ for line_nr, line in enumerate(original_file):
+ if(line_nr == next_occurance):
+ removing_statement = True
+ if(len(occurances) == next_occurance_id):
+ return
+ next_occurance = occurances[next_occurance_id]
+ next_occurance_id += 1
+
+ if (removing_statement):
+ print line_nr
+
+ if(endofstatement(line)):
+ removing_statement = False;
+ if(next_occurance == -1):
+ break
+ original_file.close()
+
+for index in range(len(files_to_fix)):
+ if(commit):
+ print (100*index)/len(files_to_fix)
+
+ path_dir = files_to_fix[index][0]
+ filename = files_to_fix[index][1]
+
+ #print path_dir + filename
+ occurances = []
+ find_occurances(path_dir, filename)
+
+ if(not commit):
+ would_be_removed_occurances(path_dir, filename)
+ continue
+ remove_occurances(path_dir, filename)