Skip to main content

Diese Version von GitHub Enterprise Server wird eingestellt am 2023-12-20. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für bessere Leistung, verbesserte Sicherheit und neue Features aktualisiere auf die neueste Version von GitHub Enterprise Server. Wende dich an den GitHub Enterprise-Support, um Hilfe zum Upgrade zu erhalten.

CodeQL hat weniger Zeilen überprüft als erwartet

Wenn CodeQL weniger Code analysiert als erwartet, musst du 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 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.