pylint 1.4 meldet E1101 (kein Mitglied) für alle C-Erweiterungen
Wir sind langjährige Fans vonpylint
. Die statische Analyse ist zu einem wichtigen Bestandteil all unserer Python-Projekte geworden und hat Tonnen von Zeit gespart, um unbekannte Fehler zu suchen. Nach dem Upgrade von 1.3 -> 1.4 führen jedoch fast alle kompilierten c-Erweiterungen zu E1101-Fehlern (keine Mitglieder).
Projekte, die zuvor einwandfrei durchlaufen wurdenpylint
1.3 beschweren sich jetzt über fast jedes C-Extension-Mitglied mit E1101. Wir mussten E1101-Fehler deaktivieren, was jedoch die Nützlichkeit von @ erheblich beeinträchtigpylint
.
Zum Beispiel ist diese vollkommen gültige Verwendung deslxml
package
r"""valid.py: demonstrate pylint 1.4 error"""
from lxml import etree
print etree.Element('mydoc')
Run this throughpylint
, und es meldet:
$ 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)
Aber es ist vollkommen gültig:
$ python valid.py
<Element mydoc at 7fddf67b1ba8>
Hier wird es richtig komisch. Eine sehr kleine Handvoll C-Erweiterungen scheinen durch @ gut zu funktionierpylint
, z.B.
r"""valid2.py: this one works fine"""
import sqlite3
print sqlite3.version
$ pylint -rn valid2.py
No config file found, using default configuration
Meine Frage ist, hat jemand dies miterlebt? Und wenn ja, möchten Sie uns Ihre Problemumgehung / Lösung mitteilen?
Wir haben versucht, Plugins zu erstellen, um diese Warnungen zu unterdrücken http: //docs.pylint.org/plugins.html#enter-plugi), aber wir haben Schwierigkeiten, Kopf oder Fuß der Dokumente zu machen - und dasastroid
Basisklasse ist überkompliziert und hat sich unseren Versuchen widersetzt.
Für echte Bonuspunkte (und unsere ewige Dankbarkeit) würden wir gerne verstehen, was sich in @ geändert hapylint
. Wir würden uns freuen, den Code zu korrigieren (oder zumindest ein Best-Practice-Dokument für C-Erweiterungsautoren zu veröffentlichen), derpylint
.
Plattformdetails
$ 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)]