Dieses Projekt ist nicht mehr aktiv aufrechterhalten.
Inhalt
Tidypy ist ein Tool, das eine Reihe anderer statischer Analyse -Tools zusammenfasst und die Konfiguration, Ausführung und Überprüfung ihrer Ergebnisse erleichtert.
*.py -Quelldateien. Neben der Ausführung einer Reihe verschiedener Tools in Ihrem Code kann auch Ihre YAML-, JSON-, PO-, POT- und RST -Dateien überprüfen.pyproject.toml -Datei. Alle Optionen für alle Tools Tidypy werden an einem Ort deklariert, anstatt dass Sie jedes Tool auf unterschiedliche Weise konfigurieren müssen.# noqa -Kommentar in Ihrer Python-Quelle, um Probleme leicht zu ignorieren, die von jedem Tool gemeldet wurden. Wenn Tidypy installiert ist ( pip install tidypy ), sollte der Befehl tidypy in Ihrer Umgebung verfügbar sein:
$ tidypy -HELP
Verwendung: Tidypy [Optionen] Befehl [args] ...
Ein Tool, das mehrere statische Analyse -Tools für ein Python -Projekt ausführt
und aggregiert die Ergebnisse.
Optionen:
--version zeigen die Version und den Ausgang.
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
Befehle:
Überprüfen Sie, ob die Tools auf den Projektdateien ausgeführt werden.
Die Standardkonfiguration gibt eine Standardkonfiguration aus, die verwendet werden kann
Bootstrap Ihre eigene Konfigurationsdatei.
Erweiterungen geben eine Auflistung aller verfügbaren Tidypy -Erweiterungen aus.
Installation-VCs installiert Tidypy als Vorkommot-Haken in die angegebenen
VCS.
Listencodes gibt eine Auflistung aller bekannten Problemcodes aus, die Tools
kann melden.
Lecker-config-cache löscht den Cache der Konfigurationen, aus denen abgerufen wurde
außerhalb der primären Konfiguration.
REMED-VCs entfernt den Tidypy-Vorkommachthaken aus dem angegebenen
VCS.
Verwenden Sie den check -Unterbefehl, um Tidypy -Analyse Ihres Projekts analysieren zu lassen:
$ tidypy check -help
Verwendung: Tidypy Check [Optionen] [Pfad]
Führt die Tools auf den Projektdateien aus.
Akzeptiert ein Argument, das der Weg zur Basis des Python -Projekts ist.
Wenn dies nicht angegeben ist, ist die Standardeinstellung zum aktuellen Arbeitsverzeichnis.
Optionen:
-x, -exclude regex Gibt einen regulären Ausdruck an, der übereinstimmt
gegen Pfade, von denen Sie ausschließen möchten
die Prüfung. Kann mehrere angegeben werden
mal. Überschreibt die angegebenen Ausdrücke
In der Konfigurationsdatei.
-t, - -tool [Bandit | Dlinint | ERADIATE | JSONLINT | Manifest | McCabe | Polint | Pycodestyle | Pydiatra | PydocStyle | Pyflakes | Pyrint | Pyroma | RSTLINT | Geheimnisse | Vulture | Yamllint]
Gibt den Namen eines Tools an, das Sie verwenden sollten
die Prüfung. Kann mehrere angegeben werden
mal. Überschreibt die Konfigurationsdatei.
-R,-Report [Konsole, CSV, Custom, JSON, NULL, Pycodestyle, Pylint, Pylint-Parsera, Toml, Yaml] [: Dateiname]
Gibt den Namen eines ausführenden Berichts an
Nach der Prüfung. Kann angeben
Optionaler Ausgabedateiname mit dem Formular -r
Bericht: Dateiname. Wenn der Dateiname nicht festgelegt ist, die
Der Bericht wird über stdout geschrieben. Kann sein
Mehrfach angegeben. Überschreibt die
Konfigurationsdatei.
-C, - -Config -Dateiname Gibt den Weg zur Tidypie an
Konfigurationsdatei anstelle der verwendet
Konfiguration im Projekt des Projekts
PYProject.toml.
-Arbeiter num_worker die Anzahl der Arbeitnehmer, die sie gleichzeitig verwenden können
Führen Sie die Tools aus. Überschreibt die
Konfigurationsdatei.
-Disable-Merge deaktivieren die Verschmelzung von Problemen aus verschiedenen
Werkzeuge, wenn Tidypy sie äquivalent betrachtet.
Überschreibt die Konfigurationsdatei.
-Entlastbares Programm Deaktivieren Sie die Anzeige der Fortschrittsleiste.
-Disable-Noqa deaktivieren die Fähigkeit, Probleme mithilfe von Problemen zu ignorieren
Der Kommentar "# noqa" in Python -Dateien.
-Dishable-Config-Cache Deaktivieren Sie die Verwendung des Cache beim Abrufen
Konfigurationen, auf die sich die "Erweiterungen" beziehen
Option.
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
Wenn Sie eine Skelettkonfigurationsdatei mit den Standardoptionen generieren müssen, verwenden Sie den Sub default-config :
$ tidypy Standard-Config--Help
Verwendung: Tidypy Standard-Config [Optionen]
Gibt eine Standardkonfiguration aus, mit der Sie Ihre eigenen Bootstraps verwenden können
Konfigurationsdatei.
Optionen:
-PYPROJECT-Ausgabe die Konfiguration, damit sie in einem pyproject.toml verwendet werden kann
Datei.
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
Wenn Sie eine Liste der möglichen Problemcodes sehen möchten, die zurückgegeben werden könnten, verwenden Sie den Unterbefehl list-codes :
$ tidypy list-codes-help
Verwendung: Tidypy List-Codes [Optionen]
Gibt eine Auflistung aller bekannten Problemcodes aus, die Tools melden können.
Optionen:
-t, - -tool [Bandit | Dlinint | ERADIATE | JSONLINT | Manifest | McCabe | Polint | Pycodestyle | Pydiatra | PydocStyle | Pyflakes | Pyrint | Pyroma | RSTLINT | Geheimnisse | Vulture | Yamllint]
Gibt den Namen eines Tools an, dessen Codes
sollte ausgegeben werden. Wenn nicht angegeben, Standardeinstellungen
zu allen Werkzeugen.
-f, --format [toml | json | yaml | csv]
Gibt das Format an, in dem die Werkzeuge
sollte ausgegeben werden. Wenn nicht angegeben, Standardeinstellungen
zu Toml.
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
Wenn Sie TIDYPY als Pre-Commit-Haken in den VCs Ihres Projekts installieren oder entfernen möchten, verwenden Sie die Subbefehls install-vcs / remove-vcs :
$ tidypy install-vcs-help
Verwendung: Tidypy Install-VCS [Optionen] VCS [Pfad]
Installiert TIDYPY als Pre-Commit-Haken in die angegebenen VCs.
Akzeptiert zwei Argumente:
VCS: Das Versionskontrollsystem zum Installieren des Hooks. Wählen Sie aus:
Git, Hg
Pfad: Der Pfad zur Basis des Repositorys, um den Haken in zu installieren.
Wenn dies nicht angegeben ist, ist die Standardeinstellung zum aktuellen Arbeitsverzeichnis.
Optionen:
-STRICT, ob der Haken das Commit verhindern sollte, wenn Tidypy findet
Probleme.
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
$ tidypy remove-vcs-help
Verwendung: Tidypy Remove-VCs [Optionen] VCS [Pfad]
Entfernt den Tidypy Pre-Commit-Haken aus den angegebenen VCs.
Akzeptiert zwei Argumente:
VCS: Das Versionskontrollsystem zum Entfernen des Hakens. Wählen Sie aus:
Git, Hg
Pfad: Der Pfad zur Basis des Repositorys, um den Haken zu entfernen. Wenn
Nicht angegeben, standardmäßig zum aktuellen Arbeitsverzeichnis.
Optionen:
-HELP Zeigen Sie diese Nachricht an und beenden Sie.
Wenn Sie die Bash -Fertigstellung für Tidypy aktivieren möchten, führen Sie Folgendes in Ihrer Shell aus (oder geben Sie sie in Ihre Bash -Start -Skripte):
$ eval "$ (_ Tidypy_complete = Quelle Tidypy)"
Wenn Sie Tidypy nicht lokal in Ihrem System oder in Ihrem Virtualenv installieren möchten, können Sie das veröffentlichte Docker -Bild verwenden:
$ docker run - -rm - -tty -volume = `pwd`:/project tidypy/tidypy
In dem obigen Befehl wird tidypy check des Inhalts des aktuellen Verzeichnisses ausgeführt. Wenn Sie es in einem anderen Verzeichnis ausführen möchten, ändern Sie den `pwd` auf den Pfad, den Sie benötigen (das Ziel, Ihr Projektverzeichnis in das Container- /project zu bringen).
Tidypy auf diese Weise hat einige Einschränkungen, hauptsächlich in Bezug auf die Tatsache, dass Tools wie Pyltypy, da Tidypy in einer eigenen, isolierten Python-Umgebung läuft, nicht in der Lage sind, die Pakete, die Ihr Projekt vor Ort installiert hat
Wenn Sie einen anderen Befehl als check möchten, geben Sie dies einfach weiter, wenn Sie Docker aufrufen:
$ Docker Run--RM--tty-volume = `pwd`:/project tidypy/tidypy tidypy list-codes
Todo
Neben Ihrer Konfigurationsdatei können Sie nicht nur ganze Dateien, Tools oder bestimmte Problemtypen aus Tools ignorieren, sondern auch Kommentare in Ihren Python -Quelldateien verwenden, um Probleme in bestimmten Zeilen zu ignorieren. Einige Tools haben ihre eigene integrierte Unterstützung und Notation dafür:
# pylint# nosec# noqa# noqa# pragma: whitelist secret Tidypy geht über diese Tool-spezifischen Flags hinaus, um # noqa auf globaler Skala für Python-Quelldateien zu implementieren. Es wird Probleme für Zeilen ignorieren, die den # noqa -Kommentar enthält, unabhängig davon, welche Tools die Probleme aufwerfen. Wenn Sie nur eine bestimmte Art von Problem in einer Zeile ignorieren möchten, können Sie die Syntax wie folgt verwenden:
# NOQA: Code1, Code2
Wenn ein bestimmter Code in mehreren Tools verwendet wird, können Sie das genaue Tool im Kommentar angeben:
# NOQA: Pycodestyle: Code1, PyRINT: Code2
Oder wenn Sie ein Problem ignorieren möchten, das ein bestimmtes Tool in einer Zeile erhöht, können Sie das Tool angeben:
# noqa: @pycodestyle, @pyraint
Sie können natürlich alle drei Notationen in einem einzigen Kommentar mischen und anpassen, wenn Sie:
# NOQA: Code1, PyRINT: Code2,@Pycodestyle
Sie können false NOQA-Verhalten von Tidypy deaktivieren, indem Sie die Option --disable-noqa in der Befehlszeile" oder die Option noqa in Ihre Konfigurationsdatei festlegen. Eine Einschränkung: Derzeit respektieren Pycodestyle und Pydocstyle diese Option nicht und werden immer alle # noqa -Kommentare ehren, die sie finden.
TIDYPY Out of the Box beinhaltet die Unterstützung für eine Reihe von Tools:
Tidypy umfasst eine Reihe verschiedener Methoden, um die Ergebnisse der Analyse eines Projekts zu präsentieren und/oder zu exportieren. Aus der Schachtel liefert es Folgendes:
filename , line , character , tool , code , message .Tidypy enthält eine Handvoll Plugins/Integrationen, die es in andere Werkzeuge einbinden.
--tidypy in der Befehlszeile angeben oder als Teil der addopts -Eigenschaft in Ihre PyTest -Konfiguration einbeziehen.--with-tidypy in der Befehlszeile, oder die with-tidypy Eigenschaft in Ihrem setup.cfg auf 1 einstellen.tidypy -Test in Ihre PBBT -Skripte aufgenommen werden. Um dies zu aktivieren, können Sie entweder angeben --extend=tidypy.plugin.pbbt in der Befehlszeile, wenn Sie PBBT ausführen, oder die extend -Eigenschaft in Ihrem setup.cfg oder pbbt.yaml auf tidypy.plugin.pbbt festlegen. Eine einfache Schnittstelle gibt es für die Erweiterung von Tidypy um mehr und verschiedene Tools und Reporter. Um ein Tool hinzuzufügen, erstellen Sie eine Klasse, die Tidypy.tool erweitert, und deklarieren Sie in Ihrem setup.py einen entry_point für tidypy.tools , der auf Ihre Klasse hinweist:
Eintrag_points = {
'Tidypy.tools': [
'mycooltool = path.to.model: mycooltoolClassName',
],
}
Um einen Reporter hinzuzufügen, ist der Prozess nahezu identisch, mit der Ausnahme, dass Sie Tidypy.Report erweitern und einen entry_point für tidypy.reports deklarieren.
Ja, das passiert. Die Philosophie, die ich mit diesem Tool verfolgt habe, ist, dass ich nicht wollte, dass es etwas vor mir verberge. Ich wollte, dass sein Standardverhalten jedes Tool in seiner Suite mit ihrer widerlichsten Umgebung ausführt. Wenn ich dann den vollen Umfang des Schadens sehen kann, kann ich mich entscheiden, bestimmte Tools oder Probleme über eine Konfiguration auf Projektebene zu deaktivieren. Ich dachte, wenn sich jemand die Zeit genommen hat, einen Scheck über ein bestimmtes Problem zu implementieren, muss er denken, dass es einen gewissen Wert hat. Wenn mein Werkzeug das standardmäßig vor mir verbirgt, kann ich keine Vorteile davon nutzen.
Im Allgemeinen empfehle ich nicht, Linter oder andere Arten von statischen Analysatoren zu verwenden, wenn Sie der Meinung sind, dass Sie "fertig" sind. Sie sollten sie zu Beginn eines Projekts gleich in Ihren Workflow einbeziehen - genau wie Sie Ihre Unit -Tests tun würden (oder sollten). Auf diese Weise finden Sie die Dinge früh und lernen von ihnen (oder deaktivieren Sie sie). Es ist viel weniger entmutigend, mit der Sie sich inkrementell befassen können.
Beiträge sind sehr willkommen. Besonders wenn es sich um Fehlerbehebungen handelt! Um diesen Code zu hacken, klonen Sie ihn einfach und machen Sie dann make setup . Dadurch wird ein Virtualenv mit allen Tools erstellt, die Sie benötigen. Das Makefile hat auch ein test für die Ausführung der PyTest -Suite und ein lint , um Tidypy auf sich selbst auszuführen.
Tidypy wird unter den Bedingungen der MIT -Lizenz veröffentlicht.