Přizpůsobení pracovního postupu skenování kódu pomocí CodeQL – část 1
Pracovní postupy kontroly kódu, které používají CodeQL, mají různé možnosti konfigurace, které můžete upravit tak, aby lépe vyhovovaly potřebám vaší organizace.
Když ke kontrole kódu použijete CodeQL, modul pro analýzu CodeQL vygeneruje z kódu databázi a spustí na ní dotazy. Analýza CodeQL používá výchozí sadu dotazů, ale kromě výchozích dotazů můžete zadat další dotazy, které se mají spustit.
Další dotazy můžete spouštět, pokud jsou součástí balíčku CodeQL (beta verze) publikovaného do registru kontejneru GitHubu nebo sady QL uložené v úložišti.
Existují dvě možnosti pro určení dotazů, které chcete spustit pomocí kontroly kódu CodeQL:
- Použití pracovního postupu kontroly kódu
- Použití vlastního konfiguračního souboru
V této lekci se dozvíte, jak upravit soubor pracovního postupu tak, aby odkazovat na další dotazy, jak používat dotazy z balíčků dotazů a jak kombinovat dotazy ze souboru pracovního postupu a vlastního konfiguračního souboru.
Zadání dalších dotazů v souboru pracovního postupu
Dostupné možnosti pro zadání dalších dotazů, které chcete spustit, jsou:
-
packspro instalaci jednoho nebo více balíčků dotazů CodeQL (beta) a spuštění výchozí sady dotazů nebo dotazů pro tyto balíčky. -
queriesurčit jeden.qlsoubor, adresář obsahující více.qlsouborů,.qlsdefiniční soubor sady dotazů nebo libovolnou kombinaci.
Balíčky i dotazy můžete použít ve stejném pracovním postupu.
Nedoporučujeme odkazovat na sady dotazů přímo z github/codeql úložiště, například github/codeql/cpp/ql/src@main. Tyto dotazy nemusí být zkompilovány se stejnou verzí CodeQL, jakou se používají pro ostatní dotazy, což může vést k chybám během analýzy.
Použití balíčků dotazů CodeQL
Poznámka:
Funkce správy balíčků CodeQL, včetně balíčků CodeQL, je aktuálně v beta verzi a může se změnit.
Pokud chcete přidat jeden nebo více balíčků dotazů CodeQL (beta), přidejte with: packs: položku v uses: github/codeql-action/init@v1 části pracovního postupu. V rámci balíčků můžete zadat jeden nebo více balíčků, které se mají použít, a volitelně, kterou verzi stáhnout. Pokud nezadáte verzi, stáhne se nejnovější verze. Pokud chcete použít balíčky, které nejsou veřejně dostupné, musíte proměnnou prostředí nastavit GITHUB_TOKEN na tajný klíč, který má přístup k balíčkům.
V následujícím příkladu je rozsahem organizace nebo osobní účet, který balíček publikoval. Po spuštění pracovního postupu se tři balíčky dotazů CodeQL stáhnutí z GitHubu a výchozích dotazů nebo sady dotazů pro každé spuštění balíčku. V následujícím příkladu se každý z balíčků v seznamu stáhne podle svých specifikací.
- Stáhne se nejnovější verze
pack1a spustí se všechny výchozí dotazy. - Stáhnou se verze 1.2.3
pack2a spustí se všechny výchozí dotazy. - Stáhne se nejnovější verze
pack3kompatibilní s verzí 3.2.1 a spustí se všechny dotazy. - Verze 4.5.6
pack4je stažena a spuštěny jsou pouze dotazy nalezené v cesta/do/dotazech.
- uses: github/codeql-action/init@v3
with:
# Comma-separated list of packs to download
packs: scope/pack1,scope/pack2@1.2.3,scope/pack3@~3.2.1,scope/pack4@4.5.6:path/to/queries
Poznámka:
Pro pracovní postupy, které generují databáze CodeQL pro více jazyků, musíte místo toho zadat balíčky dotazů CodeQL v konfiguračním souboru.
Použití dotazů v balíčcích QL
Pokud chcete přidat jeden nebo více dotazů, přidejte with: queries: položku v uses: github/codeql-action/init@v3 části pracovního postupu. Pokud jsou dotazy v privátním úložišti, použijte external-repository-token parametr k určení tokenu, který má přístup k pokladně privátního úložiště.
- uses: github/codeql-action/init@v3
with:
# Comma-separated list of queries / packs / suites to run.
# This may include paths or a built in suite, for example:
# security-extended or security-and-quality.
queries: security-extended
# Optional. Provide a token to access queries stored in private repositories.
external-repository-token: ${{ secrets.ACCESS_TOKEN }}
Můžete také zadat sady dotazů v hodnotě queries. Sady dotazů jsou kolekce dotazů, obvykle seskupené podle účelu nebo jazyka.
Následující sady dotazů jsou integrované do prohledávání kódu CodeQL a jsou k dispozici pro použití:
| Sada dotazů | Popis |
|---|---|
security-extended |
Dotazy z výchozí sady a dotazy s nižší závažností a přesností |
security-and-quality |
Dotazy z dotazů s security-extendedmožností údržby a spolehlivostí |
Každá z těchto sad dotazů obsahuje jinou podmnožinu dotazů zahrnutých v integrované sadě dotazů CodeQL pro daný jazyk. Sady dotazů se automaticky generují pomocí metadat pro každý dotaz.
Když zadáte sadu dotazů, modul pro analýzu CodeQL spustí kromě výchozí sady dotazů také dotazy obsažené v sadě.
Kombinování dotazů ze souboru pracovního postupu a vlastního konfiguračního souboru
Pokud také použijete konfigurační soubor pro vlastní nastavení, použijí se všechny další balíčky nebo dotazy zadané v pracovním postupu místo těch zadaných v konfiguračním souboru. Pokud chcete spustit kombinovanou sadu dalších balíčků nebo dotazů, předpona hodnoty packs nebo queries v pracovním postupu pomocí symbolu + .
V následujícím příkladu + symbol zajistí, že se zadané další balíčky a dotazy použijí společně s libovolnými zadanými v odkazovaném konfiguračním souboru:
- uses: github/codeql-action/init@v3
with:
config-file: ./.github/codeql/codeql-config.yml
queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main
packs: +scope/pack1,scope/pack2@1.2.3,scope/pack3@4.5.6:path/to/queries