Einfaches Front-End-Tool, mit dem verschiedene statische Analyse-Tools ausgeführt werden können, indem die erforderlichen Informationen von compile_commands.json gelesen werden.
Bietet die Ausgangsformatierung für die Integration in andere Tools, Parallerisierung bei Bedarf, die Möglichkeit, Compiler -Flaggen zu überschreiben/neu zu rekonfigurieren, und dergleichen auf den Plugin -Anforderungen pro "Tool".
Die aktuelle Entwicklung erfolgt hauptsächlich unter Windows, sollte jedoch auf jeder Plattform arbeiten, auf der Sie Python, die Arbeitsentwicklungsumgebung für Ihr eigenes Projekt und Ihr eigenes Analysator haben. Derzeit unterstützte:
Das Projekt ist in PYPI als Quellverteilung erhältlich:
pip install processcdb
Da ProcessCDB auch nur wenige Abhängigkeiten installiert, wird die Verwendung von PIPX zur Installation beraten.
Sobald das Paket installiert ist. Generieren Sie eine Konfigurationsdatei mit:
processcdb --dump-config
Dadurch wird eine Barebones -Konfigurationsdatei für den Standardspeicherort generiert (kann später mit -Konfigurationsargument überschrieben werden). Bearbeiten Sie diese Datei auf "binäre" Optionen, damit diese Analysator auf ihre ausführbare Datei verweisen können. Lassen Sie die Dateierweiterung unter Windows nicht aus.
Grundlegende Hilfe:
processcdb --help
Nach dem Erstellen eines Compile_Commands.json können Sie ProcessCDB mit einem solchen Tool ausführen:
processcdb --tool clang-tidy
Dadurch wird versucht, die JSON-Datei aus dem aktuellen Arbeitsverzeichnis zu finden, und führt das Tool in diesem Fall gegen alle Dateien aus, die zusammengestellt und nicht in der processCDB-ComFig-Datei oder in Tools eigene Konfigurationsdatei aufgeführt sind, und generiert die Ausgabe an Standardausgabe. Wenn Sie das Tool ausführen müssen, wenn Sie keinen Zugriff haben, um das aktuelle funktionierende Verzeichnis zu ändern, können Sie --cdb und absoluter Ort übergeben:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
Man kann die Tools mit einem Argument aus --output Ausgabe auf eine Datei lenken. Es ist erwähnenswert, dass bestimmte Tools ( -t ) weitere Argumente für die Verarbeitung oder für Werkzeuge spezifische Zwecke liefern können:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Wenn ProcessCDB ohne Übergabe --config aufgerufen wird, wird eine Standardkonfigurationsdatei verwendet. Der Ort hängt vom Betriebssystem ab. Wenn Sie mehrere Projekte mit unterschiedlichen Einstellungen analysieren müssen oder mit verschiedenen Versionen eines bestimmten Scanners analysieren möchten, verwenden Sie mehrere Konfigurationsdateien.
Wenn Sie beispielsweise eine Codebasis haben, möchten Sie mit Clang 11.0.0 scannen, Ihr Projekt jedoch wirklich mit MSVC von Microsoft zusammengestellt wird, und Sie haben ein anderes Projekt, das mit Clang kompiliert wird: Erstellen Sie separate Konfigurationsdatei für MSVC und Clang und Invoke ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Wenn ProcessCDB ohne Übergabe --config aufgerufen wird, wird eine Standardkonfigurationsdatei verwendet. Um eine Konfigurationsdatei zu generieren, können Sie --dump-config an den ProcessCDB. So speichern Sie die Standardkonfigurationsdatei in einer Datei. Erfassen Sie entweder den Standardausgang oder geben Sie einen Parameter --config an.
Jedes Tool verfügt über einen separaten Abschnitt und jeder Abschnitt kann entweder im Toolspezifischen Abschnitt oder in Standardeinstellung konfiguriert werden. Minimal. Ein einzelnes Tool -Konfiguration sieht ungefähr so aus:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Hier haben wir einen Abschnitt für das Kly-Tidy-Tool, in dem wir eine variable binary auf einen Wert von c:llvm-11.0.0binclang-tidy.exe festlegen.
Das Python configparser -Modul wird zum Laden/Analysen der Datei verwendet.
Die folgenden Variablen werden zwischen den Tools geteilt:
binary - absoluter Weg zu einem Scanner.file_blacklist - Liste der Dateispezifikationen, die aus dem Scan weggelassen werden solltenarg_blacklist - Liste der an Compiler übergebenen Befehlszeilenargumente, die nicht an ein Tool übergeben werden sollten.arg_additions - Eine Liste der Schlüssel-/Wertpaare. Wenn der Schlüssel in JSON gefunden wird, wird ein Wert in die Argumente des Werkzeugs eingereicht.jobs - Standardnummernprozesse processCDB oder das Tool können zum Verarbeiten verwendet werden. 0 für automatische Erkennung.default_includes - Liste der Pfade, die automatisch an das Tool übergeben werden sollten, wie Pfade enthalten, die möglicherweise nicht im compile_commands.json angegeben werdendefault_args - Liste der Argumente, die an das Tool übergeben werden sollten, das nicht vom compile_commands.json bereitgestellt wirdincludes_as_system : Liste der Dateispezifikationen, die von Normal -I -Include in -isystem inklusive konvertiert werden sollten.Jede Konfigurationsoption, die eine Liste ist und mehrere Werte ermöglicht. Verwenden Sie Semikolon als Element -Separator.
Mit arg_blacklist kann man unnötige Befehlszeilenargumente entfernen und arg_addition kann verwendet werden, um neue Argumente zu injizieren. Wenn beispielsweise das Kompilieren eines Projekts in MSVC und Ausnahmen aktiviert sind, kann die folgende Konfiguration das Kly-Tidy-Tool noch korrekt funktionieren:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Als erstes würde ProcessCDB feststellen, dass Compile_Commands.json /EHsc -Argument möglicherweise 2 neue Argumente -Xclang und '-fcxx-Exceptions' hinzufügt, und dann würde Arg_blacklist dann das Original /EHsc entfernen
Das CPPcheck -Tool verfügt außerdem über Option supression_file , die bei Bedarf einen absoluten Ort der CPPchecks -Unterdrückungsdatei sein sollte.
Die Fähigkeit von Clang-Tidy Toool, die Protokolldatei für den Direkter Jenkins-Support in XML zu konvertieren, ist Teil des Codechecker-Projekts und deren Lizenz unter Apache 2.0
Startseite: https://github.com/rasjani/processcdb Ausgaben: https://github.com/rasjani/processcdb/issues