Dela via


Felsöka kodgenomsökning

Om du stöter på fel med CodeQL-körning rapporterar CodeQL CLI statusen för varje kommando som körs som en slutkod. Slutkoden innehåller information för efterföljande kommandon eller för andra verktyg som förlitar sig på CodeQL CLI. Mer information om slutkodsinformation finns i Slutkoder.

Förutsättningar

Kategori Kravspecifikation
behörigheter - Så här visar du en sammanfattning av alla aviseringar för en lagringsplats: Deltagare behörigheter för lagringsplatsen.
– Så här stänger du aviseringar i Avancerad säkerhet: Projektadministratör behörigheter.
– För att hantera behörigheter i Avancerad säkerhet: Medlem i Project Collection-administratörer-gruppen, eller Avancerad säkerhet: hantera inställningar -behörighet inställd på Tillåt.

Mer information om avancerade säkerhetsbehörigheter finns i Hantera avancerade säkerhetsbehörigheter.

Fel: "databas slutför" CodeQL-kommando (32)

Det här felet anger ett problem med att slutföra skapandet av CodeQL-databasen, eventuellt på grund av extraheringsfel eller saknade byggsteg.

Felsökningssteg:

  1. Kontrollera att koden finns och kompileras
    • För kompilerade språk kontrollerar du att byggprocessen kompilerar kod och sker mellan aktiviteterna AdvancedSecurity-Codeql-InitAdvancedSecurity-Codeql-Analyze och . Vanliga build-kommandon och obligatoriska flaggor (till exempel rensa no-cache/no-daemon) finns här i Ange byggkommandon.
    • Kontrollera att det finns viss källkod för det angivna språket i projektet för tolkade språk.
  2. Kontrollera extraheringsfel
    • Kontrollera om extraheringsfel påverkar CodeQL-databasens hälsa.
    • Granska loggfilen för extraheringsfel och varningar för att utvärdera övergripande databashälsa.
  3. Undersöka överväldigande fel
    • Om de flesta filer stöter på extraheringsfel kan du undersöka ytterligare för att förstå rotorsaken till felaktig extrahering.

Fel: autobuild script (1)

Det här felet beskriver ett automatiskt byggfel, vilket tyder på ett problem med konfiguration eller konfiguration av kodgenomsökning.

Felsökningssteg:

Fel: CodeQL-kataloger hittades inte i agentverktygets cacheminne

Det här felet anger ett problem med att installera CodeQL för lokalt installerade agenter.

Felsökningssteg:

Fel: Språkpipelinevariabeln har inte angetts

Det här felet uppstår när du försöker köra CodeQL utan att ange pipelinevariabeln som anger vilka språk som ska genomsökas.

Felsökningssteg:

CodeQL returnerar inga resultat

Det här avsnittet innehåller vägledning för situationer där CodeQL-analys inte ger några resultat.

Felsökningssteg:

  1. Sök efter identifierade sårbarheter
    • Överväg att din kod kanske inte har några säkerhetsrisker. Om sårbarheter förväntas men inte identifieras fortsätter du att verifiera ytterligare.
  2. Granska konfigurationen av frågepaket
  3. Justera behörigheter för att visa resultat

Tidsgräns för CodeQL

Om uppgiften AdvancedSecurity-Codeql-Analyze@1 visas This job was abandoned ... we lost contact with the agent och du använder en värdbaserad Microsoft-agent når uppgiften den inbyggda tidsgränsen på sex timmar för betalda värdbaserade agenter. Du kan försöka köra analys på en lokalt installerad agent i stället.

Behörigheter för kodgenomsökningsaktivitet

Versionsuppgiften för kodgenomsökning använder pipelineidentiteten för att anropa REST API:er för avancerad säkerhet. Som standard har pipelines i samma projekt åtkomst till att ladda upp SARIF-filen som genereras genom att köra CodeQL-analys. Om dessa behörigheter tas bort från byggtjänstkontot eller om du har en anpassad konfiguration, till exempel en pipeline som finns i ett annat projekt än lagringsplatsen, beviljar du dessa behörigheter manuellt.

Felsökningssteg:

  • Bevilja Advanced Security: View alerts och Advanced Security: Manage and dismiss alerts behörighet till det byggtjänstkonto som används i din pipeline, som för pipelines med projektomfattning är [Project Name] Build Service ([Organization Name]), och för pipelines med samlingsomfång är Project Collection Build Service ([Organization Name]).

Publicera resultat för kodgenomsökning till ett oavsiktligt repository

Om du har en pipelinedefinition som finns i en lagringsplats och källkoden som ska genomsökas av GitHub Advanced Security finns i en annan, kan resultatet bearbetas och skickas till den felaktiga lagringsplatsen och publicera till lagringsplatsen som innehåller pipelinedefinitionen i stället för källkodslagringsplatsen.

Om du vill aktivera avsedd resultatroutning anger du pipelinemiljövariabeln advancedsecurity.publish.repository.infer: true för att härleda vilken lagringsplats som ska publiceras från lagringsplatsen i arbetskatalogen.

trigger:
  - main

resources:
  repositories:
    # PipelineRepo: The repository containing the pipeline definition.
    # This is optional and only needed if you plan to reference files or scripts from this repo.
    - repository: PipelineRepo
      type: git
      name: DevOpsPipelineRepo
      ref: refs/heads/main
      trigger:
        - main
    # SourceRepo: The repository where scanning and publishing will occur.
    - repository: SourceRepo
      type: git
      name: code-to-analyze-repo
      ref: refs/heads/main
      trigger:
        - main

jobs:
  - job: "CodeQLScan"
    displayName: "CodeQL Scanning with Inferred Publishing"
    variables:
      # Enable repository inference
      advancedsecurity.publish.repository.infer: true
    steps:
      # Checkout the SourceRepo
      - checkout: SourceRepo

      # Initialize CodeQL
      - task: AdvancedSecurity-Codeql-Init@1
        displayName: "Initialize CodeQL"
        inputs:
          languages: "python,javascript" # Adjust based on repository languages

      # Perform CodeQL analysis
      - task: AdvancedSecurity-Codeql-Analyze@1
        displayName: "Analyze Code with CodeQL"

Manuell installation av CodeQL-paket till lokalt installerad agent

Installera CodeQL-paketet i agentverktygets cacheminne genom att använda installationsskriptet för din arkitektur, som är tillgängligt på GitHub. Dessa skript kräver $AGENT_TOOLSDIRECTORY att miljövariabeln anges till platsen för agentverktygskatalogen på agenten, C:/agent/_work/_tooltill exempel . Du kan också implementera följande steg manuellt:

  1. Välj det senaste CodeQL-versionspaketet från GitHub.
  2. Ladda ned och packa upp paketet till följande katalog i agentverktygskatalogen, som vanligtvis finns under _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Med den aktuella versionen av v2.16.0skulle mappnamnet ha titeln ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Läs mer om agentverktygskatalogen.
  3. Skapa en tom fil med titeln x64.complete i ./CodeQL/0.0.0-[codeql-release-bundle-tag] mappen. Med hjälp av föregående exempel ska slutfilsökvägen till filen x64.complete vara ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

Hur definierar jag uttryckligen lagringsplatsen för att publicera kodgenomsökningsaviseringar till?

  • Använd pipelinemiljövariabeln advancedsecurity.publish.repository.infer: true för att härleda lagringsplatsen till att publicera från lagringsplatsen i arbetskatalogen.
  • Om du inte uttryckligen checkar ut en lagringsplats eller använder ett alias för att checka ut lagringsplatsen använder du variabeln som ett annat alternativ advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ]

Mer information finns i viktig information.