About advanced setup of the CodeQL CLI ã«ã€ããŠ
ã³ãŒã ã¹ãã£ã³ä»¥å€ã®ç®çã§ CodeQL ã䜿çšããå Žåã¯ãCodeQL CLI ã®é«åºŠãªã»ããã¢ããã®äœ¿çšããå§ãããŸãã
- ãªãŒãã³ãœãŒã¹ã®å ±æ CodeQL ã¯ãšãªã«ã³ã³ããªãã¥ãŒã·ã§ã³ãããå Žåã¯ãCodeQL ãœãŒã¹ ã³ãŒããçŽæ¥æäœããããšããå§ãããŸãã
- ææ°ã® CodeQL æ©èœã䜿çšããŠã³ãŒãããŒã¹ã®ã³ãŒã ã¹ãã£ã³ ã¢ã©ãŒããçæããäžã€ ãã€ã³ã¹ããŒã«ã§ããŸãã
- ã¯ãšãªã調æ»ãŸãã¯éçºããŠããå Žåã¯ãGitHub.com ããè峿·±ãããŒã¿ããŒã¹ãŸãã¯äžæã®ããŒã¿ããŒã¹ãããŠã³ããŒãã§ããŸãã
CodeQL CLI ã®æãç°¡åãªèšå®ã«ã€ããŠã¯ããCodeQL CLI ã®èšå®ããåç §ããŠãã ããã
CodeQL ãœãŒã¹ ã³ãŒã ãã£ã¬ã¯ããªããã§ãã¯ã¢ãŠããã
ãªãŒãã³ãœãŒã¹ã®å ±æã¯ãšãªã«ã€ããŠåãçµãã ãè²¢ç®ãããããããã«ãCodeQL ã®ã¯ãšãª ãœãŒã¹ãçŽæ¥æäœããããšãåžæãããŠãŒã¶ãŒãããŸãã ãããè¡ãã«ã¯ãæ¬¡ã®æé ããå§ãããŸãã
1. CodeQL CLI ã® tar ã¢ãŒã«ã€ããããŠã³ããŒããã
CodeQL CLI ããŠã³ããŒã ããã±ãŒãžã¯ãããŒã«ããã³ã¹ã¯ãªãããšãããŸããŸãª CodeQL åºæã®ãã¡ã€ã«ãå«ã tar ã¢ãŒã«ã€ãã§ãã GitHub Enterprise ã©ã€ã»ã³ã¹ããæã¡ã§ãªãå Žåã¯ããã®ã¢ãŒã«ã€ããããŠã³ããŒãããããšã§ãGitHub CodeQL ã®äœ¿çšæ¡ä»¶ã«åæããããšã«ãªããŸãã
CodeQL ãã³ãã«ã https://github.com/github/codeql-action/releases ããããŠã³ããŒãããå¿ èŠããããŸãã ãã®ãã³ãã«ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŠããŸãã
- CodeQL CLI補å
- https://github.com/github/codeql ããã®ã¯ãšãªãšã©ã€ãã©ãªã®äºææ§ã®ããããŒãžã§ã³
- ãã³ãã«ã«å«ãŸãããã¹ãŠã®ã¯ãšãªã®ããªã³ã³ãã€ã«æžã¿ããŒãžã§ã³
ã¡ã¢
GitHub Enterprise Server 3.17 ã®å Žåã¯ãCodeQL CLI ããŒãžã§ã³ 2.20.7 ããå§ãããŸãã
åžžã« CodeQL ãã³ãã«ã䜿çšããå¿
èŠããããŸãã ããã«ããäºææ§ãä¿èšŒãããCodeQL CLI ã®ããŠã³ããŒããš CodeQL ã¯ãšãªã®ãã§ãã¯ã¢ãŠããå¥ã«è¡ããããã¯ããã«è¯ãããã©ãŒãã³ã¹ãåŸãããŸãã 1 ã€ã®ç¹å®ã®ãã©ãããã©ãŒã ã§ã®ã¿ CLI ãå®è¡ããå Žåã¯ãé©å㪠codeql-bundle-PLATFORM.tar.zst
ãã¡ã€ã«ãããŠã³ããŒãããŸãã ãŸãã¯ããµããŒããããŠãããã¹ãŠã®ãã©ãããã©ãŒã çšã® CLI ãå«ã codeql-bundle.tar.zst
ãããŠã³ããŒãããããšãã§ããŸãã
ãã³ãã«ã«ã¯ tar.gz
ããªã¢ã³ãããããŸãããããã¯å¹çã®äœã gzip ã¢ã«ãŽãªãºã ã䜿çšããŠå§çž®ãã以å€ã¯ tar.zst
ããªã¢ã³ããšåãã§ãã tar.gz
ããªã¢ã³ããããŠã³ããŒãããå¯äžã®çç±ã¯ãZstandard å§çž®ã¢ã«ãŽãªãºã ããµããŒãããŠããªãå€ãå±éããŒã«ã䜿çšããŠããå Žåã§ãã
2. æ°ãã CodeQL ãã£ã¬ã¯ããªãäœæãã
CLI ãšã䜿çšããã¯ãšãªãšã©ã€ãã©ãªãé
眮ã§ããæ°ãããã£ã¬ã¯ããªãäœæããŸãã ããšãã°ã$HOME/codeql-home
ã®ããã«ããŸãã
CLI ã®çµã¿èŸŒã¿æ€çŽ¢æäœãè¡ããšãããŒã¿ããŒã¹ã®äœæãšåæã§äœ¿çšããããã¡ã€ã«ã®ãã¹ãŠã®å åŒãã£ã¬ã¯ããªãèªåçã«æ€çŽ¢ãããŸãã ãããã®ã³ã³ããŒãã³ããããããç¬èªã®ãã£ã¬ã¯ããªã«ä¿æãããšãé¢é£ã®ãªãå åŒãã£ã¬ã¯ããªã¯ CLI ã§æ€çŽ¢ããããã³ãã³ã ã©ã€ã³ã§è¿œå ã®ãªãã·ã§ã³ãæå®ããã«ãã¹ãŠã®ãã¡ã€ã«ã䜿çšã§ããŸãã
3. CodeQL ã¯ãšãªã®ããŒã«ã« ã³ããŒãååŸãã
CodeQL ãªããžããªã«ã¯ããµããŒããããŠãããã¹ãŠã®èšèªã® CodeQL åæã«å¿
èŠãªã¯ãšãªãšã©ã€ãã©ãªãå«ãŸããŠããŸãã
ãã®ãªããžããªã®ã³ããŒã codeql-home
ã«ã¯ããŒã³ããŸãã
æ¢å®ã§ã¯ãã¯ããŒã³ããããªããžããªã®ã«ãŒã㯠codeql
ãšåŒã°ããŸãã
æé 1 ã§æœåºãã CodeQL CLI ãšç«¶åããªãããã«ããã®ãã©ã«ã㌠codeql-repo
ã®ååã倿ŽããŸãã ã³ãã³ã ã©ã€ã³ã§ git ã䜿çšããå Žåã¯ãcodeql-home
ãã©ã«ããŒã§ git clone git@github.com:github/codeql.git codeql-repo
ãå®è¡ããããšã§ã1 ã€ã®æé ã§ãªããžããªã®ã¯ããŒã³ãšåå倿Žãè¡ãããšãã§ããŸãã
ãã®ãªããžããªã§ã¯ãã¯ãšãªãšã©ã€ãã©ãªã CodeQL ããã¯ã«ãŸãšããããŠããŸãã CodeQL ããã¯ã«ã¯ãã¯ãšãªèªäœã«å ããŠãã¯ãšãª ãã¡ã€ã«ã®åŠçæ¹æ³ã CodeQL CLI ã«æç€ºããéèŠãªã¡ã¿ããŒã¿ãå«ãŸããŠããŸãã 詳ããã¯ããCodeQL ããã¯ã®äœæãšæäœããã芧ãã ããã
ã¡ã¢
CodeQL ã¯ãšãªã«ã¯ããŠãŒã¶ãŒããšã«ç°ãªãããŒãžã§ã³ããããŸãã ãŠãŒã¹ ã±ãŒã¹ã«åã£ãæ£ããããŒãžã§ã³ããã§ãã¯ã¢ãŠãããŠãã ããã
- ææ°ã® CodeQL CLI ãªãªãŒã¹ã§äœ¿çšããããšãç®çãšããã¯ãšãªã«ã€ããŠã¯ã
codeql-cli/latest
ãšããã¿ã°ãä»ãããã©ã³ãããã§ãã¯ã¢ãŠãããŸãã CodeQL CLI ã䜿çšããŠæ§ç¯ããããŒã¿ããŒã¹ããŸãã¯æè¿ GitHub ããããŠã³ããŒãããããŒã¿ããŒã¹ã«ã¯ããã®ãã©ã³ãã䜿çšããå¿ èŠããããŸãã - ææ°ã® CodeQL ã¯ãšãªã«ã€ããŠã¯ã
main
ãã©ã³ãããã§ãã¯ã¢ãŠãããŸãã ãã®ãã©ã³ãã¯ãCodeQL ã®åæã®ææ°ããŒãžã§ã³ã衚ããŸãã
4. CodeQL CLI ã® tar ã¢ãŒã«ã€ããæœåºãã
æé 2 ã§äœæãããã£ã¬ã¯ããªã« tar ã¢ãŒã«ã€ããæœåºããŸãã
ããšãã°ãCodeQL ãªããžããªã®ã³ããŒãžã®ãã¹ã $HOME/codeql-home/codeql-repo
ã®å Žåã¯ãCLI ã $HOME/codeql-home/
ã«æœåºããŸãã
5. codeql
ãèµ·åãã
æœåºåŸãcodeql
ã®å®è¡å¯èœãã¡ã€ã«ãå®è¡ããããšã§ãCodeQL ããã»ã¹ãå®è¡ã§ããŸããæ¹æ³ã¯ 2 éããããŸãã
<extraction-root>/codeql/codeql
ãå®è¡ããŸããããã§ã<extraction-root>
㯠CodeQL CLI ããã±ãŒãžãæœåºãããã©ã«ããŒã§ãã<extraction-root>/codeql
ãPATH
ã«è¿œå ãããšãå®è¡å¯èœãã¡ã€ã«ãcodeql
ãšããŠå®è¡ããããšãã§ããŸãã
ãã®æç¹ã§ãCodeQL ã®ã³ãã³ããå®è¡ã§ããŸãã CodeQL CLI ã³ãã³ãã®å®å šãªäžèЧã«ã€ããŠã¯ããCodeQL CLI ã³ãã³ãã®ããã¥ã¢ã«ããåç §ããŠãã ããã
6. CodeQL CLI ã®ã»ããã¢ããã確èªãã
CodeQL CLI ã«ã¯ãããŒã¿ããŒã¹ã®äœæãšåæãã§ããããã«æ£ããèšå®ãããããšã確èªããããã«å®è¡ã§ãããµãã³ãã³ãããããŸãã
codeql resolve languages
ãå®è¡ãããšãããŒã¿ããŒã¹ã®äœæã«äœ¿çšã§ããèšèªã衚瀺ãããŸãã ããã䜿çšãããšãCodeQL CLI ããã±ãŒãžã§æ¢å®ã§ãµããŒããããŠããèšèªãäžèŠ§è¡šç€ºãããŸããcodeql resolve qlpacks
ãå®è¡ããŠãCLI ã§æ€çŽ¢ã§ãã CodeQL ããã¯ã衚瀺ããŸãã ããã«ãããCodeQL CLI ã§çŽæ¥äœ¿çšå¯èœãªãã¹ãŠã® CodeQL ããã¯ã®ååã衚瀺ãããŸãã ããã«ã¯ã次ã®ãã®ãå«ãŸããŸãã- ãµããŒããããŠããåèšèªã®ã¯ãšãª ãã㯠(äŸ:
codeql/{language}-queries
)ã ãããã®ããã¯ã«ã¯ãããããã®åæã§å®è¡ãããæšæºã¯ãšãªãå«ãŸããŠããŸãã - ãµããŒããããŠããåèšèªã®ã©ã€ãã©ãª ãã㯠(äŸ:
codeql/{language}-all
)ã ãããã®ããã¯ã«ã¯ãã¯ãšãªã®äœæã«åœ¹ç«ã€å¶åŸ¡ãããŒãããŒã¿ ãã㌠ã©ã€ãã©ãªãªã©ã®ã¯ãšãª ã©ã€ãã©ãªãå«ãŸããŠããŸãã - ãµããŒããããŠããåèšèªã®ãµã³ãã« ãã㯠(äŸ:
codeql/{language}-examples
)ã ãããã®ããã¯ã«ã¯ãã¯ãšãªã®äœæã«åœ¹ç«ã€ CodeQL ã®äŸ¿å©ãªã¹ãããããå«ãŸããŠããŸãã - ã¬ã¬ã· ããã¯ã䜿çšãããšã以åã®è£œåã䜿çšããŠäœæãããã«ã¹ã¿ã ã¯ãšãªãšã©ã€ãã©ãªããã䜿ãã®ããŒãžã§ã³ã® CodeQL ã«å¯Ÿå¿ã§ããããã«ãªããŸãã
CodeQL CLI ã® 2 ã€ã®ããŒãžã§ã³ã䜿çšãã
ææ°ã® CodeQL æ©èœã䜿çšããŠã¯ãšãªãŸã㯠CodeQL ãã¹ããå®è¡ããã ãã§ãªããGitHub Enterprise Server ã§ç¹å®ã®ããŒãžã§ã³ã® CodeQL ã³ãŒã ã¹ãã£ã³ãšäºææ§ã®ããããŒã¿ããŒã¹ãæºåããããšããŠããå Žåã¯ã2 ã€ã®ããŒãžã§ã³ã® CLI ãã€ã³ã¹ããŒã«ããããšãå¿ èŠã«ãªãå ŽåããããŸãã å¿ èŠãª CodeQL CLI ã®ããŒãžã§ã³ãããŠã³ããŒãããäž¡æ¹ã® CLI ã¢ãŒã«ã€ããåã芪ãã£ã¬ã¯ããªã«è§£åã§ããŸãã
GitHub.comããã®ããŒã¿ããŒã¹ã®ããŠã³ããŒã
GitHub ã§ã¯ãREST API ã䜿çšããŠããŠã³ããŒãã§ãã 200,000 ãè¶ ãããªããžããªã® CodeQL ããŒã¿ããŒã¹ã GitHub.com ã«ä¿åããŠããŸãã ãªããžããªã®äžèЧã¯ãã»ãã¥ãªãã£èª¿æ»ã®ããã®æãè峿·±ãã³ãŒãããŒã¹ã確å®ã«å«ãŸããããã«ãçµ¶ããå¢å ããé²åããŠããŸãã
VS Code æ¡åŒµæ©èœã® CodeQL ã䜿çšããŠãGitHub.com ããããŒã¿ããŒã¹ãåæããããšãã§ããŸãã 詳ããã¯ããCodeQL ã¯ãšãªã®å®è¡ããã芧ãã ããã
/repos/<owner>/<repo>/code-scanning/codeql/databases
ãšã³ããã€ã³ãã䜿çšããŠããªããžããªã«ããŠã³ããŒãå¯èœãª CodeQL ããŒã¿ããŒã¹ããããã©ããã確èªã§ããŸãã ããšãã°ãGitHub CLI ã䜿çšã㊠CodeQL ããŒã¿ããŒã¹ã®æç¡ã確èªããã«ã¯ã次ã®ããã«å®è¡ããŸãã
gh api /repos/<owner>/<repo>/code-scanning/codeql/databases
ãã®ã³ãã³ãããã¯ããªããžããªã§äœ¿çšã§ãã CodeQL ããŒã¿ããŒã¹ã«é¢ããæ å ±ãè¿ãããŸããããŒã¿ããŒã¹ã衚ãèšèªããããŒã¿ããŒã¹ãæåŸã«æŽæ°ãããæ¥æãªã©ã§ãã 䜿çšã§ãã CodeQL ããŒã¿ããŒã¹ããªãå Žåãå¿çã¯ç©ºã§ãã
ç®çã®èšèªã® CodeQL ããŒã¿ããŒã¹ãååšããããšã確èªããããæ¬¡ã®ã³ãã³ãã䜿çšããŠããŠã³ããŒãã§ããŸãã
gh api /repos/<owner>/<repo>/code-scanning/codeql/databases/<language> -H 'Accept: application/zip' > path/to/local/database.zip
詳ããã¯ããCodeQL ããŒã¿ããŒã¹ ãšã³ããã€ã³ãã®ååŸãã®ããã¥ã¡ã³ããåç §ããŠãã ããã
CodeQL CLI ã䜿çšããŠåæãå®è¡ããåã«ãããŒã¿ããŒã¹ãè§£åããå¿ èŠããããŸãã