Skip to main content

CodeQL hat weniger Zeilen überprüft als erwartet

Wenn CodeQL weniger Code analysiert als erwartet, müssen Sie möglicherweise einen benutzerdefinierten Buildbefehl verwenden.

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:

  1. 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 mehrere build.sh-Befehle in einem einzelnen Repository vorhanden sind, wird die Analyse möglicherweise nicht abgeschlossen, da der autobuild-Schritt nur einen der Befehle ausführt und daher einige Quelldateien möglicherweise nicht kompiliert werden.

  2. 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@v3
  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.