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 Ihre CodeQL-Analyse weniger Codezeilen als erwartet überprüft, können Sie versuchen, den autobuild step
zu ersetzen oder die Kopie der Quelldateien in der CodeQL-Datenbank zu überprüfen.
Ersetzen des autobuild
-Schritts
Ersetzen Sie den autobuild
-Schritt durch dieselben Buildbefehle, die Sie in der Produktion verwenden würden. Auf diese Weise wird sichergestellt, dass CodeQL genau weiß, wie die ganzen Quelldateien kompiliert werden müssen, die Sie überprüfen möchten.
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, können Sie 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 Sie auf Ihren lokalen Computer herunterladen können. 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 Sie die Quellcodedateien im Repository und die Dateien in src.zip vergleichen, erkennen Sie, welche Dateitypen fehlen. Wenn Sie wissen, welche Dateitypen nicht analysiert werden, ist es einfacher zu verstehen, wie Sie den Workflow für die CodeQL-Analyse ändern müssen.