Informationen zur Analyse kompilierter Sprachen
Wenn kompilierte Sprachen mithilfe des autobuild Oder manual Buildmodus analysiert werden, werden nur Dateien überprüft, CodeQL die während der Analyse erstellt werden. Aus diesem Grund ist die Anzahl der gescannten Codezeilen niedriger als erwartet, wenn Teile des Quellcodes nicht ordnungsgemäß kompiliert werden. Dies kann verschiedene Ursachen haben:
-
Das CodeQL
autobuildFeature verwendet Heuristiken, um den Code in einem Repository zu erstellen. Manchmal führt dieser Ansatz jedoch zu einer unvollständigen Analyse eines Repositorys. Wenn beispielsweise mehrerebuild.sh-Befehle in einem einzelnen Repository vorhanden sind, wird die Analyse möglicherweise nicht abgeschlossen, da derautobuild-Schritt nur einen der Befehle ausführt und daher einige Quelldateien möglicherweise nicht kompiliert werden. -
Einige Compiler arbeiten nicht mit CodeQL und können beim Analysieren des Codes Probleme verursachen. Z. B. werden die meisten anbieterspezifischen C-Compiler nicht von CodeQL erkannt. C-Code muss mit einem erkannten Compiler (z. B. GCC, Clang oder MSVC) kompiliert werden, damit er analysiert werden kann.
Wenn Ihre CodeQL Analyse weniger Codezeilen überprüft als erwartet, können Sie versuchen, den Buildmodus zu manual ändern und Buildbefehle anzugeben, wenn Ihr Workflow einen Buildmodus angibt, indem Sie den autobuild Schritt durch Buildbefehle ersetzen, wenn Ihr Workflow einen autobuild Schritt enthält, oder die Kopie der Quelldateien in der CodeQL Datenbank prüfen.
Ändern in einen manual Buildprozess
Ersetzen Sie den autobuild-Schritt durch dieselben Build-Befehle, die Sie in der Produktion verwenden würden. Dadurch wird sichergestellt, dass CodeQL genau weiß, wie alle Quelldateien kompiliert werden müssen, die Sie scannen möchten.
Weitere Informationen zum Angeben von Buildschritten findest du unter CodeQL-Codeüberprüfung für kompilierte Sprachen.
Überprüfen Sie die Kopie der Quelldateien in der CodeQL-Datenbank.
Möglicherweise können Sie verstehen, warum einige Quelldateien nicht analysiert wurden, indem Sie die Kopie des Quellcodes prüfen, der in der CodeQL Datenbank enthalten ist. Wenn Sie die Datenbank aus Ihrem Aktionen-Workflow abrufen möchten, ändern Sie den init-Schritt Ihrer CodeQL-Workflow-Datei und setzen Sie debug: true.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
debug: true
Dadurch wird die Datenbank als Aktionsartefakt hochgeladen, das Sie auf Ihren lokalen Computer herunterladen können. Weitere Informationen finden Sie unter Speichern und Freigeben von Daten mit Workflowartefakten.
Das Artefakt enthält eine archivierte Kopie der Quelldateien, die durch CodeQL mit dem Namen src.zip gescannt wurden. Wenn Sie die Quellcodedateien im Repository und die Dateien in src.zip vergleichen, erkennen Sie, welche Dateitypen fehlen. Sobald Sie wissen, welche Dateitypen nicht analysiert werden, ist es einfacher zu verstehen, wie Sie den Workflow für CodeQL die Analyse ändern müssen.