ãã«ããªããžã㪠ããªã¢ã³ãåæã䜿çšããå€§èŠæš¡ãª CodeQL ã¯ãšãªã®å®è¡ã«ã€ããŠ
ãã«ããªããžã㪠ããªã¢ã³ãåæ (MRVA) ã§ã¯ãVisual Studio Code ã§ãCodeQL ã¯ãšãªã GitHub äžã®æå€§ 1,000 åã®ãªããžããªã®äžèЧã«å¯ŸããŠå®è¡ã§ããŸãã
ãªããžããªã®äžèЧã«å¯Ÿã㊠MRVA ãå®è¡ãããšãåæã«äœ¿çšã§ãã CodeQL ããŒã¿ããŒã¹ãæã€åãªããžããªã«å¯ŸããŠã¯ãšãªãå®è¡ãããŸãã GitHub ã¯ãCodeQL ã䜿çšã㊠code scanning ãå®è¡ãããã¹ãŠã®ãªããžããªãå«ããæ°åã®ãããªã㯠ãªããžããªã®æ¢å®ã®ãã©ã³ãçšã®ææ° CodeQL ããŒã¿ããŒã¹ãäœæããæ ŒçŽããŸãã
åæã®ããã«ãªã¹ãã«ãªããžããªã远å ããåã«ãæ¢å®ãŸãã¯é«åºŠãªã»ããã¢ããã§ãGitHub ã«å¯Ÿã㊠CodeQL ã䜿çšã㊠code scanning ãæå¹ã«ããå¿ èŠããããŸãã CodeQL ã䜿çšãã code scanning ã®æå¹åã®è©³çްã«ã€ããŠã¯ããã³ãŒã ã¹ãã£ã³ã®æ¢å®ã»ããã¢ããã®æ§æããåç §ããŠãã ããã
MRVA ã CodeQL ããŒã¿ããŒã¹ã«å¯Ÿã㊠GitHub.com ã«å¯ŸããŠã¯ãšãªãå®è¡ããä»çµã¿
MRVA ãå®è¡ãããšãåæã¯ GitHub Actions ã䜿çšããŠå®å šã«å®è¡ãããŸãã ã¯ãŒã¯ãããŒãäœæããå¿ èŠã¯ãããŸããããVisual Studio Code æ¡åŒµæ©èœã® CodeQL ãã³ã³ãããŒã©ãŒ ãªããžããªãšããŠäœ¿çšãããªããžããªãæå®ããå¿ èŠããããŸãã åãªããžããªã®åæãå®äºãããšãçµæã衚瀺ããããã« VS Code ã«éä¿¡ãããŸãã
CodeQL æ¡åŒµæ©èœã¯ãã©ã€ãã©ãªãšã©ã€ãã©ãªã®äŸåé¢ä¿ãå«ã CodeQL ããã¯ããã«ãããŸãã CodeQL ããã¯ãšéžæãããªããžã㪠ãªã¹ãã¯ãGitHub äžã® API ãšã³ããã€ã³ãã«ãã¹ããããŸããããã«ãã£ãŠãã³ã³ãããŒã©ãŒ ãªããžããªå ã® GitHub Actions åçã¯ãŒã¯ãããŒãããªã¬ãŒãããŸãã ã¯ãŒã¯ãããŒã¯è€æ°ã®äžŠåãžã§ããèµ·åããŠããªã¹ãå ã®ãªããžããªã«å¯Ÿã㊠CodeQL ã¯ãšãªãå®è¡ããã¯ãšãªã®å®è¡ãæé©åããŸãã åãªããžããªãåæããããšãçµæãåŠçãããVS Code ã«è¡šç€ºãããŸãã
åææ¡ä»¶
-
æåã®ãã«ããªããžã㪠ããªã¢ã³ãåæãå®è¡ããåã«ãã³ã³ãããŒã©ãŒ ãªããžããªãå®çŸ©ããå¿ èŠããããŸãã
-
ã³ã³ãããŒã©ãŒ ãªããžããªã¯ç©ºã§ãããŸããŸããããå°ãªããšã 1 ã€ã®ã³ããããå¿ èŠã§ãã
-
GitHub.com ã§ã¯ããããªã㯠ãªããžããªã®ã¿ãåæããäºå®ã®å Žåãã³ã³ãããŒã©ãŒ ãªããžããªã®å¯èŠæ§ã "ãããªãã¯" ã«ããããšãã§ããŸãã ããªã¢ã³ãåæã¯ç¡æã§ãã
-
GitHub.com ã§ãã©ã€ããŒã ãªããžããªãŸãã¯å éšãªããžããªãåæããå¿ èŠãããå Žåã¯ãã³ã³ãããŒã©ãŒ ãªããžããªã®å¯èŠæ§ã "ãã©ã€ããŒã" ã«ããå¿ èŠããããŸãã
ç¡æå¶éãè¶ ãããã©ã€ããŒã ãªããžããªãŸãã¯å éšãªããžããªã§ããªã¢ã³ãåæãå®è¡ããããã«äœ¿çšããã¢ã¯ã·ã§ã³ (å) ã¯ãã¹ãŠããªããžããªã®ææè ã«èª²éãããŸãã ç¡ææéãšè«æ±ã«é¢ãã詳现ã«ã€ããŠã¯ããGitHub Actions ã®èª²éããåç §ããŠãã ããã
MRVA çšã®ã³ã³ãããŒã©ãŒ ãªããžããªã®èšå®
-
[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ã[ã³ã³ãããŒã©ãŒ ãªããžããªã®èšå®] ãã¯ãªãã¯ããŠãã³ã³ãããŒã©ãŒ ãªããžããªã®ãã£ãŒã«ãã衚瀺ããŸãã
-
ã³ã³ãããŒã©ãŒ ãªããžããªãšããŠäœ¿çšãã GitHub ã«ãªããžããªã®ææè ãšååãå ¥åããEnter ããŒãæŒããŸãã
-
GitHub ã§èªèšŒããããã«æ±ããããå Žåã¯ãæç€ºã«åŸã£ãŠã¢ã«ãŠã³ãã«ãµã€ã³ã€ã³ããŸãã å®äºãããšãGitHub èªèšŒããã®ããã³ããã衚瀺ãããVisual Studio Code ã§éãããã®ã¢ã¯ã»ã¹èš±å¯ãæ±ããããå ŽåããããŸãã[Open] ãã¯ãªãã¯ããŸãã
ã³ã³ãããŒã©ãŒ ãªããžããªã®ååã¯ãCodeQL æ¡åŒµæ©èœã®èšå®ã«ä¿åãããŸãã ã³ã³ãããŒã©ãŒ ãªããžããªãç·šéããæ¹æ³ã«ã€ããŠã¯ããèšå®ã®ã«ã¹ã¿ãã€ãºããåç §ããŠãã ããã
MRVA ã䜿çšããå€§èŠæš¡ãªã¯ãšãªã®å®è¡
-
æ¢å®ã§ã¯ã[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã«ã¯ãåæããèšèªã® GitHub.com ã®äžäœ 10 åãäžäœ 100 åãäžäœ 1000 åã®ãããªã㯠ãªããžããªã®æ¢å®ã®ãªã¹ãã衚瀺ãããŸãã ã³ã³ãããŒã©ãŒ ãªããžããªã SUBDOMAIN.ghe.com ã§ãã¹ããããŠããå Žåããããã®ãªã¹ãã¯äœ¿çšã§ããŸããã
-
å¿ èŠã«å¿ããŠãæ°ãããªããžããªãçµç¹ããªã¹ãã远å ã§ããŸãã
-
[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ã[+] ãã¯ãªãã¯ããŠæ°ããããŒã¿ããŒã¹ã远å ããŸãã
-
ããããããŠã³ ã¡ãã¥ãŒããã[GitHub ãªããžããªãã] ãŸã㯠[GitHub çµç¹ãŸãã¯ææè ã®ãã¹ãŠã®ãªããžããª] ãéžæããŸãã
-
ãã£ãŒã«ãã«ã䜿çšãããªããžããªãŸãã¯çµç¹ã®èå¥åãå ¥åããŸãã
-
-
ã¯ãšãªã®å®è¡å¯Ÿè±¡ã® GitHub ãªããžããªãéžæããŸã (è€æ°å¯)ã
-
å®è¡ããã¯ãšãªãéããã¯ãšãª ãã¡ã€ã«ã§å³ã¯ãªãã¯ããCodeQL: ããªã¢ã³ãåæã®å®è¡ ãéžæããŠããªã¢ã³ãåæãéå§ããŸãã
ã¡ã¢
ããªã¢ã³ãåæã®å®è¡ããã£ã³ã»ã«ããã«ã¯ã[ããªã¢ã³ãåæçµæ] ãã¥ãŒã§ [Stop query] ãã¯ãªãã¯ããŸãã
åæã®ããã«åäžã® GitHub ãªããžããªãŸã㯠organization ãéžæãã
-
[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ã[+] ãã¯ãªãã¯ããŠæ°ããããŒã¿ããŒã¹ã远å ããŸãã
-
ããããããŠã³ ã¡ãã¥ãŒããã[GitHub ãªããžããªãã] ãŸã㯠[GitHub çµç¹ãŸãã¯ææè ã®ãã¹ãŠã®ãªããžããª] ãéžæããŸãã
-
ãã£ãŒã«ãã«ã䜿çšãããªããžããªãŸãã¯çµç¹ã®èå¥åãå ¥åããŸãã
ãšã©ãŒãšèŠå
MRVA ãå®è¡ãããšããšã©ãŒãšèŠåã 2 ã€ã®äž»èŠãªå Žæã«è¡šç€ºãããŸãã
-
Visual Studio Code ãšã©ãŒ: CodeQL ããã¯ãäœæããåæã GitHub ã«éä¿¡ããéã®åé¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å³äžé ã§ Visual Studio Code ãšã©ãŒãšããŠã¬ããŒããããŸãã æ å ±ã¯ã[åé¡] ãã¥ãŒã§ã確èªã§ããŸãã
-
ããªã¢ã³ãåæçµæ: ããªã¢ã³ãåæã®å®è¡ã«é¢ããåé¡ã¯ããã®ãã¥ãŒã§å ±åãããŸãã
çµæã®èª¿æ»
GitHub ã§ããªã¢ã³ãåæãå®è¡ããã¯ãŒã¯ãããŒãå®è¡ããããšããã«ã[ããªã¢ã³ãåæçµæ] ãã¥ãŒãéããçµæã¯æºåããæ¬¡ç¬¬è¡šç€ºãããŸãã ãã®ãã¥ãŒã䜿çšãããšãé²è¡ç¶æ³ã®ç£èŠããšã©ãŒã®ç¢ºèªãã³ã³ãããŒã©ãŒ ãªããžããªå ã®ã¯ãŒã¯ãã㌠ãã°ãžã®ã¢ã¯ã»ã¹ãè¡ãããšãã§ããŸãã
ããªã¢ã³ãåæã®å®è¡ãã¹ã±ãžã¥ãŒã«ãããŠããå Žåã[çµæ] ãã¥ãŒã¯èªåçã«éããŸãã æåã«ããã®ãã¥ãŒã«ã¯ãåæçšã«ã¹ã±ãžã¥ãŒã«ããããã¹ãŠã®ãªããžããªã®äžèЧã衚瀺ãããŸãã åãªããžããªãåæããããšããã¥ãŒãæŽæ°ãããçµæã®æ°ã®æŠèŠã衚瀺ãããŸãã ãªããžããªã®è©³çްãªçµæ (çµæãã¹ãå«ã) ã衚瀺ããã«ã¯ããªããžããªåãã¯ãªãã¯ããŸãã
ãªããžããªããšã«ãæ¬¡ã®æ å ±ã衚瀺ãããŸãã
-
ã¯ãšãªã§èŠã€ããçµæã®æ°
-
ãªããžããªã®è¡šç€ºç¯å²
-
åæããŸã å®è¡äžãå®äºããŠããã
-
ãªããžããªã GitHub ã«å¯ŸããŠæã€æã®æ°
ãªããžããªã®çµæã®è¡šç€º
-
ãªããžããªåãã¯ãªãã¯ãããšãåçµæã®æŠèŠã衚瀺ãããŸãã
-
GitHub ã®ãœãŒã¹ ãã¡ã€ã«ãžã®ãªã³ã¯ã䜿çšããŠãåçµæã§ç¢ºèªã§ããæ å ±ãæ¢çŽ¢ããŸãã ããŒã¿ ãã㌠ã¯ãšãªã®å Žåã¯ã[ãã¹ã®è¡šç€º] ãªã³ã¯ããããŸãã
çµæããšã¯ã¹ããŒããã
çµæããšã¯ã¹ããŒãããŠããã«åæããããã³ã©ãã¬ãŒã¿ãŒãšæ€èšãããããããšãã§ããŸãã [çµæ] ãã¥ãŒã§ã[Export results] ãã¯ãªãã¯ããŠãçµæã GitHub ã®ã·ãŒã¯ã¬ãã gist ãŸãã¯ã¯ãŒã¯ã¹ããŒã¹å ã® Markdown ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãã
ãªããžããªã®ã«ã¹ã¿ã ãªã¹ãã®äœæ
ã¡ã¢
CodeQL ã®åæã§ã¯ãã¯ãšãªãå®è¡ãã察象㮠CodeQL ããŒã¿ããŒã¹ãåžžã«å¿ èŠã§ãã ãªããžããªã®äžèЧã«å¯ŸããŠããªã¢ã³ãåæãå®è¡ãããšãçŸåš CodeQL ããŒã¿ããŒã¹ãããŠã³ããŒãã§ãããªããžããªã«å¯ŸããŠã®ã¿ã¯ãšãªãå®è¡ãããŸãã ãªããžããªãããªã¢ã³ãåæã«äœ¿çšã§ããããã«ããæåã®æ¹æ³ã¯ãCodeQL ã§ code scanning ãæå¹ã«ããããšã§ãã CodeQL ã䜿çšãã code scanning ã®æå¹åã®è©³çްã«ã€ããŠã¯ããã³ãŒã ã¹ãã£ã³ã®æ¢å®ã»ããã¢ããã®æ§æããåç §ããŠãã ããã
-
[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ã[ãªã¹ãã®è¿œå ] ã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã
-
ã¯ãšãªã®æ°ããååãå ¥åããEnter ããŒãæŒããŸãã
-
ãã¥ãŒã§ãªã¹ããéžæãã[+] ãã¯ãªãã¯ããŠãªããžããªããªã¹ãã«è¿œå ããŸãã
ãªããžããªã®ã«ã¹ã¿ã ãªã¹ãã®ç®¡ç
ãªã¹ãåãŸãã¯ãªã¹ãå ã®ãªããžããªåãå³ã¯ãªãã¯ããã³ã³ããã¹ã ã¡ãã¥ãŒãããªãã·ã§ã³ãéžæããããšã§ãã«ã¹ã¿ã ãªã¹ãã管çããã³ç·šéã§ããŸãã
ã«ã¹ã¿ã ãªã¹ãã¯ãã¯ãŒã¯ã¹ããŒã¹å
ã® databases.json
ãã¡ã€ã«ã«æ ŒçŽãããŸãã ãã®ãã¡ã€ã«ã Visual Studio Code ã§çŽæ¥ç·šéããå Žåã¯ããã¥ãŒ ããããŒã§ {} ãã¯ãªãã¯ãããšéãããšãã§ããŸãã
ããšãã°ãã¯ãšãªã®çµæãå«ããªããžããªã®ã»ãããåŒãç¶ãåæããå Žåã¯ã[ããªã¢ã³ãåæçµæ] ãã¥ãŒã® [ãªããžã㪠ãªã¹ãã®ã³ããŒ] ãã¯ãªãã¯ããŠãçµæãå«ããªããžããªã®ã¿ã®äžèЧã JSON ãšããŠã¯ãªããããŒãã«è¿œå ããŸãã
次ã®ã¹ããããã®äŸã§ã¯ãmy-organization/my-repository
ã«ã¯ãšãªã®çµæãå«ãŸããŠããŸãã
{
"name": "new-repo-list",
"repositories": [
"my-organization/my-repository"
]
}
ãã®åŸã[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ãdatabases.json
ãžãªããžããªã® new-repo-list
ãæ¿å
¥ããŸãã
GitHub Code Search ã䜿çšããŠã«ã¹ã¿ã ãªã¹ãã«ãªããžããªã远å ãã
ã¡ã¢
ãã®æ©èœã§ã¯ãGitHub ã®ã³ãŒãæ€çŽ¢ API ã«ããåŸæ¥ã®ã³ãŒãæ€çŽ¢ã䜿ãããŸãã 䜿çšããæ§æã«ã€ããŠè©³ããã¯ããã³ãŒãã®æ€çŽ¢ (ã¬ã¬ã·)ããåç §ããŠãã ããã
CodeQL æ¡åŒµæ©èœã§ã³ãŒãæ€çŽ¢ãçŽæ¥äœ¿çšããŠãGitHub ã®ãªããžããªã®ãµãã»ãããã«ã¹ã¿ã ãªã¹ãã«è¿œå ã§ããŸãã
ããšãã°ãGitHub äžã® rails
organization å
ã®ãã¹ãŠã®ãªããžããªã远å ããã«ã¯ãorg:rails
ã§æ€çŽ¢ããŸãã
æ€çŽ¢ãè¡ãããšã«ãæå€§ 1,000 åã®ãªããžããªãã«ã¹ã¿ã ãªã¹ãã«è¿œå ã§ããŸãã
-
[ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã§ããªããžããªã远å ãããªã¹ããéžæããŸãã æ°ãããªã¹ããäœæããããšãããªããžããªãæ¢ã«å«ãŸããŠããæ¢åã®ãªã¹ããéžæããããšãã§ããŸãã
-
éžæãããªã¹ããå³ã¯ãªãã¯ãã[GitHub Code Search ã§ãªããžããªã远å ãã] ãã¯ãªãã¯ããŸãã
-
ã¢ããªã±ãŒã·ã§ã³ã®äžéšã«è¡šç€ºããããããã¢ããã§ãæ€çŽ¢ããŒã®äžã«ããããããããŠã³ã®éžæè¢ããæ€çŽ¢ããèšèªãéžæããŸãã
-
æ€çŽ¢ããŒã«ã䜿çšããæ€çŽ¢ã¯ãšãªãå ¥åããEnter ããŒãæŒããŸãã
ããã¹ã Searching for repositories...
ã衚瀺ãããããã¯ã¹ã§ãã¢ããªã±ãŒã·ã§ã³ã®å³äžé
ã«æ€çŽ¢ã®é²è¡ç¶æ³ã衚瀺ã§ããŸãã [ãã£ã³ã»ã«] ãã¯ãªãã¯ãããšããªããžããªã¯äžèЧã«è¿œå ãããŸããã å®äºãããšãçµæã®ãªããžããªã [ããªã¢ã³ãåæãªããžããª] ãã¥ãŒã®ã«ã¹ã¿ã ãªã¹ãã®äžã®ããããããŠã³ã«è¡šç€ºãããŸãã
çµæãšããŠåŸããããªããžããªã®äžã«ã¯ãCodeQL ããŒã¿ããŒã¹ãå«ãŸããŠããªããã®ããããäžéšã®ãªããžããªã¯ Visual Studio Code ã® CodeQL æ¡åŒµæ©èœã«ããã¢ã¯ã»ã¹ãèš±å¯ããªãå ŽåããããŸãã ãªã¹ãã§åæãå®è¡ãããšã[ããªã¢ã³ãåæçµæ] ãã¥ãŒã«ãåæããããªããžããªãã¢ã¯ã»ã¹ãæåŠããããªããžããªãCodeQL ããŒã¿ããŒã¹ãååšããªãã£ããªããžããªã衚瀺ãããŸãã
ã»ã«ããã¹ããã ã©ã³ããŒäžã§ãã«ããªããžã㪠ããªã¢ã³ãåæã䜿ã£ãŠ CodeQL ã¯ãšãªãå®è¡ãã
ã»ã«ããã¹ããã ã©ã³ããŒã§ãã«ã ãªããžã㪠ããªã¢ã³ãåæã䜿ã£ãŠ CodeQL ã¯ãšãªãå®è¡ããã«ã¯ããŸãã»ã«ããã¹ããã ã©ã³ããŒãã³ã³ãããŒã©ãŒ ãªããžããªã«è¿œå ããŠããããšã確èªããããã³ã³ãããŒã©ãŒ ãªããžããªã organization ã¬ãã«ãŸã㯠Enterprise ã¬ãã«ã®ã©ã³ããŒã«ã¢ã¯ã»ã¹ã§ããããšã確èªããå¿ èŠããããŸãã
次ã«ã䜿ãã»ã«ããã¹ããã ã©ã³ããŒã® JSON 圢åŒã®ã©ãã«äžèЧãå«ããMRVA_RUNNER_OS
ãšããæ°ããã¢ã¯ã·ã§ã³ ãªããžããªå€æ°ãã³ã³ãããŒã©ãŒ ãªããžããªã«è¿œå ããå¿
èŠããããŸãã æ¬¡ã«äŸã瀺ããŸãã
["self-hosted", "macOS", "ARM64"]
ã¡ã¢
ã³ã³ãããŒã©ãŒ ãªããžããªã®èšå®ã®ã¢ã¯ã·ã§ã³ ãªããžããªå€æ°ã®äžã« MRVA_RUNNER_OS
倿°ãèšå®ããå¿
èŠããããŸããã¢ã¯ã·ã§ã³èšå®ãã¯ãŒã¯ãããŒã® .yml
ãã¡ã€ã«å
ã®ç°å¢å€æ°ãã¢ã¯ã·ã§ã³ ã·ãŒã¯ã¬ããã§ã¯ãããŸããã
ã倿°ã«æ
å ±ãæ ŒçŽããããåç
§ããŠãã ããã
詳现ã«ã€ããŠã¯ããèªå·±ãã¹ãã©ã³ããŒã®è¿œå ãããã³ãã°ã«ãŒãã䜿çšããŠã»ã«ããã¹ãã©ã³ããŒãžã®ã¢ã¯ã»ã¹ã管çããããåç §ããŠãã ããã
ã»ã«ããã¹ããã ã©ã³ããŒäžã§ãã«ããªããžã㪠ããªã¢ã³ãåæãå«ãã¯ãšãªãå®è¡ããå Žåãåæã¯å®å šã«ã»ã«ããã¹ããã ã©ã³ããŒäžã§å®è¡ãããŸãã æ°ããã¯ãŒã¯ãããŒãäœæããå¿ èŠã¯ãããŸããããVisual Studio Code æ¡åŒµæ©èœã® CodeQL ãã³ã³ãããŒã©ãŒ ãªããžããªãšããŠäœ¿ããªããžããªãæå®ããå¿ èŠããããŸãã åãªããžããªã®åæãå®äºãããšãçµæã衚瀺ããããã« VS Code ã«éä¿¡ãããŸãã