Example #1
0
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)
Example #2
0
    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
Example #3
0
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
Example #4
0
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))
Example #5
0
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):