Pylint 1.4 сообщает E1101 (без участия) на всех расширениях C
Мы давние поклонникиpylint
, Его статический анализ стал важной частью всех наших проектов на Python и сэкономил массу времени на поиске скрытых ошибок. Но после обновления с 1.3 -> 1.4 почти все скомпилированные расширения c приводят к ошибкам E1101 (без участия).
Проекты, которые ранее проходили идеально чисто черезpylint
1.3 теперь жалуюсь почти на каждый член C расширения с E1101. Мы были вынуждены отключить ошибки E1101, но это существенно снижает полезностьpylint
.
Например, это совершенно правильное использованиеlxml
пакет
r"""valid.py: demonstrate pylint 1.4 error"""
from lxml import etree
print etree.Element('mydoc')
Запустите это черезpylint
и сообщает:
$ pylint -rn valid.py
No config file found, using default configuration
************* Module valid
E: 3, 6: Module 'lxml.etree' has no 'Element' member (no-member)
Но это совершенно справедливо:
$ python valid.py
<Element mydoc at 7fddf67b1ba8>
Вот где это становится действительно странным. Очень небольшая часть расширений C, кажется, прекрасно работает черезpylint
Например:
r"""valid2.py: this one works fine"""
import sqlite3
print sqlite3.version
$ pylint -rn valid2.py
No config file found, using default configuration
Мой вопрос, кто-нибудь еще был свидетелем этого? И если да, готовы ли вы поделиться своим решением проблемы?
Мы экспериментировали с попыткой создания плагинов для подавления этих предупреждений (http://docs.pylint.org/plugins.html#enter-plugin), но у нас возникают трудности при создании голов или хвостов документов - иastroid
Базовый класс очень сложный и не поддается нашим попыткам его обмануть.
Для реальных бонусных баллов (и нашей вечной благодарности) мы хотели бы понять, что изменилось вpylint
, Мы были бы рады исправить код (или, по крайней мере, опубликовать лучший документ для авторов расширений C), который бы удовлетворялpylint
.
Детали платформы
$ pylint --version
No config file found, using default configuration
pylint 1.4.0,
astroid 1.3.2, common 0.63.2
Python 2.7.5 (default, Jul 1 2013, 18:09:11)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]