Konfigurera kodgenomsökning

Fullbordad

Du kan konfigurera hur GitHub genomsöker koden i projektet efter sårbarheter och fel. När du väljer din egen konfiguration sparar du tid och bestämmer den bästa frekvensen för kodgenomsökning för projektet. I den här lektionen får du lära dig grunderna i konfiguration av kodgenomsökning. Du får också lära dig hur du konfigurerar frekvensen för genomsökningar och schemalägger dem så att de passar bäst för din lagringsplats och dina utvecklingsbehov.

Som vi beskrev i föregående enheter kan du köra kodgenomsökning på GitHub, med GitHub Actions eller från ditt SYSTEM för kontinuerlig integrering (CI). Om du väljer alternativet Avancerad konfiguration på GitHub genereras en anpassningsbar arbetsflödesfil som du sedan kan committa direkt till ditt repositorium. Du behöver vanligtvis inte redigera det här arbetsflödet. Om det behövs kan du dock anpassa vissa av inställningarna.

Du kan till exempel redigera GitHubs CodeQL-analysarbetsflöde för att ange frekvensen för genomsökningar, språk eller kataloger som ska genomsökas och vad CodeQL-kodgenomsökning söker efter i koden. Du kan också behöva redigera arbetsflödet för CodeQL-analys om du använder en specifik uppsättning kommandon för att kompilera koden. CodeQL-analys är bara en typ av kodgenomsökning som du kan utföra i GitHub. GitHub Marketplace innehåller flera andra arbetsflöden för kodgenomsökning.

Växla från Standard till Avancerad kodgenomsökningskonfiguration

Om du redan har konfigurerat en lagringsplats för att använda kodgenomsökning med standardinställningsmetoden kan du växla till att använda den avancerade konfigurationen i inställningarna. Gå till avsnittet Kodgenomsökning under Inställningar > Kodsäkerhet och analys och välj sedan ikonen för tre punkters spill (...). I listrutan väljer du Växla till avancerat. Följ sedan anvisningarna för att inaktivera CodeQL och återaktivera det med den avancerade installationens genererade arbetsflödesfil.

Redigera arbetsflöde för kodgenomsökning

GitHub sparar arbetsflödesfiler i katalogen .github/workflows på lagringsplatsen. Du hittar ett arbetsflöde som du har lagt till genom att söka efter dess filnamn. Till exempel kallas arbetsflödesfilen för CodeQL-kodgenomsökning som standard codeql-analysis.yml.

Följ dessa steg för att redigera en arbetsflödesfil:

  1. Öppna arbetsflödesredigeraren genom att välja ikonen Redigera i det övre högra hörnet i filvyn.

    Skärmbild av knappen Redigera

  2. Gör dina ändringar.

  3. När du har redigerat filen väljer du Genomför ändringar och fyller i formuläret Genomför ändringar. Du kan välja att checka in direkt till den aktuella grenen eller skapa en ny gren och starta en pull-begäran.

    Skärmbild av formuläret Genomför ändringar.

I följande avsnitt finns några vanliga konfigurationsalternativ för kodgenomsökning.

Konfigurera frekvens

En vanlig redigering av arbetsflödesfilen är att justera frekvensen med vilken kodgenomsökning sker. Du kan konfigurera CodeQL-analysarbetsflödet för att skanna kod enligt ett schema eller när specifika händelser inträffar på en lagringsplats. Du kan också redigera arbetsflödesfilen för att skanna kod när någon skickar en ändring och när en pull-begäran skapas. Om du justerar den här frekvensen kan utvecklare inte införa nya sårbarheter och fel i koden. Genomsökning av kod enligt ett schema informerar dig om de senaste sårbarheterna och felen som GitHub, säkerhetsforskare och communityn upptäcker. Även när utvecklare inte aktivt underhåller lagringsplatsen.

Genomsök vid push-överföring

Som standard använder on:push CodeQL-analysarbetsflödet händelsen för att utlösa en kodgenomsökning vid varje push till standardgrenen för lagringsplatsen och eventuella skyddade grenar. För att kodgenomsökning ska utlösas på en angiven gren måste arbetsflödet finnas i den grenen. Om du söker efter push visas resultatet på fliken Säkerhet för lagringsplatsen.

När en on:push genomsökning returnerar ett resultat som kan mappas till en öppen pull-begäran visas dessa aviseringar automatiskt på en pull-begäran på samma plats som andra pull-begärandeaviseringar. Aviseringarna identifieras genom att jämföra den befintliga analysen av grenens huvud med analysen för målgrenen.

Genomsökning på PR

Standardarbetsflödet för CodeQL-analys använder pull_request händelsen för att utlösa en kodgenomsökning på pull-begäranden riktade mot standardgrenen. Om en pull-begäran kommer från en privat förgrening pull_request utlöses händelsen endast om du har valt alternativet "Kör arbetsflöden från förgreningshämtningsbegäranden" i lagringsplatsens inställningar. Om du söker igenom pull-begäranden visas resultatet som aviseringar i en pull-request-kontroll.

Om du använder pull_request utlösaren, som konfigurerats för att genomsöka pull-begärans sammanslagning i stället för huvudincheckningen, ger den effektivare och mer exakta resultat än genomsökning av grenhuvudet på varje push-överföring. Men om du använder ett CI/CD-system som inte kan konfigureras att utlösas vid pull-begäranden kan du fortfarande använda on:push utlösaren så att kodgenomsökning mappar resultaten för att öppna pull-begäranden på grenen och lägger till aviseringarna som anteckningar i en pull-begäran.

Definiera allvarlighetsgraderna som orsakar kontrollfel för pull-begäran

Som standard är det bara aviseringar med allvarlighetsgraden Error eller allvarlighetsgraden Critical för eller High som orsakar ett kontrollfel för pull-begäran. Pull-request-fel stoppar inte en kodgenomsökning utan representerar en blockerare när du försöker slå samman kod. Du hittar listan över pull-request-fel på fliken Kodgenomsökningsaviseringar under lagringsplatsens Säkerhet. I lagringsplatsens inställningar kan du ändra nivåerna för allvarlighetsgraderna för aviseringar och säkerhets allvarlighetsgraderna som orsakar ett kontrollfel för pull-begäranden.

  1. Gå till lagringsplatsens huvudsida på GitHub.com. Under namnet på lagringsplatsen väljer du Inställningar.

    skärmbild av knappen Inställningar

  2. I det vänstra sidofältet väljer du Kodsäkerhet och analys.

    skärmbild av knappen Kodsäkerhet och analys.

  3. I avsnittet Kodgenomsökning under Skyddsregler använder du den nedrullningsbara menyn för att välja allvarlighetsgrad som du vill utlösa ett kontrollfel för pull-begäran.

    skärmbild av rullgardinsmenyn för allvarlighetsgrad vid kodgenomsökning.

Undvik onödiga genomsökningar av pull-begäranden

Du kanske vill undvika att en kodgenomsökning utlöses på specifika pull-begäranden som riktas mot standardgrenen, oavsett vilka filer som har ändrats. Du kan konfigurera den här inställningen genom att on:pull_request:paths-ignore ange eller on:pull_request:paths i arbetsflödet för kodgenomsökning. Om till exempel de enda ändringarna i en pull-begäran är till filer med filnamnstilläggen .md eller .txt om du kan använda följande paths-ignore matris.

on:
   push:
      branches: [main, protected]
   pull_request:
      branches: [main]
      paths-ignore:
         - '**/*.md'
         - '**/*.txt'

Justera genomsökningsschemat

Om du använder standardarbetsflödet för CodeQL-analys genomsöker arbetsflödet koden på lagringsplatsen en gång i veckan vid en slumpmässigt genererad dag och tid, förutom genomsökningarna som utlöses av händelser. Om du vill justera det här schemat redigerar du cron värdet i arbetsflödet.

I följande exempel visas ett CodeQL-analysarbetsflöde för en lagringsplats med en standardgren med namnet main och en skyddad gren med namnet protected:

on:
   push:
      branches: [main, protected]
   pull_request:
      branches: [main]
   schedule:
      - cron: '20 14 * * 1'

Det här arbetsflödet genomsöker:

  • Varje push-överföring till standardgrenen och den skyddade grenen
  • Varje pull-begäran till standardgrenen
  • Standardgrenen varje måndag kl. 14:20 UTC