GitHub Container registries ãžã®èªèšŒ
é©å㪠GitHub Container registry ã«å¯ŸããŠèªèšŒããããšã§ãããã¯ãå ¬éãããã©ã€ããŒã ããã¯ãããŠã³ããŒãã§ããŸãã
Container registry ãžã®èªèšŒã«ã¯ 2 ã€ã®æ¹æ³ããããŸãã
- CodeQL CLI ã«
--github-auth-stdin
ãªãã·ã§ã³ãæž¡ããæšæºå ¥åãä»ã㊠GitHub Apps ããŒã¯ã³ãŸã㯠personal access token ãæäŸããŸãã GITHUB_TOKEN
ç°å¢å€æ°ã GitHub Apps ããŒã¯ã³ãŸã㯠personal access token ã«èšå®ããŸãã
å
¬éåã« qlpack.yml
ãã¡ã€ã«ãæ§æãã
å
¬éããåã«ãCodeQL ããã¯ã®æ§æã®è©³çްã確èªããŠå€æŽã§ããŸãã ä»»æã®ããã¹ã ãšãã£ã¿ãŒã§ qlpack.yml
ãã¡ã€ã«ãéããŸãã
library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
- query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
-
name:
ã¯<scope>/<pack>
圢åŒã«åŸãå¿ èŠããããŸãã<scope>
ã¯å ¬éå ã® GitHub Organizationã<pack>
ã¯ããã¯ã®ååã§ãã -
defaultSuite
ãŸãã¯defaultSuiteFile
ã®ãã¡ãèš±å¯ãããã®ã¯ 1 ã€ã®ã¿ã§ãã ãã® 2 ã€ã¯ãå®è¡ããæ¢å®ã®ã¯ãšãª ã¹ã€ãŒããå®çŸ©ããç°ãªãæ¹æ³ã§ãã1 ã€ç®ã¯ qlpack.yml ãã¡ã€ã«ã«ã¯ãšãªãçŽæ¥æå®ãã2 ã€ç®ã¯ããã¯ã«ã¯ãšãª ã¹ã€ãŒããæå®ããŸãã
å®è¡äž codeql pack publish
ããã¯ã GitHub Container registry ã«å ¬éããæºåãã§ãããããã㯠ãã£ã¬ã¯ããªã®ã«ãŒãã§æ¬¡ã®ã³ãã³ããå®è¡ã§ããŸãã
codeql pack publish
å
¬éãããããã±ãŒãžã¯ãqlpack.yml
ãã¡ã€ã«å
ã®ã¹ã³ãŒãã§æå®ãã GitHub Organization ã®ããã±ãŒãž ã»ã¯ã·ã§ã³ã«è¡šç€ºãããŸãã
ã¡ã¢
æ¢å®ã®ã»ããã¢ããæ§æã®äžéšãšã㊠organization å ã®ãã¹ãŠã®ãªããžããªã«ã«ãã¬ããžãæ¡åŒµããããã«ãGitHub Container registry ã«ã¢ãã« ããã¯ãçºè¡ããå Žåã¯ãã³ãŒã ã¹ãã£ã³ãå®è¡ããŠãããªããžããªããããã®ã¢ãã« ããã¯ã«ã¢ã¯ã»ã¹ã§ããããšã確èªããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ããæ¢å®ã®ã»ããã¢ããã®æ§æãç·šéãããããã³ãããã±ãŒãžã®ã¢ã¯ã»ã¹å¶åŸ¡ãšå¯èŠæ§ã®èšå®ããåç §ããŠãã ããã
å®è¡äž codeql pack download <scope>/<pack>
ä»ã®ãŠãŒã¶ãŒãäœæããããã¯ãå®è¡ããã«ã¯ããŸã次ã®ã³ãã³ããå®è¡ããŠããŠã³ããŒãããå¿ èŠããããŸãã
codeql pack download <scope>/<pack>@x.x.x
<scope>
: ããŠã³ããŒãå ã® GitHub Organization ã®ååã<pack>
: ããŠã³ããŒãããããã¯ã®ååã@x.x.x
: çç¥å¯èœãªããŒãžã§ã³çªå·ã çç¥ãããšãææ°ããŒãžã§ã³ãããŠã³ããŒããããŸãã
ãã®ã³ãã³ãã¯ãè€æ°ã®ããã¯ã®åŒæ°ãåãå ¥ããŸãã
ããŠã³ããŒãããã¯ãšãª ããã¯ã®ç¹å®ã®ããŒãžã§ã³çªå·ãæå®ããã¹ã¯ãªãããèšè¿°ããå Žåã¯ãCodeQL ã®ããŒãžã§ã³ãæ°ããããŒãžã§ã³ã«æŽæ°ããéã«ãã¯ãšãª ããã¯ãæ°ããããŒãžã§ã³ã«åãæ¿ããå¿ èŠãããããšã«çæããŠãã ããã CodeQL ã®æ°ããããŒãžã§ã³ã¯ãéåžžã«å€ãããŒãžã§ã³ã«åºå®ãããŠããã¯ãšãª ããã¯ãšäžç·ã«äœ¿ããšãããã©ãŒãã³ã¹ãäœäžãã "å¯èœæ§ããããŸã"ã__ 詳ããã¯ããCodeQL ããã¯ã®äºææ§ã«ã€ããŠããã芧ãã ããã
CodeQL ããã¯ã䜿ã£ãŠ CodeQL ããŒã¿ããŒã¹ãåæãã
CodeQL ããã¯ã䜿ã£ãŠ CodeQL ããŒã¿ããŒã¹ãåæããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
<database>
: åæå¯Ÿè±¡ã® CodeQL ããŒã¿ããŒã¹ã<scope>
: ããã¯ãå ¬éãããŠãã GitHub Organization ã®ååã<pack>
: 䜿ãããã¯ã®ååã@x.x.x
: çç¥å¯èœãªããŒãžã§ã³çªå·ã çç¥ãããšãææ°ããŒãžã§ã³ã䜿ãããŸãã:<path>
: ã¯ãšãªããã£ã¬ã¯ããªããŸãã¯ã¯ãšãª ã¹ã€ãŒããžã®çç¥å¯èœãªãã¹ã çç¥ãããšãããã¯ã®æ¢å®ã®ã¯ãšãª ã¹ã€ãŒãã䜿ãããŸãã
analyze
ã³ãã³ãã䜿ã£ãŠãæå®ãã CodeQL ããã¯ã®æ¢å®ã®ã¹ã€ãŒããå®è¡ããŸãã CodeQL ããŒã¿ããŒã¹ã®åæã«äœ¿ã CodeQL ããã¯ã¯è€æ°æå®ã§ããŸãã æ¬¡ã«äŸã瀺ããŸãã
codeql <database> analyze <scope>/<pack> <scope>/<other-pack>
ã¡ã¢
codeql pack download
ã³ãã³ãã§ããŠã³ããŒããããããã¯ã¯ãããŒã«ã«å€æŽãæ³å®ãããŠããªãå
éšã®å Žæã«æ ŒçŽãããŸãã ããã¯ãããŠã³ããŒãåŸã«å€æŽãããšãäºæããªã (ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãé£ãã) åäœãçºçããå¯èœæ§ããããŸãã ããã¯ã®ã«ã¹ã¿ãã€ãºã«ã€ããŠè©³ããã¯ããCodeQL ããã¯ã®äœæãšæäœããåç
§ããŠãã ããã
CodeQL ããã¯ã®äºææ§ã«ã€ããŠ
ã¯ãšãª ããã¯ãå
¬éããããšããã®äžã«ãã¹ãŠã®ã¯ãšãªã®ããªã³ã³ãã€ã«æžã¿ã®è¡šçŸãå«ãŸããŸãã ãããã®ããªã³ã³ãã€ã«æžã¿ã¯ãšãªã¯ãäžè¬ã«ãåæäžã« QL ãœãŒã¹ããŒãããã³ã³ãã€ã«ããå Žåãããã¯ããã«é«éã«å®è¡ã§ããŸãã ãã ããããªã³ã³ãã€ã«æžã¿ã¯ãšãªã¯ QL ãšããªã¥ãšãŒã¿ãŒã®ç¹å®ã®å
éšã«ãäŸåãããããåæãå®è¡ãã CodeQL ã®ããŒãžã§ã³ã codeql pack publish
ãå®è¡ããããŒãžã§ã³ãšå€§ããç°ãªãå Žåã¯ã代ããã«åæäžã«ãœãŒã¹ããã¯ãšãªãã³ã³ãã€ã«ããå¿
èŠããããããããŸããã åã³ã³ãã€ã«ã¯èªåçã«è¡ãããåæã® "çµæ" ã«ã¯åœ±é¿ããŸããããåæé床ã倧å¹
ã«äœäžããå¯èœæ§ããããŸãã__
éåžžãCodeQL ã®ãããªãªãŒã¹ã§ããã¯ãå ¬éãããŠããå Žåããã®äžã®ããªã³ã³ãã€ã«æžã¿ã¯ãšãªã¯ããªãªãŒã¹æ¥ã 6 ãæãè¶ ããªãéããCodeQL ã® "以é" ã®ãªãªãŒã¹ã§çŽæ¥äœ¿ãããšãã§ãããšæ³å®ãããŸãã__ æ°ãããªãªãŒã¹ã®äºææ§ããããããé·æéä¿ã€ããã«åœç¶ã®åªåãããŸãããçŽæã¯ããŸããã
ãŸããCodeQL ã® "ææ°" ã®ãããªã㯠ãªãªãŒã¹ã«ãã£ãŠå ¬éãããããã¯ã¯ãcode scanning ãš GitHub Actions ã§äœ¿ããã CodeQL ã®ããŒãžã§ã³ã§ã䜿ãããšãã§ãããšæ³å®ãããŸãããã ããããã¯å€ãã®å Žåãå°ãå€ããªãªãŒã¹ã§ãã__
å ¬éãããã¯ãšãª ããã¯ã®ãŠãŒã¶ãŒã¯ãã¯ãšãª ããã¯ã䜿ãåæå®è¡ã®ã¿ãŒããã«åºåã調ã¹ããšãCodeQL ã§ããªã³ã³ãã€ã«æžã¿ã¯ãšãªã䜿ã£ãŠããããšã確èªã§ããŸãã æ¬¡ã®ãããªè¡ãå«ãŸããŠããå Žåãããªã³ã³ãã€ã«æžã¿ã¯ãšãªãæ£åžžã«äœ¿ãããŸããã
[42/108] Loaded /long/path/to/query/Filename.qlx.
äžæ¹ã代ããã«æ¬¡ã®ããã«è¡šç€ºãããå Žåã¯ãããªã³ã³ãã€ã«æžã¿ã¯ãšãªã®äœ¿çšã«å€±æããŸããã
Compiling query plan for /long/path/to/query/Filename.ql.
[42/108 comp 25s] Compiled /long/path/to/query/Filename.ql.
ãã®å Žåã§ãåæã®çµæã«åé¡ã¯ãããŸããããæé©ãªããã©ãŒãã³ã¹ãåŸãã«ã¯ãå Žåã«ãã£ãŠã¯ CodeQL CLI ãŸãã¯ã¯ãšãª ããã¯ã®æ°ããããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããå¿ èŠããããŸãã
ä»ã®ãŠãŒã¶ãŒã䜿ãããšãã§ããããã« GitHub.com ã® Container registry ã§ã¯ãšãª ããã¯ãå
¬éããå Žåã¯ãCodeQL ã®ææ°ãªãªãŒã¹ã䜿ã£ãŠ codeql pack publish
ãå®è¡ãã䜿ã£ãããŒãžã§ã³ã 6 ãæã«ãªãåã«ãæŽæ°ããã CodeQL ããŒãžã§ã³ã®ããã¯ã®æ°ããããŒãžã§ã³ãå
¬éããããšããå§ãããŸãã ããããããšã§ãããã¯ã®ãŠãŒã¶ãŒã "èªå" ã® CodeQL ãææ°ã®ç¶æ
ã«ä¿ã¡ãããã¯å
ã®ããªã³ã³ãã€ã«æžã¿ã¯ãšãªã®æ©æµãåããããããã«ã§ããŸãã__
ãã³ãã«ãããŠãã CodeQL ãã€ããªã䜿ã GitHub Enterprise Server ã€ã³ã¹ããŒã«ã§äœ¿ãç®çã§ã¯ãšãª ããã¯ãå
¬éããå Žåã¯ãåã CodeQL ããŒãžã§ã³ã䜿ã£ãŠ codeql pack publish
ãå®è¡ããŸãã æ°ããããŒãžã§ã³ã§ãGitHub Enterprise Server ã§èªèãããªãå¯èœæ§ã®ããããªã³ã³ãã€ã«æžã¿ã¯ãšãªãçæãããå ŽåããããŸãã GitHub Enterprise Server 管çè
ã¯ãæ°ããããŒãžã§ã³ã® CodeQL ã«å®æçã«ã¢ããã°ã¬ãŒãããããšãéžã¶ããšãã§ããŸãã ãã®å Žåã¯ãæç€ºã«åŸã£ãŠãã ããã
qlpack.yml
ãã¡ã€ã«ã«ã€ããŠ
ã¯ãšãªé¢é£ã®ã³ãã³ããå®è¡ããå ŽåãCodeQL ã¯ãŸããã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªã®å
åŒ (ããã³ãã®ãµããã£ã¬ã¯ããª) ã§ qlpack.yml
ãã¡ã€ã«ãæ€çŽ¢ããŸãã
次ã«ãããŠã³ããŒãããã CodeQL ããã¯ã®ããã±ãŒãž ãã£ãã·ã¥ã確èªããŸãã ããã¯ãã¯ãšãªãããŒã«ã«ã§éçºããŠããå Žåãã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªå
ã®ããŒã«ã« ããã±ãŒãžã«ãã£ãŠãããã±ãŒãž ãã£ãã·ã¥å
ã®åãååã®ããã±ãŒãžããªãŒããŒã©ã€ãããããããããŒã«ã«ã®å€æŽããã¹ãã§ããããšãæå³ããŸãã
å qlpack.yml
ãã¡ã€ã«ã®ã¡ã¿ããŒã¿ã¯ãããã¯å
ã®ã¯ãšãªãã³ã³ãã€ã«ããæ¹æ³ãããã¯ãäŸåããã©ã€ãã©ãªãã¯ãšãª ã¹ã€ãŒãå®çŸ©ãæ€çŽ¢ããå Žæã CodeQL ã«æç€ºããŸãã
CodeQL ãã㯠(CodeQL åæã§äœ¿çšãããã¯ãšãªãŸãã¯ã©ã€ãã©ãª) ã®å
容ã¯ãqlpack.yml
ãšåããã£ã¬ã¯ããªãŸãã¯ãã®ãµããã£ã¬ã¯ããªã«å«ãŸããŸãã
qlpack.yml
ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªã¯ãCodeQL ããã¯ã®å
容ã®ã«ãŒã ãã£ã¬ã¯ããªãšããŠæ©èœããŸãã ã€ãŸããããã¯å
ã®ãã¹ãŠã® .ql
ããã³ .qll
ãã¡ã€ã«ã«ã€ããŠãCodeQL ã¯ãããã¯ã®ã«ãŒãã«ãã qlpack.yml
ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªã«é¢é£ãããã¹ãŠã®ã€ã³ããŒã ã¹ããŒãã¡ã³ãã解決ããŸãã
qlpack.yml
ããããã£
qlpack.yml
ãã¡ã€ã«ã§ã¯ã次ã®ããããã£ããµããŒããããŸãã
name
-
ãã¹ãŠã®ããã¯ã§å¿ é ã
-
CodeQL ããã¯ãçºè¡ãããããã¯ã®ã¹ã³ãŒããšããã¯ã®ååãå®çŸ©ããŸããååã¯ãè±æ°åãšãã€ãã³ã䜿çšããŠå®çŸ©ããŸãã CodeQL ã§ã¯åãååã® CodeQL ããã¯ãåºå¥ã§ããªããããããã¯äžæã§ããå¿ èŠããããŸãã ããã¯åã䜿çšããŠã
database analyze
ã䜿çšããŠå®è¡ããã¯ãšãªãæå®ããCodeQL ããã¯éã®äŸåé¢ä¿ãå®çŸ©ããŸã (次ã®äŸãåç §)ã æ¬¡ã«äŸã瀺ããŸããname: octo-org/security-queries
version
-
çºè¡ããããã¹ãŠã®ããã¯ã§å¿ é ã
-
SemVer v2.0.0 仿§ã«æºæ ããå¿ èŠãããããã® CodeQL ããã¯ã®ã»ãã³ãã£ã㯠ããŒãžã§ã³ãå®çŸ©ããŸãã æ¬¡ã«äŸã瀺ããŸãã
version: 0.0.0
dataExtensions
- ã¢ãã« ããã¯ã§å¿ é ã
- ã¯ãšãª ããã¯ãŸãã¯ã©ã€ãã©ãª ããã¯ã®ã«ãŒããåºæºã«ããŠããŒã¿æ¡åŒµãã¡ã€ã«ãé 眮ãããå Žæãæå®ãã glob ãã¿ãŒã³ã®äžèЧãååŸããŸãã
dependencies
-
ä»ã®ããã¯ã«å¯Ÿãã CodeQL ããã±ãŒãžã®äŸåé¢ä¿ãå®çŸ©ããã¯ãšãªãšã©ã€ãã©ãª ããã¯ã§å¿ é ã ã¢ãã« ããã¯ã§ã¯äŸåé¢ä¿ãå®çŸ©ã§ããã代ããã«äœ¿çš
extensionTargets
ã§ããŸãã -
ããã¯åç §ããããã®ããã¯ãšäºææ§ã®ããã»ãã³ãã£ã㯠ããŒãžã§ã³ç¯å²ãžã®ããããå®çŸ©ããŸãã CodeQL CLI ããŒãžã§ã³ v2.6.0 以éã§ãµããŒããããŠããŸãã æ¬¡ã«äŸã瀺ããŸãã
dependencies: codeql/cpp-all: ^0.0.2
äžæãªå ŽåããŸãã¯äœ¿çšããããŒãžã§ã³ãéèŠã§ãªãå Žåã¯ããã®äŸåé¢ä¿ã®ä»»æã®ããŒãžã§ã³ããã®ããã¯ãšäºææ§ãããããšã瀺ã䜿çšã§ããŸã
"*"
ã å®éã«ã¯ãããã¯éåžžãå ¬éãããŠããäŸåé¢ä¿ã®æãé«ãããŒãžã§ã³ã«è§£æ±ºãããŸããç¹å¥ãªããŒãžã§ã³ã®ãã¬ãŒã¹ãã«ããŒããããŸããããã¯ã
${workspace}
ãã® CodeQL ããã¯ããåãã¯ãŒã¯ã¹ããŒã¹å ã«ããäŸåé¢ä¿ã®ããŒãžã§ã³ã«ãã£ãŠç°ãªã£ãŠããããšã瀺ããŸãã 詳ããã¯ããCodeQL ã¯ãŒã¯ã¹ããŒã¹ã«ã€ããŠããã芧ãã ããã
defaultSuiteFile
-
å®è¡ããäžé£ã®æ¢å®ã®ã¯ãšãªããšã¯ã¹ããŒãããããã¯ã§å¿ é ã
-
ãã®ããã¯ã
codeql database analyze
ã³ãã³ãã«æž¡ããããšãã«æ¢å®ã§å®è¡ããããã¹ãŠã®ã¯ãšãªãå«ããããã±ãŒãž ã«ãŒããåºæºãšããã¯ãšãª ã¹ã€ãŒã ãã¡ã€ã«ãžã®ãã¹ãå®çŸ©ããŸãã CLI ããŒãžã§ã³ v2.6.0 以éã§ãµããŒããããŠããŸããdefaultSuiteFile
ãŸãã¯defaultSuite
ã®ãããã 1 ã€ã®ã¿ãå®çŸ©ã§ããŸãã æ¬¡ã«äŸã瀺ããŸããdefaultSuiteFile: cpp-code-scanning.qls
defaultSuite
-
å®è¡ããäžé£ã®æ¢å®ã®ã¯ãšãªããšã¯ã¹ããŒãããããã¯ã§å¿ é ã
-
ãã®ããã¯ã
codeql database analyze
ã³ãã³ãã«æž¡ããããšãã«æ¢å®ã§å®è¡ããããã¹ãŠã®ã¯ãšãªãå«ãã€ã³ã©ã€ã³ ã¯ãšãª ã¹ã€ãŒããå®çŸ©ããŸãã CLI ããŒãžã§ã³ v2.6.0 以éã§ãµããŒããããŠããŸããdefaultSuiteFile
ãŸãã¯defaultSuite
ã®ãããã 1 ã€ã®ã¿ãå®çŸ©ã§ããŸãã æ¬¡ã«äŸã瀺ããŸããdefaultSuite: queries: . exclude: precision: medium
extensionTargets
- ã¢ãã« ããã¯ã§å¿ é ã
- ã¢ãã« ããã¯å
ã®æ¡åŒµæ©èœãé©çšãããã¯ãšãª ããã¯ã宣èšããŸãã æ¡åŒµæ©èœããã¯ã¯ãæå®ãããããŒãžã§ã³ç¯å²å
ã«ãããè©äŸ¡ã§äœ¿çšãããŠããå Žåã
extensionTargets
ãã£ã¯ã·ã§ããªã«ååãä»ããããåããã¯ã«ããŒã¿æ¡åŒµæ©èœãæ¿å ¥ããŸãã
groups
-
çç¥å¯èœã
-
CodeQL ã¯ãŒã¯ã¹ããŒã¹å ã®ããã¯ã®è«çã°ã«ãŒããå®çŸ©ããŸãã ã°ã«ãŒãã®äœ¿çšã¯ãã¯ãŒã¯ã¹ããŒã¹å ã®ããã¯ã®ãµãã»ããã«ããã¯æäœãé©çšããæ¹æ³ã§ãã ããšãã°ã次ã®ããã¯ã¯ã
java
ã°ã«ãŒããšexperimental
ã°ã«ãŒãã®äžéšãšããŠå®çŸ©ãããŠããŸããgroups: - java - experimental
codeql pack publish --groups java,-experimental
ãå®è¡ãããšãjava
ã°ã«ãŒãå ã®ãã¹ãŠã®ãã㯠(experimental
ããã¯ã_é€ã_) ããããªãã·ã¥ãããŸããcodeql pack ls --groups [-]<group>[,[-]<group>...]
ã³ãã³ããå®è¡ãããšãæå®ããã°ã«ãŒãã®ã»ããã«äžèŽããã¯ãŒã¯ã¹ããŒã¹å ã®ããã¯ãäžèŠ§è¡šç€ºã§ããŸããæ¬¡ã®å Žåãäžèšã¯ãŒã¯ã¹ããŒã¹ã® CodeQL ããã¯ã¯äžèЧã«å«ãŸããŸãã
- ãã€ãã¹èšå·ãªãã§äžèŠ§è¡šç€ºãããŠããã°ã«ãŒãã®å°ãªããšã 1 ã€ã«å±ããŠãã (ãã€ãã¹èšå·ãªãã§ãªã¹ããããŠããã°ã«ãŒãããªãå Žåããã®æ¡ä»¶ã¯èªåçã«æºããããŸã)ã
- ãã€ãã¹èšå·ãä»ããã©ã®ã°ã«ãŒãã«ãå±ããŠããªãã
library
-
ã©ã€ãã©ãª ããã¯ã§å¿ é ã
-
ãã®ããã¯ãã©ã€ãã©ãª ããã¯ã§ãããã©ããã瀺ãããŒã«å€ãå®çŸ©ããŸãã ã©ã€ãã©ãª ããã¯ã«ã¯ã¯ãšãªã¯å«ãŸãããã³ã³ãã€ã«ãããŸããã ã¯ãšãª ããã¯ã§ã¯ããã®ãã£ãŒã«ããç¡èŠããããæç€ºçã«
false
ã«èšå®ã§ããŸãã æ¬¡ã«äŸã瀺ããŸããlibrary: true
suites
- ã¯ãšãª ã¹ã€ãŒããå®çŸ©ããããã¯ã®å Žåã¯çç¥å¯èœã ããã«ããããŠãŒã¶ãŒã¯å®å šãªãã¹ãæå®ããã«ãããã¯åãæå®ããããšã§ãæå®ãããã£ã¬ã¯ããªã«ä¿åãããŠããã¯ãšãª ã¹ã€ãŒããå®è¡ã§ããŸãã
- çŸåšãCodeQL CLI ãã³ãã«ã«å«ãŸããŠããæšæºã¯ãšãª ããã¯ã§ã®ã¿ãµããŒããããŠããŸãã
- ãã®ãªãã·ã§ã³ã¯ãGitHub ã³ã³ãã ã¬ãžã¹ããªããããŠã³ããŒãããã CodeQL ããã¯ã§ã¯ãµããŒããããŠããŸããã
tests
-
CodeQL ãã¹ããå«ãããã¯ã®å Žåã¯çç¥å¯èœã ãã¹ããå«ãŸããŠããªãããã¯ã®å Žåã¯ç¡èŠãããŸãã
-
ãã¹ããå«ãããã¯å ã®ãã£ã¬ã¯ããªãžã®ãã¹ãå®çŸ©ããŸããããã¯ããã㯠ãã£ã¬ã¯ããªãåºæºã«å®çŸ©ãããŸãã ããã¯å šäœãæå®ããã«ã¯ã
.
ã䜿çšããŸãã--strict-test-discovery
ãªãã·ã§ã³ãæå®ããŠtest run
ãå®è¡ãããšããã®ãã£ã¬ã¯ããªå ã®ãã¹ãŠã®ã¯ãšãªããã¹ããšããŠå®è¡ãããŸããqueries
ãŸãã¯qlpack
åœä»€ã䜿çšããŠç¹å®ã®ããã¯å ã®ãã¹ãŠã®ã¯ãšãªãèŠæ±ããã¯ãšãª ã¹ã€ãŒãå®çŸ©ã§ã¯ããããã®ã¯ãšãªã¯ç¡èŠãããŸãã ãã®ããããã£ããªãå Žåã.
ãšèŠãªãããŸãã æ¬¡ã«äŸã瀺ããŸããtests: .
extractor
-
CodeQL ãã¹ããå«ããã¹ãŠã®ããã¯ã§å¿ é ã
-
ããã¯å ã® CodeQL ãã¹ããå®è¡ãããšãã«äœ¿çšãã CodeQL èšèªæœåºåãå®çŸ©ããŸãã ã¯ãšãªã®ãã¹ãã«ã€ããŠè©³ããã¯ããã«ã¹ã¿ã ã¯ãšãªã®ãã¹ãããåç §ããŠãã ããã æ¬¡ã«äŸã瀺ããŸãã
extractor: javascript-typescript
authors
-
çç¥å¯èœã
-
CodeQL ããã¯ãçºè¡ãããã¢ã«ãŠã³ãã®ããã±ãŒãž ã»ã¯ã·ã§ã³ã§ããã±ãŒãžæ€çŽ¢ããŒãžã«è¡šç€ºãããã¡ã¿ããŒã¿ãå®çŸ©ããŸãã æ¬¡ã«äŸã瀺ããŸãã
authors: author1@github.com,author2@github.com
license
-
çç¥å¯èœã
-
CodeQL ããã¯ãçºè¡ãããã¢ã«ãŠã³ãã®ããã±ãŒãž ã»ã¯ã·ã§ã³ã§ããã±ãŒãžæ€çŽ¢ããŒãžã«è¡šç€ºãããã¡ã¿ããŒã¿ãå®çŸ©ããŸãã èš±å¯ãããŠããã©ã€ã»ã³ã¹ã®äžèЧã«ã€ããŠã¯ãSPDX 仿§ã® SPDX ã©ã€ã»ã³ã¹ ãªã¹ããåç §ããŠãã ããã æ¬¡ã«äŸã瀺ããŸãã
license: MIT
description
-
çç¥å¯èœã
-
CodeQL ããã¯ãçºè¡ãããã¢ã«ãŠã³ãã®ããã±ãŒãž ã»ã¯ã·ã§ã³ã§ããã±ãŒãžæ€çŽ¢ããŒãžã«è¡šç€ºãããã¡ã¿ããŒã¿ãå®çŸ©ããŸãã æ¬¡ã«äŸã瀺ããŸãã
description: Human-readable description of the contents of the CodeQL pack.
libraryPathDependencies
-
çç¥å¯èœãéæšå¥šã 代ããã«ã
dependencies
ããããã£ã䜿çšããŠãã ããã -
以åã¯ããã® CodeQL ããã¯ãäŸåãã CodeQL ããã¯ã®ååãé åãšããŠå®çŸ©ããããã«äœ¿çšãããŠããŸããã ããã«ãããããã¯ã¯ãäŸåé¢ä¿ã§å®çŸ©ãããã©ã€ãã©ãªãããŒã¿ããŒã¹ ã¹ããŒããã¯ãšãª ã¹ã€ãŒãã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã æ¬¡ã«äŸã瀺ããŸãã
libraryPathDependencies: codeql/javascript-all
dbscheme
-
ã³ã¢èšèªããã¯ã§ã®ã¿å¿ é ã
-
ãã® CodeQL èšèªçšã«èšè¿°ããããã¹ãŠã®ã©ã€ãã©ãªãšã¯ãšãªã®ããŒã¿ããŒã¹ ã¹ããŒããžã®ãã¹ãå®çŸ©ããŸã (次ã®äŸãåç §)ã æ¬¡ã«äŸã瀺ããŸãã
dbscheme: semmlecode.python.dbscheme
upgrades
-
ã³ã¢èšèªããã¯ã§ã®ã¿å¿ é ã
-
ããŒã¿ããŒã¹ ã¢ããã°ã¬ãŒã ã¹ã¯ãªãããå«ãããã¯å ã®ãã£ã¬ã¯ããªãžã®ãã¹ãå®çŸ©ããŸããããã¯ããã㯠ãã£ã¬ã¯ããªãåºæºã«å®çŸ©ãããŸãã ããŒã¿ããŒã¹ã®ã¢ããã°ã¬ãŒãã¯ãå¥ã®ããŒãžã§ã³ã® CodeQL CLI ã§äœæãããããŒã¿ããŒã¹ãš CLI ã®çŸåšã®ããŒãžã§ã³ãšã®äºææ§ã確ä¿ããããã«å éšçã«äœ¿çšãããŸãã æ¬¡ã«äŸã瀺ããŸãã
upgrades: .
warnOnImplicitThis
-
çç¥å¯èœã
warnOnImplicitThis
ããããã£ãå®çŸ©ãããŠããªãå Žåãæ¢å®å€ã¯false
ã«èšå®ãããŸãã -
æé»çãª
this
åŒã³åºãã¬ã·ãŒã㌠(ã€ãŸããæç€ºçãªã¬ã·ãŒããŒãªã) ãæå®ããã¡ã³ããŒè¿°èªåŒã³åºãã«é¢ããèŠåãã³ã³ãã€ã©ãåºåãããã©ãããæå®ããããŒã«å€ãå®çŸ©ããŸãã CodeQL CLI v2.13.2 以éã§äœ¿çšã§ããŸãã æ¬¡ã«äŸã瀺ããŸããwarnOnImplicitThis: true
codeql-pack.lock.yml
ãã¡ã€ã«ã«ã€ããŠ
codeql-pack.lock.yml
ãã¡ã€ã«ã«ã¯ãCodeQL ããã¯ã®è§£æ±ºãããæšç§»çäŸåé¢ä¿ã®ããŒãžã§ã³ãæ ŒçŽãããŸãã ãã®ãã¡ã€ã«ã¯ããŸã ååšããŠããªãå Žåãcodeql pack install
ã³ãã³ãã«ãã£ãŠäœæãããŸããããã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ã«è¿œå ããå¿
èŠããããŸãã qlpack.yml
ãã¡ã€ã«ã® dependencies
ã»ã¯ã·ã§ã³ã«ã¯ãããã¯ãšäºææ§ã®ããããŒãžã§ã³ç¯å²ãå«ãŸããŸãã codeql-pack.lock.yml
ãã¡ã€ã«ã«ãã£ãŠãããŒãžã§ã³ãæ£ç¢ºãªäŸåé¢ä¿ã«ããã¯ãããŸãã ããã«ããããã®ããã¯ã§ codeql pack install
ãå®è¡ãããšãäºææ§ã®ããæ°ããããŒãžã§ã³ãååšããå Žåã§ããåžžã«åãããŒãžã§ã³ã®äŸåé¢ä¿ãååŸãããŸãã
ããšãã°ãqlpack.yml
ãã¡ã€ã«ã«æ¬¡ã®äŸåé¢ä¿ãå«ãŸããŠããå Žåã
dependencies:
codeql/cpp-all: ^0.1.2
my-user/my-lib: ^0.2.3
other-dependency/from-source: "*"
codeql-pack.lock.yml
ãã¡ã€ã«ã¯ã次ã®ãããªå
容ã«ãªããŸãã
dependencies:
codeql/cpp-all:
version: 0.1.4
my-user/my-lib:
version: 0.2.4
my-user/transitive-dependency:
version: 1.2.4
codeql/cpp-all
äŸåé¢ä¿ã¯ãããŒãžã§ã³ 0.1.4 ã«ããã¯ãããŸãã my-user/my-lib
äŸåé¢ä¿ã¯ãããŒãžã§ã³ 0.2.4 ã«ããã¯ãããŸãã æšç§»çãªäŸåé¢ä¿ã§ãããqlpack.yml
ãã¡ã€ã«ã§ã¯æå®ãããŠããªã my-user/transitive-dependency
ã¯ãããŒãžã§ã³ 1.2.4 ã«ããã¯ãããŸãã other-dependency/from-source
ã¯ããœãŒã¹ãã解決ãããããããã㯠ãã¡ã€ã«ã«ã¯ååšããŸããã ãã®äŸåé¢ä¿ã¯ãããã¯ãšåã CodeQL ã¯ãŒã¯ã¹ããŒã¹ã§äœ¿çšã§ããå¿
èŠããããŸãã CodeQL ã¯ãŒã¯ã¹ããŒã¹ã«å ãããœãŒã¹ããã®äŸåé¢ä¿ã®è§£æ±ºã«é¢ãã詳现ã«ã€ããŠã¯ããCodeQL ã¯ãŒã¯ã¹ããŒã¹ã«ã€ããŠããåç
§ããŠãã ããã
ã»ãšãã©ã®å Žåãã©ã€ãã©ãª ããã¯ã¯å®è¡å¯èœãã¡ã€ã«ã§ã¯ãªããéåžžã¯æšç§»çãªäŸåé¢ä¿ãä¿®æ£ããå¿
èŠããªããããcodeql-pack.lock.yml
ãã¡ã€ã«ã¯ã¯ãšãª ããã¯ã«ã®ã¿é¢ä¿ããããŸãã ããã«å¯ŸããäŸå€ã¯ããã¹ããå«ãã©ã€ãã©ãª ããã¯ã®å Žåã§ãã ãã®å Žåãcodeql-pack.lock.yml
ãã¡ã€ã«ã䜿çšããŠããã¹ããåžžã«åãããŒãžã§ã³ã®äŸåé¢ä¿ã§å®è¡ãããããã«ããäŸåé¢ä¿ãäžèŽããªãå Žåã«åœãã®ãšã©ãŒãçºçããã®ãåé¿ããŸãã
ã«ã¹ã¿ã CodeQL ããã¯ã®äŸ
ã«ã¹ã¿ã ã¯ãšãªãŸãã¯ãã¹ããèšè¿°ããå Žåãããããã«ã¹ã¿ã CodeQL ããã¯ã«ä¿åããå¿ èŠããããŸãã ããããããããããã«ãåããã¯ãè«ççã«æŽçããŠã¿ãŠãã ããã 詳ããã¯ããCodeQL ããã¯ã®äœæãšæäœããã芧ãã ããã ã¯ãšãªãšãã¹ãçšã®ãã¡ã€ã«ãåå¥ã®ããã¯ã«ä¿åããå¯èœã§ããã°ãã«ã¹ã¿ã ããã¯ãã¿ãŒã²ããèšèªããšã«ç¹å®ã®ãã©ã«ããŒã«æŽçããŸãã ããã¯ãCodeQL ããã¯ãçºè¡ããŠä»ã®ãŠãŒã¶ãŒãšå ±æããããã³ãŒã ã¹ãã£ã³ã«äœ¿çšãããããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã 詳ããã¯ããCodeQL ã«ããã³ãŒã ã¹ãã£ã³ã«ã€ããŠããã芧ãã ããã
ã«ã¹ã¿ã ã©ã€ãã©ãªçšã® CodeQL ããã¯
ã¯ãšãªããã¹ããå«ãŸãªãã«ã¹ã¿ã C++ ã©ã€ãã©ãªãå«ãã«ã¹ã¿ã CodeQL ããã¯ã«ã¯ãqlpack.yml
ãã¡ã€ã«ãå«ãŸããå ŽåããããŸãããã®ãã¡ã€ã«ã®å
å®¹ã¯æ¬¡ã®ããã«ãªããŸãã
name: my-github-user/my-custom-libraries
version: 1.2.3
library: true
dependencies:
codeql/cpp-all: ^0.1.2
ããã§ãcodeql/cpp-all
ã¯ãCodeQL ãªããžããªã«å«ãŸãã C/C++ åæçšã® CodeQL ããã¯ã®ååã§ãã ããŒãžã§ã³ç¯å² ^0.1.2
ã¯ããã®ããã¯ããcodeql/cpp-all
ã® 0.1.2
以äžã§ 0.2.0
æªæºã®ãã¹ãŠã®ããŒãžã§ã³ãšäºææ§ãããããšã瀺ããŸãã ãã®ããã¯ã§å®çŸ©ããã CodeQL ã©ã€ãã©ãª ãã¡ã€ã« (æ¡åŒµåã .qll
ã®ãã¡ã€ã«) ã¯ãäŸåé¢ä¿ãããã¯ã«ãã®ããã¯ãå«ãã¯ãšãª ããã¯ã§å®çŸ©ãããã¯ãšãªã§äœ¿çšã§ããŸãã
library
ããããã£ã¯ããã®ããã¯ãã©ã€ãã©ãª ããã¯ã§ãããã¯ãšãªãå«ãŸããŠããªãããšã瀺ããŸãã
ã«ã¹ã¿ã ã¯ãšãªçšã® CodeQL ããã¯
ã«ã¹ã¿ã C++ ã¯ãšãªãšã©ã€ãã©ãªãå«ãã«ã¹ã¿ã CodeQL ããã¯ã«ã¯ãqlpack.yml
ãã¡ã€ã«ãå«ãŸããå ŽåããããŸãããã®ãã¡ã€ã«ã®å
å®¹ã¯æ¬¡ã®ããã«ãªããŸãã
name: my-github-user/my-custom-queries
version: 1.2.3
dependencies:
codeql/cpp-all: ^0.1.2
my-github-user/my-custom-libraries: ^1.2.3
ããã§ãcodeql/cpp-all
ã¯ãCodeQL ãªããžããªã«å«ãŸãã C/C++ åæçšã® CodeQL ããã¯ã®ååã§ãã ããŒãžã§ã³ç¯å² ^0.1.2
ã¯ããã®ããã¯ããcodeql/cpp-all
ã® 0.1.2
以äžã§ 0.2.0
æªæºã®ãã¹ãŠã®ããŒãžã§ã³ãšäºææ§ãããããšã瀺ããŸãã my-github-user/my-custom-libraries
ã¯ãC++ çšã®ã«ã¹ã¿ã CodeQL ã©ã€ãã©ãªãå«ã CodeQL ããã¯ã®ååã§ãã ãã®ããã¯ã§å®çŸ©ãããŠãã CodeQL ã©ã€ãã©ãª ãã¡ã€ã« (æ¡åŒµåã .qll
ã®ãã¡ã€ã«) ã¯ãmy-github-user/my-custom-queries
ããã¯å
ã®ã¯ãšãªã§äœ¿çšã§ããŸãã
ã«ã¹ã¿ã ãã¹ãçšã® CodeQL ããã¯
ãã¹ã ãã¡ã€ã«ãå«ãã«ã¹ã¿ã CodeQL ããã¯ã®å Žåãtest run
ã³ãã³ãã§ãã¹ã ããŒã¿ããŒã¹ã®äœææ¹æ³ãèªèã§ããããã«ãextractor
ããããã£ãå«ããå¿
èŠããããŸãã tests
ããããã£ãæå®ããããšãã§ããŸãã
次㮠qlpack.yml
ãã¡ã€ã«ã¯ãmy-github-user/my-query-tests
ã 1.2.3 以äžã§ 2.0.0 æªæºã®ããŒãžã§ã³ã® my-github-user/my-custom-queries
ã«äŸåããŠããããšã瀺ããŠããŸãã ãŸãããã¹ã ããŒã¿ããŒã¹ã®äœææã« CLI ã§ Java extractor
ã䜿çšããå¿
èŠãããããšã宣èšããŸãã tests: .
è¡ã§ã¯ã--strict-test-discovery
ãªãã·ã§ã³ãæå®ã㊠codeql test run
ãå®è¡ããéã«ãããã¯å
ã®ãã¹ãŠã® .ql
ãã¡ã€ã«ããã¹ããšããŠå®è¡ããå¿
èŠãããããšã宣èšããŸãã éåžžããã¹ã ããã¯ã« version
ããããã£ã¯å«ãŸããŸããã ããã«ããããããã誀ã£ãŠçºè¡ãããã®ãé²ãããšãã§ããŸãã
name: my-github-user/my-query-tests
dependencies:
my-github-user/my-custom-queries: ^1.2.3
extractor: java-kotlin
tests: .
ãã¹ãã®å®è¡ã«ã€ããŠè©³ããã¯ããã«ã¹ã¿ã ã¯ãšãªã®ãã¹ãããåç §ããŠãã ããã
CodeQL ãªããžããªå ã® CodeQL ããã¯ã®äŸ
CodeQL ãªããžããªã®åèšèªã«ã¯ã次㮠4 ã€ã®äž»èŠãª CodeQL ããã¯ããããŸãã
-
èšèªã§äœ¿çšãããããŒã¿ããŒã¹ ã¹ããŒããCodeQL ã©ã€ãã©ãªãã¯ãšãªãå«ãèšèªçšã³ã¢ ã©ã€ãã©ãª ãã㯠(
<language>/ql/lib
) -
èšèªã®æ¢å®ã®ã¯ãšãªãšã¯ãšãª ã¹ã€ãŒããå«ãèšèªçšã³ã¢ ã¯ãšãª ãã㯠(
<language>/ql/src
) -
ã³ã¢èšèªã©ã€ãã©ãªãšã¯ãšãªã®ãã¹ã (
<language>/ql/test
) -
èšèªã®ã¯ãšãªäŸ (
<language>/ql/examples
)
ã³ã¢ ã©ã€ãã©ãª ããã¯
C/C++ åæã©ã€ãã©ãª ã³ã¢èšèªããã¯ã® qlpack.yml
ãã¡ã€ã«ã®äŸã次ã«ç€ºããŸãã
name: codeql/cpp-all
version: x.y.z-dev
dbscheme: semmlecode.cpp.dbscheme
library: true
upgrades: upgrades
次ã®ããããã£ã«é¢ãã远å ã®æ³šæäºé :
-
library
: ããã¯ãå®è¡å¯èœã¯ãšãªãå«ãŸããŠããªãã©ã€ãã©ãª ããã¯ã§ããããšã瀺ããŸãã ä»ã®ããã¯ã®äŸåé¢ä¿ãšããŠäœ¿çšããããšã®ã¿ãç®çãšããŠããŸãã -
dbscheme
ããã³upgrades
: ãããã®ããããã£ã¯ CodeQL CLI ã®å éšçšã§ãããèšèªã®ã³ã¢ CodeQL ã¯ãšãª ããã¯ã§ã®ã¿å®çŸ©ããå¿ èŠããããŸãã
ã³ã¢ ã¯ãšãª ããã¯
C/C++ åæã¯ãšãª ã³ã¢ ã¯ãšãª ããã¯ã® qlpack.yml
ãã¡ã€ã«ã®äŸã次ã«ç€ºããŸãã
name: codeql/cpp-queries
version: x.y.z-dev
dependencies:
codeql/cpp-all: "*"
codeql/suite-helpers: "*"
suites: codeql-suites
defaultSuiteFile: codeql-suites/cpp-code-scanning.qls
次ã®ããããã£ã«é¢ãã远å ã®æ³šæäºé :
-
dependencies
: ãã®ã¯ãšãª ããã¯ã¯ãcodeql/cpp-all
ãšcodeql/suite-helpers
ã«äŸåããŸãã ãããã®äŸåé¢ä¿ã¯ãœãŒã¹ãã解決ããããããäºææ§ã®ãã CodeQL ããã¯ã®ããŒãžã§ã³ã¯é¢ä¿ãããŸããã ãœãŒã¹ããã®äŸåé¢ä¿ã®è§£æ±ºã«é¢ãã詳现ã«ã€ããŠã¯ãããœãŒã¹ã®äŸåé¢ä¿ããåç §ããŠãã ããã -
suites
: "æ¢ç¥" ã®ã¯ãšãª ã¹ã€ãŒããå«ããã£ã¬ã¯ããªã瀺ããŸãã -
defaultSuiteFile
: ã¯ãšãª ã¹ã€ãŒããæå®ãããŠããªãå Žåã«äœ¿çšãããæ¢å®ã®ã¯ãšãª ã¹ã€ãŒã ãã¡ã€ã«ã®ååã
ã³ã¢ CodeQL ããã¯ã®ãã¹ã
C/C++ åæã¯ãšãª ã³ã¢ ãã¹ã ããã¯ã® qlpack.yml
ãã¡ã€ã«ã®äŸã次ã«ç€ºããŸãã
name: codeql/cpp-tests
dependencies:
codeql/cpp-all: "*"
codeql/cpp-queries: "*"
extractor: cpp
tests: .
次ã®ããããã£ã«é¢ãã远å ã®æ³šæäºé :
-
dependencies
: ãã®ããã¯ã¯ãC++ ã®ã³ã¢ CodeQL ã¯ãšãª ããã¯ãšã©ã€ãã©ãª ããã¯ã«äŸåããŸãã -
extractor
: ããã¯ããã¹ãŠã®ãã¹ãã§åã C++ æœåºåã䜿çšããŠãã¹ãçšã®ããŒã¿ããŒã¹ãäœæããããšãæå®ããŸãã -
tests
: ããã¯ããã¹ãã®å Žæãæå®ããŸãã ãã®å Žåããã¹ãã¯ãããã¯ã®ã«ãŒã ãã©ã«ã㌠(ããã³ãã¹ãŠã®ãµããã©ã«ããŒ) å ã«ãããŸãã -
version
: ãã¹ã ããã¯ã®version
ããããã£ã¯ãããŸããã ããã«ããããã¹ã ããã¯ã誀ã£ãŠçºè¡ãããã®ãé²ãããšãã§ããŸãã