Codechecker ist eine statische Analyse-Infrastruktur, die auf der LLVM/Clang Static Analyzer Toolchain basiert und scan-build in einer Linux- oder MacOS-Entwicklungsumgebung ersetzt.

Schauen Sie sich unsere Demo an, die einige Analyseergebnisse von Open-Source-Projekten zeigt!
Führt Clang-Tidy , Clang Static Analyzer mit Cross-Translation Unit-Analyse, statistische Analyse (wenn Checkers verfügbar), CPPcheck , GCC Static Analyzer und dem Facebook-Infer-Analysator ausführt.
Erstellt die JSON -Kompilierungsdatenbank, indem Sie einen beliebigen Build -Prozess (z. B. CodeChecker log -b "make" )).
Analysiert automatisch GCC-quer kompilierte Projekte: Erkennen von GCC- oder Klang-Compiler-Konfiguration und Bildung der entsprechenden Klanganalysator-Aufrufe.
Inkrementelle Analyse: Nur die geänderten Dateien und ihre Abhängigkeiten müssen erneut analysiert werden.
Falsch positive Unterdrückung mit der Möglichkeit, Bewertungskommentare hinzuzufügen.
Ergebnisvisualisierung in der Befehlszeile oder in statischer HTML.
Sie können Tausende von Analyseberichten von vielen Analysatoren wie Clang Static Analyzer (C/C ++), Clang Tidy (C/C ++), Facebook inferen (C/C ++, Java), Clang -Sanitieroren (C/C ++), Spotbugs (Java), Python (Python), Eslint (Javascript), ...
Für eine vollständige Liste finden Sie unterstützte Analysatoren
Webanwendung zum Anzeigen von ermittelten Codefehlern mit einer optimierten, einfachen Erfahrung (mit PostgreSQL oder SQLite -Backend).
Die Integration von Gerrit und Gitlab zeigt Analyseergebnisse als Gitlab- oder Gerrit -Überprüfungen.
Filterbare (Defekt -Prüfer Name, Schweregrad, Quellpfade, ...) und vergleichbar (berechnet die Differenz zwischen zwei Analysen des Projekts, die zeigen, welche Fehler behoben wurden und welche neu eingeführt wurden) Ergebnisansicht.
Diff -Modus: Dies zeigt die Liste der Fehler, die seit Ihrer letzten Analysatorausführung eingeführt wurden.
Die Ergebnisse können mit anderen Entwicklern geteilt werden, das Kommentar und das Überprüfungssystem helfen bei der Kommunikation von Codefehlern.
Einfach implementierbare darnerbasierte Server-Client-Kommunikation, die zum Speichern und Abfragen von entdeckten Mängel verwendet wird.
Unterstützung für mehrere Fehlervisualisierungs-Frontends wie die Webanwendung, ein Befehlszeilen-Tool und ein Eclipse-Plugin.
CodeChecker -Befehl verfügt über viele Unterbefehle, die zum Beispiel verwendet werden können, um Ihre Projekte zu protokollieren und zu analysieren, die Ergebnisse zu drucken oder einen Webserver zu starten. Eine vollständige Liste finden Sie in der folgenden Tabelle oder überprüfen Sie die Hilfe zur Hilfe dieses Befehls ( CodeChecker --help ):
CodeChecker -Unterbefehl | Beschreibung |
|---|---|
analyze | Führen Sie die unterstützten Codeanalysatoren für die in einer JSON -Kompilierungsdatenbank aufgezeichneten Dateien aus. |
analyzer-version | Drucken Sie die Version des Codechecker -Analysatorpakets, das verwendet wird. |
analyzers | Liste unterstützte und verfügbare Analysatoren. |
check | Führen Sie eine Analyse eines Projekts durch und drucken Sie Ergebnisse auf Standardausgabe. |
checkers | Listen Sie die für die Codeanalyse verfügbaren Prüfer auf. |
cmd | Analyseergebnisse auf einem laufenden Server aus der Befehlszeile. |
fixit | Wenden Sie automatische Korrekturen an, die auf den Vorschlägen der Analysatoren basieren. |
log | Führen Sie einen Build -Befehl aus, sammeln Sie die ausgeführten Kompilierungsbefehle und speichern Sie sie in einer JSON -Datei. |
parse | Zusammenfassung der Druckanalyse und führt zu einem menschlich lesbaren Format. |
server | Starten und verwalten Sie den Codechecker -Webserver. |
store | Speichern Sie die Analyseergebnisse in einer Datenbank. |
version | Drucken Sie die Version des Codechecker -Pakets aus, die verwendet wird. |
web-version | Drucken Sie die Version des Codechecker -Serverpakets, das verwendet wird. |
CodeChecker cmd -Unterbefehl verfügt außerdem über viele andere Unterbefehle, mit denen Daten (Produkte, Läufe, Ergebnisse, Statistiken) von einem laufenden Codechecker -Server abgerufen werden können. Eine vollständige Liste finden Sie in der folgenden Tabelle oder überprüfen Sie die Hilfe zur Hilfe dieses Unterbefehls ( CodeChecker cmd --help ):
CodeChecker cmd -Unterbefehl | Beschreibung |
|---|---|
runs | Listen Sie die verfügbaren Analyseläufe auf. |
history | Show Run History of Multiple Runs. |
results | Listenanalyseergebnis (Befund) Zusammenfassung für einen bestimmten Lauf. |
diff | Vergleichen Sie zwei Analyse -Läufe und zeigen Sie den Unterschied. |
sum | Zeigen Sie Statistiken von Checkern an. |
token | Zugriff auf Unterbefehle im Zusammenhang mit der Konfiguration persönlicher Zugriffstoken, die von einem Codechecker -Server verwaltet werden. |
del | Analyseläufe löschen. |
update | Aktualisieren Sie einen Analyselauf. |
suppress | Verwalten und importieren Sie die Unterdrückung von Berichten auf einem Codechecker -Server. |
products | Zugriff auf Unterbefehle im Zusammenhang mit der Konfiguration der von einem Codechecker -Server verwalteten Produkte. |
components | Zugriff auf Unterbefehle im Zusammenhang mit der Konfiguration der von einem Codechecker -Server verwalteten Quellkomponenten. |
login | Authentifizieren Sie sich mit Codechecker -Servern, die Berechtigungen erfordern. |
export | Exportieren Sie Kommentare und überprüfen Sie den Status von Codechecker. |
import | Importieren Sie Kommentare und überprüfen Sie den Status in CodeChecker. |

Schritt 1 : CodeChecker log wird den angegebenen Baubefehl ausgeführt und die ausgeführten Kompilierungsschritte aufgezeichnet. Diese Schritte werden in eine JSON -Format in eine Ausgabedatei (Kompilierungsdatenbank) geschrieben.
Schritt 2 : CodeChecker analyze verwendet die zuvor erstellte JSON-Kompilierungsdatenbank, um eine Analyse des Projekts durchzuführen. Die Ausgabeanalyse führt zu einem maschinenlesbaren (Plist) -Format.
Schritt 3 : In diesem Schritt können Sie mehrere Dinge tun:
Analysieren und hübsch die Zusammenfassung und Ergebnisse aus Analyseergebnisdateien ( CodeChecker parse ).
Speichern Sie die Ergebnisse auf einem laufenden CodeChecker -Server ( CodeChecker store ).
Vergleichen Sie zwei Analyseergebnisse/-runs, um die Ergebnisse zu zeigen, die sich zwischen den beiden unterscheiden ( CodeChecker cmd diff ).
usw.
Weitere Informationen zum Verwenden von Codechecker finden Sie in unserem Benutzerhandbuch.
Erste Schritte (Anlieger mit Beispielen)
Analysator -Benutzerhandbuch
Vermeidung oder Unterdrückung falscher Positives
Konfiguration von Checker und Static Analyzer
GCC -Inkompatibilitäten
Missstimmung falscher Positives
Webserver -Benutzerhandbuch
Web -GUI -Benutzerhandbuch
Befehlszeile und Web UI -Funktion Übersicht
Sicherheitskonfiguration
Authentifizierung konfigurieren
Berechtigung konfigurieren
Einsatz
Server mit Docker bereitstellen
Serverkonfiguration
Konfigurieren der Serverprotokollierung
Einrichten mehrerer Codechecker -Repositories auf einem Server
Kontinuierliche Integration (CI)
Codechecker als Github -Aktion
CI Gating mit Gerrit und Jenkins aufstellen
Datenbankkonfiguration
PostgreSQL Database Backend Setup -Handbuch
Codechecker Server- und Datenbankschema -Upgrade -Handbuch
Codechecker kann als generisches Tool zur Visualisierung von Analysator -Ergebnissen verwendet werden.
Die folgenden Tools werden unterstützt:
| Sprache | Analysator |
|---|---|
| C/C ++ | Clang Static Analyzer |
| Klang Tidy | |
| Klangäatoren | |
| Cppcheck | |
| Facebook schließen | |
| Coccinelle | |
| Smatch | |
| Kernel-Doc | |
| Spärlich | |
| CPPLINT | |
| C# | Roslynator.dotnet.cli |
| Java | Spotbugs |
| Facebook schließen | |
| Python | Pylint |
| Pyflakes | |
| JavaScript | Eslint |
| Typoskript | Tslint |
| Gehen | Golint |
| Markdown | Markdownlint |
| Sphinx |
Weitere Informationen finden Sie unter Dokumentation der unterstützten Codeanalysatoren und des Berichtskonverter -Tools.
Nützliche Tools, die auch außerhalb CodeCecher verwendet werden können.
Logger erstellen (um die JSON -Kompilierungsdatenbank aus Ihren Builds zu generieren)
Plist/Sarif zum HTML -Konverter (um HTML -Dateien aus den angegebenen Plist- oder SARIF -Dateien zu generieren)
Berichtskonverter -Tool (um die Analyseergebnisse von anderen Analysatoren in das Codechecker -Berichtsverzeichnisformat umzuwandeln)))
Übersetzungseinheitskollektor (Socriell -Quelldateien einer Übersetzungseinheit oder zum Abholen von Quelldateien, die von den angegebenen Header -Dateien abhängen)
Melden Sie den Hash -Generator (um eindeutige Hash -Identifikatoren für Berichte zu generieren)
Helferskripte für die tägliche Analyse
pipCodechecker ist auf der PYPI erhältlich und kann mit dem folgenden Befehl installiert werden:
PIP3 Codechecker Installieren
Hinweis: Dieses Paket kann unter Linux , OSX und Windows -Systemen installiert werden, wobei der Befehl pip3 verfügbar ist. Unter OSX muss intercept-build für die Protokollierung ( CodeChecker log ) installiert werden. Unter Windows ist die Protokollierung nicht verfügbar.
snap -Paket -ManagerCodechecker ist im Snap Store erhältlich und kann mit dem folgenden Befehl installiert werden:
sudo snap installieren codechecker -klassisch
HINWEIS: Leider unterstützt das SNAP-Paket nur die Befehlsnamen mit niedrigerer Fall. Aus diesem Grund müssen Sie den Befehl codechecker anstelle von CodeChecker überall verwenden. Für eine vollständige Liste der verfügbaren Befehle im Codechecker -Snap -Paket führen Sie snap info codechecker aus.
Für eine detaillierte Abhängigkeitsliste und Anweisungen zur Installation neuerer Klang- und Klanglautversionen finden Sie unter Anforderungen. Die folgenden Befehle werden verwendet, um Codechecker auf Ubuntu 20.04 LTS zu starten:
# Install mandatory dependencies for a development and analysis environment.# NOTE: clang or clang-tidy can be any sufficiently fresh version, and need not# come from package manager!# In case of Cppcheck, the minimal supported version is 1.80.# In case of gcc, the minimal supported version is 13.0.0.# Infer: https://fbinfer.com/docs/getting-startedsudo apt-get install clang klanggedicht
GCC-Multilib Git Python3-Dev Python3-Venv Python3-Setuptools# Im Falle von venv_dev target und ubuntu 23 Linux installieren Sie eine zusätzliche Bibliothek: sudo APT-Get Installieren Sie LIBPQ-Dev# Installieren von NodeJS-Abhängigkeit für Web. Im Falle von Debian/Ubuntu können Sie die# folgenden Befehle verwenden. Weitere Informationen finden Sie in den offiziellen Dokumenten:# https://nodejs.org/en/download/package-manager/curl -sl https://deb.nodesource.com/setup_16.x | sudo -e bash -
sudo apt -get install -y nodejs# siehe codechecker source code `venv`.Make venvsource $ pwd/venv/bin/aktivieren# [optional] Wenn Sie externe Authentifizierungsmethoden verwenden möchten (LDAP/PAM)# Befolgen Path = "$ pwd/build/codechecker/bin: $ path" cd ..Anmerkungen :
Standardmäßig erstellen make package LDLogger Shared -Objekte für 32bit und 64bit . Wenn Sie 64 bit only gemeinsam genutzte Objekte und Ldlogger -Binary erstellen und ein Paket erstellen möchten, können Sie die Umgebungsvariable BUILD_LOGGER_64_BIT_ONLY vor dem Paket erstellen: BUILD_LOGGER_64_BIT_ONLY=YES make package YES
Standardmäßig erstellt das make package den UI -Code, wenn er noch nicht erstellt wurde oder der UI -Code geändert wird. Wenn Sie den UI -Code nicht erstellen möchten, können Sie die Umgebungsvariable BUILD_UI_DIST auf NO festlegen, bevor das Paket erstellt wird: BUILD_UI_DIST=NO make package .
Verwenden Sie make standalone_package anstatt make package , um zu vermeiden, dass die Umgebung manuell aktivieren muss, bevor CodeCecher ausgeführt wird.
Wenn Sie das Python Ihres Systems auf eine neuere Version (z. B. von 3.8 auf 3.11 aufgerüstet haben-dies ist der Fall, wenn Sie Ubuntu von 20.04 LTs auf 22.04 LTs aktualisieren), funktioniert die installierte Umgebung nicht außerhalb des Boxs. Um dieses Problem zu beheben, führen Sie den folgenden Befehl aus, um auch Ihren checker_env zu aktualisieren:
CD ~/codechecker/venv Python3 -m Venv.
Für Installationsanweisungen für Mac OS X siehe Mac OS X Installationshandbuch Dokumentation.
Um den Codechecker -Server in Docker auszuführen, finden Sie in der Docker -Dokumentation. Sie finden den Codechecker-Webserver-Container im Docker-Hub.
Sie können die Codechecker -VSCODE -Erweiterung vom Visual Studio Marketplace oder von Open VSX installieren und verwenden.
Hauptmerkmale:
Führen Sie die Codechecker -Analyse aus dem Editor aus und sehen Sie die Ergebnisse automatisch.
Analysieren Sie die aktuelle Datei erneut, wenn Sie gespeichert werden.
Befehle und erstellen Sie Aufgaben zum Ausführen von CodeChecker als Teil eines Build -Systems.
Durchsuchen Sie die gefundenen Berichte und zeigen Sie die Reproduktionsschritte direkt im Code an.
Navigieren Sie zwischen den Fortpflanzungsschritten.

Weitere Informationen zum Installieren und Verwenden dieses Plugins finden Sie im Repository dieser Erweiterung.

Codechecker kann über eine wiederverwendbare Github -Aktion für Ihr Projekt ausgeführt werden! Sie müssen nur den Befehl Build angeben, als würden Sie die Analyse lokal ausführen.
Weitere Informationen finden Sie in der Aktion der statischen Codecher -Analyse auf dem Markt für GitHub -Aktionen.
Diese Schritte müssen immer in einer neuen Eingabeaufforderung unternommen werden, in der Sie eine Analyse ausführen möchten.
Quelle ~/codechecker/venv/bin/aktivieren# path of codechecker paket# Hinweis: Überspringen Sie diese Zeile, wenn Sie immer den vollständigen Pfad von CodeCecher angeben möchten.
Analysieren Sie Ihr Projekt mit dem Befehl check :
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
Überprüfen check einen Überblick über die Probleme, die die Analysatoren in Ihrem Projekt gefunden haben. Die Berichte werden im Verzeichnis ./results im plist XML -Format gespeichert.
Sie können die Ergebnisse als statisches HTML durch Ausführen visualisieren
CodeChecker parse -e html ./results -o ./reports_html
Eine Indexseite wird mit einer Liste aller Repors in ./reports_html/index.html generiert
Wenn Sie Hunderte von Ergebnissen haben, möchten Sie diese möglicherweise mit einem Datenbank -Backend auf dem Webserver speichern.
Starten Sie einen Codechecker -Web- und Speicherserver in einem anderen Terminal oder als Hintergrundprozess. Standardmäßig wird es auf localhost:8001 zuhören.
Die SQLite -Datenbank, die die Berichte enthält, werden in Ihrem Arbeitsbereichsverzeichnis ( ~/.codechecker standardmäßig) platziert, das über das Flag -w -Flag bereitgestellt werden kann.
CodeChecker server
Speichern Sie Ihre Analyseberichte auf dem Server, um den Web -Viewer zu verwenden.
CodeChecker store ./results -n my-project
Öffnen Sie den Codechecker -Web -Viewer in Ihrem Browser, und Sie sollten mit einer Webanwendung begrüßt werden, die Ihnen die Analyseergebnisse zeigt.
Architektur
Paketlayout
Abhängigkeiten
Sparsamkeitsschnittstelle
Paket- und Integrationstests
Eine Übersicht über die Codechecker -Infrastruktur wurde bei PLDI 2020 gegeben.
Márton, Gábor und Krupp, Dániel :
Werkzeuggespräch: Codechecker
Ein hochrangiger Überblick über die Infrastruktur finden Sie unter den Präsentationen der Euro LLVM-Konferenz 2015.
Krupp, Dániel und Orbán, György und Horváth, Gábor und Babati, Bence :
Industrielle Erfahrungen mit dem Clang Static Analysis Toolset