подсчитывать строки кода для каждого класса в файле python?

Я пытаюсь найти количество строк кода внутри класса в файле python. Я использовал len(inspect.getsourcelines(b)[0]), чтобы вернуть количество строк кода для каждого класса в файле. но проблема в том, что он считает комментарии и строку документа в дополнение к строкам кода.. есть ли способ отбросить комментарии и строку документа ??

import inspect
import foo

for a,b in inspect.getmembers(foo): 
    if inspect.isclass(b):
        print(a)
        print(len(inspect.getsourcelines(b)[0]))

person tkyass    schedule 21.10.2012    source источник
comment
Вы можете получить доступ к строке документации для каждого класса и функции через __doc__ и самостоятельно подсчитать строки документации, но я не знаю, как это сделать с помощью комментариев.   -  person Michael Foukarakis    schedule 22.10.2012
comment
комментарии лучше включать в число строк кода.   -  person wim    schedule 22.10.2012


Ответы (1)


Возможно, вам просто придется самостоятельно проанализировать комментарии из результата getsourcelines. Если вы игнорируете многострочные комментарии, это просто означает проверку, является ли первый непробельный символ #. Для многострочных комментариев, использующих тройные кавычки, вы можете сделать что-то подобное, отслеживая, находитесь ли вы в блоке комментариев.

person Michael Mior    schedule 22.10.2012
comment
Я пытался сделать это, но я не мог найти никакого способа, который мог бы работать ... у вас есть идеи, как это сделать ?? - person tkyass; 22.10.2012
comment
Игнорируя многострочные комментарии, len([line for line in inspect.getsourcelines(foo)[0] if not line.strip().startswith('#')]) где foo — объект, который вы проверяете. - person Michael Mior; 22.10.2012
comment
Если это то, что вы пробовали, было бы хорошо опубликовать то, что вы пробовали, но это не сработало. - person Michael Mior; 22.10.2012