Анализатор исходного кода Python, работающий с компонентами zope
Существует база кода (Py 2.6), которая широко использует компоненты zope, и существует потребность в инструменте, который может анализировать источники. Инструмент должен анализировать источник; например, искать использование некоторых ограниченных классов / объектов / интерфейсов и т. д. По сути, сканировать каждый оператор в источнике, зная контекст оператора (в каком классе / методе / функции он находится, в каком модуле и т. д.), и анализировать его конкретные модели.
Подход чтения источника в текстовые буферы и шаблоны сопоставления, похоже, не является надежным подходом вообще.
Другой подход, который был предложен, заключался в использовании inspect, но inspect кажется неработоспособным и, похоже, не в состоянии обработать нашу кодовую базу (несколько попыток, все они проваливаются при проверке). Возможно, мне придется отказаться от этого, так как, похоже, сейчас есть выход с проверкой.
Теперь другие варианты, о которых я мог подумать, - это использование pylint или AST (и много постобработки на нем). Я не уверен, в какой степени Pylint является расширяемым; и когда дело доходит до анализа исходной статистики, может ли pylint знать о контексте (т. е. какой класс defn/function/method имеет это утверждение и т. д.) Использование AST кажется слишком большим излишним для такой тривиальной цели.
Что бы вы предложили в качестве подходящего подхода здесь? Кто-нибудь еще сталкивался с такой проблемой раньше?
Пожалуйста, предложите.