Informationen zur Analyse kompilierter Sprachen
Für kompilierte Sprachen wie C/C++, C#, Go und Java überprüft CodeQL nur Dateien, 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-Feature
autobuild
verwendet Heuristiken, um den Code in einem Repository zu kompilieren. 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 funktionieren nicht mit CodeQL und können Probleme beim Analysieren des Codes verursachen. Beispielsweise werden die meisten anbieterspezifischen C-Compiler von CodeQL nicht erkannt. C-Code muss mit einem erkannten Compiler (z. B. GCC, Clang oder MSVC) kompiliert werden, damit er analysiert werden kann.
Wenn deine CodeQL-Analyse weniger Codezeilen als erwartet überprüft, kannst du versuchen, den autobuild step
zu ersetzen oder die Kopie der Quelldateien in der CodeQL-Datenbank zu überprüfen.
Ersetzen des autobuild
-Schritts
Ersetze den autobuild
-Schritt durch dieselben Buildbefehle, die du in der Produktion verwenden würdest. Auf diese Weise wird sichergestellt, dass CodeQL genau weiß, wie die ganzen Quelldateien kompiliert werden müssen, die du überprüfen möchtest.
Weitere Informationen findest du unter CodeQL-Codeüberprüfung für kompilierte Sprachen.
Überprüfen der Kopie der Quelldateien in der CodeQL-Datenbank
Durch das Überprüfen der Kopie des Quellcodes, der in der CodeQL-Datenbank enthalten ist, kannst du möglicherweise nachvollziehen, warum einige Quelldateien nicht analysiert wurden. Ändere den init
-Schritt deiner CodeQL-Workflowdatei, und lege debug: true
fest, um die Datenbank über deinen Actions-Workflow abzurufen.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
debug: true
Dadurch wird die Datenbank als Aktionsartefakt hochgeladen, das du auf deinen lokalen Computer herunterladen kannst. Weitere Informationen findest du unter Speichern von Workflowdaten als Artefakte.
Das Artefakt enthält eine archivierte Kopie der Quelldateien namens src.zip, die von CodeQL überprüft wurden. Wenn du die Quellcodedateien im Repository und die Dateien in src.zip vergleichst, erkennst du, welche Dateitypen fehlen. Wenn du weißt, welche Dateitypen nicht analysiert werden, ist es einfacher zu verstehen, wie du den Workflow für die CodeQL-Analyse ändern musst.