def main(argv): user_symbol_samples, kernel_symbol_samples = get_symbol_samples(argv[0]) sym2mod, file2mod = get_modinvmap(argv[1]) names = name_lookup_harvester() by_name = by_name_harvester() tagfile = ctags_file(argv[2], harvesters=[names, by_name]) ctags = by_name.get_data() user_total_samples = 0 for s in user_symbol_samples: user_total_samples = user_total_samples + s[1] kernel_total_samples = 0 for s in kernel_symbol_samples: kernel_total_samples = kernel_total_samples + s[1] total_samples = user_total_samples + kernel_total_samples kernel_module_samples = categorize_samples(sym2mod, file2mod, ctags, kernel_symbol_samples) kernel_sorted_module_samples = sorted(kernel_module_samples.iteritems(), key=operator.itemgetter(1), reverse=True) if total_samples == 0: print 'No samples...' return print_symbol('NAME', '%', '% (relative)') print_symbol('USER', 100 * float(user_total_samples) / float(total_samples), 100) print_symbol('KERNEL', 100 * float(kernel_total_samples) / float(total_samples), 100) for m in kernel_sorted_module_samples: perc_abs = 100 * float(m[1]) / float(total_samples) perc_rel = 100 * float(m[1]) / float(kernel_total_samples) print_symbol(m[0], perc_abs, perc_rel)
def UpdateCTagsGenerator(self): self.ctags_generator = exuberant_ctags(files=self.source_files) try: if self.source_files: self.list_of_tags = self.ctags_generator.generate_tags(generator_options={"--fields": "+n"}) self.names = name_lookup_harvester() self.by_name = by_name_harvester() self.tagfile = ctags_file(self.list_of_tags, harvesters=[self.names, self.by_name]) except: pass
def main(argv): all_symbol_samples = get_symbol_samples(argv[0], 0, 100) symbol_samples = get_symbol_samples(argv[0], 0.0, 80) sym2mod, file2mod = get_modinvmap('modules') names = name_lookup_harvester() by_name = by_name_harvester() tagfile = ctags_file('linux-tags', harvesters=[names, by_name]) ctags = by_name.get_data() module_samples = categorize_samples(sym2mod, file2mod, ctags, symbol_samples) total_samples = 0 for s in all_symbol_samples: total_samples = total_samples + s[1] sorted_module_samples = sorted(module_samples.iteritems(), key=operator.itemgetter(1), reverse=True) total_perc = 0 print 'NAME'.ljust(30), '%' for m in sorted_module_samples: perc = 100*float(m[1])/float(total_samples) total_perc = total_perc + perc print m[0].ljust(30), perc print 'TOTAL'.ljust(30),total_perc
from pyctags import exuberant_ctags, ctags_file from pyctags.harvesters import name_lookup_harvester, by_name_harvester import os source_files = list() for (dirpath, dirs, files) in os.walk("../"): for f in files: if f[-3:] == '.py': source_files.append(os.path.join(dirpath, f)) generator = exuberant_ctags(files=source_files) list_o_tags = generator.generate_tags(generator_options={'--fields' : '+n'}) names = name_lookup_harvester() by_name = by_name_harvester() tagfile = ctags_file(list_o_tags, harvesters=[names, by_name]) print ("Found %d tags in %d source files." % (len(tagfile.tags), len(source_files))) # this fetches unique names letter_tags = names.starts_with('c') print ("%d individual names start with the letter c." % (len(letter_tags))) by_name_tags = by_name.get_data() for t in letter_tags: # there can be more than one occurance of a particular name for t2 in by_name_tags[t]: print ("\t%s is in %s on line %s." % (t2.name, t2.file, t2.line_number))
import os source_files = list() for (dirpath, dirs, files) in os.walk("/Big2/microbe/"): for f in files: if f[-4:] == '.cpp' or f[-2:] == ".h" : source_files.append(os.path.join(dirpath, f)) generator = exuberant_ctags(files=source_files) list_o_tags = generator.generate_tags(generator_options={'--fields' : '+n'}) names = name_lookup_harvester() by_name = by_name_harvester() tagfile = ctags_file(list_o_tags, harvesters=[names, by_name]) print ("Found %d tags in %d source files." % (len(tagfile.tags), len(source_files))) import microbe, re regexs = {} for tag in tagfile.tags: print tag.file, tag.name, tag.pattern, tag.line_number, tag.extensions['kind'] #print tag.name + "####" + tag.extensions['kind'] regexs[tag.name + "####" + tag.extensions['kind']] = re.compile(tag.name) def func2(text):