Как проверить, что python-разработчики (или вы сами) хорошо задокументировали код, кроме как просматривать все руками или генерировать pydoc'ом документацию и сравнивать с исходниками? Вот и я не нашел никакого решения, пока случайно не натолкнулся на старый-престарый скрипт, который вдохновил меня на форк и последующую несложную доработку.
В результате у меня получился простой и полезный (по крайней мере для меня :) ) инструмент Docstring coverage, позволяющий оценить процентное покрытие кода документацией по всему проекту.
Запускается так:
Пример вывода:
Среди опций есть -m, которая заставляет утилиту пропускать __магические__ методы python и -v, позволяющая настроить уровень «болтливости» вывода от 0 до 3.
При желании можно импортировать в рабочий проект использовать для получения статистики по покрытию:
Отдается в виде списка с двумя элементами типа dict:
Вся документация с примерами есть на странице проекта.
В результате у меня получился простой и полезный (по крайней мере для меня :) ) инструмент Docstring coverage, позволяющий оценить процентное покрытие кода документацией по всему проекту.
Запускается так:
docstring-coverage [опции] <путь к папке или модулю>
Пример вывода:
$ docstring-coverage docstring-coverage/ File docstring-coverage/setup.py - No module dostring! Needed: 1; Exist: 0; Missing: 1; Coverage: 0.0% File docstring-coverage/docstringcoverage/__init__.py - No module dostring! Needed: 1; Exist: 0; Missing: 1; Coverage: 0.0% File docstring-coverage/docstringcoverage/cover.py - No docstring for DocStringCoverageVisitor! - No docstring for DocStringCoverageVisitor.__init__! - No docstring for DocStringCoverageVisitor.visitModule! - No docstring for DocStringCoverageVisitor.visitClass! - No docstring for DocStringCoverageVisitor.visitFunction! - No docstring for DocStringCoverageVisitor.getResult! - No docstring for get_docstring_coverage.printDocstring! Needed: 11; Exist: 4; Missing: 7; Coverage: 36.4% Overall statistics for 3 files: Docstrings needed: 13; Docstrings exist: 4; Docstrings missing: 9 Total docstring coverage: 30.8%; Grade: not so good
Среди опций есть -m, которая заставляет утилиту пропускать __магические__ методы python и -v, позволяющая настроить уровень «болтливости» вывода от 0 до 3.
При желании можно импортировать в рабочий проект использовать для получения статистики по покрытию:
import docstringcoverage cover_results = docstringcoverage.get_docstring_coverage(['somefolder/somefile.py'])
Отдается в виде списка с двумя элементами типа dict:
[ {'<имя файла>': { 'missing': ["<имя метода, класса или функции","..."], 'module_doc': <True or False>, #есть ли докстринг для модуля 'missing_count': <missing_count>, #сколько пропущено докстрингов 'needed_count': <needed_docstrings_count>, #сколько всего должно быть докстрингов 'coverage': <percent_of_coverage>, #процент покрытия 'empty': <True or False> #True, если файл пуст #(нет импортов, функций, классов или переменных) }, ... }, #всего по проекту { 'missing_count': <total_missing_count>, 'needed_count': <total_needed_docstrings_count>, 'coverage': <total_percent_of_coverage>, }
Вся документация с примерами есть на странице проекта.
