Freigeben über


Behandeln von Problemen mit der Codeüberprüfung

Wenn bei der CodeQL-Ausführung Fehler auftreten, meldet die CodeQL-CLI den Status der ausgeführten Befehle normalerweise als Exitcode. Der Exitcode stellt Informationen für nachfolgende Befehle oder für andere Tools bereit, die von der CodeQL-CLI abhängen. Weitere Informationen zu Exitcodes finden Sie unter Exitcodes.

Fehler: CodeQL-Befehl 'database finalize' (32)

Dieser Fehler weist auf ein Problem beim Abschließen der CodeQL-Datenbankerstellung hin, möglicherweise aufgrund von Extraktionsfehlern oder fehlenden Buildschritten.

Schritte zur Problembehandlung:

  1. Überprüfen, ob der Code vorhanden ist und kompiliert wird
    • Überprüfen Sie für kompilierte Sprachen, ob der Buildprozess Code kompiliert und zwischen den Tasks AdvancedSecurity-Codeql-Init und AdvancedSecurity-Codeql-Analyze ausgeführt wird. Allgemeine Buildbefehle und erforderliche Flags (z. B. clean no-cache/no-daemon) finden Sie unter Angeben von Buildbefehlen.
    • Vergewissern Sie sich bei interpretierten Sprachen, dass sich Quellcode für die angegebene Sprache im Projekt befindet.
  2. Überprüfen von Extraktionsfehlern
    • Überprüfen Sie, ob sich Extraktionsfehler auf die Integrität der CodeQL-Datenbank auswirken.
    • Überprüfen Sie die Protokolldatei auf Extraktionsfehler und Warnungen, um die grundsätzliche Integrität der Datenbank zu beurteilen.
  3. Untersuchen übergreifender Fehler
    • Wenn für die meisten Dateien Extraktorfehler auftreten, müssen Sie die Ursache der Extraktionsprobleme ermitteln.

Fehler: AutoBuild-Skript (1)

Dieser Fehler beschreibt einen automatischen Buildfehler und deutet auf ein Problem mit der Einrichtung oder Konfiguration der Codeüberprüfung hin.

Schritte zur Problembehandlung:

Fehler: CodeQL-Verzeichnisse konnten im Agent-Toolcache nicht gefunden werden

Dieser Fehler weist auf ein Problem mit der Installation von CodeQL für selbstgehostete Agents hin.

Schritte zur Problembehandlung:

Fehler: Sprachenpipelinevariable nicht festgelegt

Dieser Fehler tritt auf, wenn Sie CodeQL ausführen, ohne die Pipelinevariable festzulegen, die angibt, welche Sprachen gescannt werden sollen.

Schritte zur Problembehandlung:

  • Festlegen der Sprachpipelinevariable

CodeQL gibt keine Ergebnisse zurück

Dieser Abschnitt enthält Anleitungen für den Fall, dass CodeQL-Analysen keine Ergebnisse liefern.

Schritte zur Problembehandlung:

  1. Überprüfen auf erkannte Sicherheitsrisiken
    • Berücksichtigen Sie die Möglichkeit, dass der Code möglicherweise keine Sicherheitsrisiken aufweist. Wenn Sicherheitsrisiken erwartet, aber nicht erkannt werden, setzen Sie die Überprüfung fort.
  2. Überprüfen der Abfragesammlungskonfiguration
    • Ermitteln Sie die verwendete Abfragesammlung und erwägen Sie bei Bedarf, zu einer umfassenderen Sammlung zu wechseln.
    • Alternativ können benutzerdefinierte Abfragesammlungen für eine maßgeschneiderte Analyse erstellt werden.
  3. Anpassen der Berechtigungen zum Anzeigen von Ergebnissen
    • Stellen Sie sicher, dass mindestens auf der Ebene der Mitwirkenden die richtigen Berechtigungen für den Zugriff auf Analyseergebnisse gewährt werden. Weitere Informationen finden Sie unter Erweiterte Sicherheitsberechtigungen.

CodeQL-Zeitüberschreitung

Wenn die AdvancedSecurity-Codeql-Analyze@1 Aufgabe angezeigt This job was abandoned ... we lost contact with the agent wird und Sie einen gehosteten Microsoft-Agent verwenden, trifft die Aufgabe das integrierte sechsstündige Timeout für kostenpflichtige gehostete Agents. Sie können stattdessen versuchen, eine Analyse für einen selbst gehosteten Agent auszuführen.

Codescanaufgabenberechtigungen

Die Codeüberprüfungs-Buildaufgabe verwendet die Pipelineidentität, um die Advanced Security REST-APIs aufzurufen. Standardmäßig haben Pipelines im selben Projekt Zugriff auf das Hochladen der SARIF-Datei, die durch ausführen der CodeQL-Analyse generiert wird. Wenn diese Berechtigungen aus dem Build-Dienstkonto entfernt sind oder über ein benutzerdefiniertes Setup verfügen (z. B. eine Pipeline, die in einem anderen Projekt als das Repository gehostet wird), müssen Sie diese Berechtigungen manuell erteilen.

Schritte zur Problembehandlung:

  • Erteilen Sie die Advanced Security: View alerts- und Advanced Security: Manage and dismiss alerts-Berechtigung für das in Ihrer Pipeline verwendete Builddienstkonto, für projektbezogene Pipelines [Project Name] Build Service ([Organization Name]) und für Sammlungs-bezogene Pipelines Project Collection Build Service ([Organization Name]).

Manuelle Installation des CodeQL-Bundles auf selbst gehosteten Agent

Installieren Sie das CodeQL-Paket im Cache des Agent-Tools mithilfe des auf GitHub verfügbaren Setupskripts für Ihre Architektur. Für diese Skripts muss die $AGENT_TOOLSDIRECTORY-Umgebungsvariable auf den Speicherort des Agent-Tool-Verzeichnisses im Agent festgelegt werden, wie z. B. C:/agent/_work/_tool. Alternativ können Sie die folgenden Schritte manuell implementieren:

  1. Wählen Sie das neueste CodeQL-Releasepaket auf GitHub aus.
  2. Laden Sie das Paket herunter, und entpacken Sie es in das folgende Verzeichnis im Verzeichnis des Agent-Tools, das sich in der Regel unter _work/_tool befindet: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Wenn Sie den aktuellen Release von v2.16.0verwenden, wird der Dateiname ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/ lauten. Erfahren Sie mehr über das Verzeichnis des Agent-Tools.
  3. Erstellen Sie im Ordner ./CodeQL/0.0.0-[codeql-release-bundle-tag] eine leere Datei mit dem Namen x64.complete. Wenn Sie das vorherige Beispiel verwenden, sollte der Pfad der Enddatei zu Ihrer x64.complete Datei ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete lauten.