Skip to main content

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ

CodeQL ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์›๋ณธ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CodeQL์€(๋Š”) ๋‹ค์Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์œ ํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • GitHub.com์˜ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, GitHub CodeQL ์‚ฌ์šฉ ์•ฝ๊ด€ ์ฐธ์กฐ
  • GitHub Code Security๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋œ GitHub Team์˜ ์กฐ์ง ์†Œ์œ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

์ด ๋ฌธ์„œ์˜ ๋‚ด์šฉ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ์ฝ˜ํ…์ธ ๋Š” CodeQL CLI์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์š”์†Œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/github/codeql-cli-binaries/releases์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ ์ด ๋ช…๋ น์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ --help ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

Shell
codeql database create [--language=<lang>[,<lang>...]] [--github-auth-stdin] [--github-url=<url>] [--source-root=<dir>] [--threads=<num>] [--ram=<MB>] [--command=<command>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>

์„ค๋ช…

CodeQL ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์›๋ณธ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์˜ต์…˜

๊ธฐ๋ณธ ์˜ต์…˜

<database>

[ํ•„์ˆ˜] ๋งŒ๋“ค CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ถ€๋ชจ๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

--db-cluster ์˜ต์…˜์ด ์ง€์ •๋œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋™์ผํ•œ ์›๋ณธ ๋ฃจํŠธ์—์„œ ๋นŒ๋“œ๋œ ์—ฌ๋Ÿฌ ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฐฉํ•ด๋ฐ›์„ ์œ„์น˜์— ์žˆ์ง€ ์•Š์€ ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Maven ํ”„๋กœ์ ํŠธ์˜ target ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--[no-]overwrite

[๊ณ ๊ธ‰] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ค‘๋‹จํ•˜๋Š” ๋Œ€์‹  ์ด ๋ช…๋ น์„ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

--[no-]force-overwrite

[๊ณ ๊ธ‰] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๋”๋ผ๋„ ์‚ญ์ œํ•˜๊ณ  ์‹คํŒจํ•˜์ง€ ์•Š๋„๋ก ์ด ๋ช…๋ น์„ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--codescanning-config=<file>

[๊ณ ๊ธ‰] CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ดํ›„ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์ง€์ •ํ•˜๋Š” ์ฝ”๋“œ ๊ฒ€์ƒ‰ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ดํ›„ ๋‹จ๊ณ„์—์„œ ์ด ํŒŒ์ผ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ง€์ •๋œ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ์—†์ด codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„์„์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

--[no-]db-cluster

๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๋‹ค์–‘ํ•œ ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ "ํด๋Ÿฌ์Šคํ„ฐ"๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ช…๋ น์ค„์— ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

-l, --language=<lang>[,<lang>...]

์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

codeql ํ™•์ธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธํ˜• ์–ธ์–ด ์ถ”์ถœ๊ธฐ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

--db-cluster ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด, ์—ฌ๋Ÿฌ ๋ฒˆ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ๊ฐ’์ด ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์–ธ์–ด ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์„ ์ƒ๋žตํ•˜๊ณ  ๋ถ„์„ ์ค‘์ธ ์›๋ณธ ๋ฃจํŠธ๊ฐ€ GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ฒ€์‚ฌ์ธ ๊ฒฝ์šฐ, CodeQL CLI๋Š” GitHub API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ถ„์„ํ•  ์–ธ์–ด๋ฅผ ์ž๋™์œผ๋กœ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ GITHUB_ํ† ํฐ ๋˜๋Š” --github-auth-stdin ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ ์ž…๋ ฅ์„ ํ†ตํ•ด GitHub PAT ํ† ํฐ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--build-mode=<mode>

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๋นŒ๋“œ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.

๋ถ„์„ ์ค‘์ธ ์–ธ์–ด์— ๋”ฐ๋ผ ๋นŒ๋“œ ๋ชจ๋“œ ์„ ํƒ:

none: ์›๋ณธ ๋ฃจํŠธ๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C#, Java, JavaScript/TypeScript, Python ๋ฐ Ruby์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

autobuild: ์›๋ณธ ๋ฃจํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๋ ค ์‹œ๋„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. C/C++, C#, Go, Java/Kotlin ๋ฐ Swift์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

manual: ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•œ ๋นŒ๋“œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด ์›๋ณธ ๋ฃจํŠธ๋ฅผ ๋นŒ๋“œํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. C/C++, C#, Go, Java/Kotlin ๋ฐ Swift์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

--command์„(๋ฅผ) ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, '--build-mode manual'์„ ์ถ”๊ฐ€๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

v2.16.4๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-s, --source-root=<dir>

[๊ธฐ๋ณธ๊ฐ’: .] ๋ฃจํŠธ ์†Œ์Šค ์ฝ”๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ฒดํฌ ์•„์›ƒ ๋ฃจํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋‚ด์˜ ํŒŒ์ผ์€ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ์›๋ณธ ํŒŒ์ผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค ์ผ๋ถ€ ์ถœ๋ ฅ ํ˜•์‹์—์„œ๋Š” ํŒŒ์ผ์ด ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค.

-j, --threads=<num>

๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์— ๋งŽ์€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ˜ธ์ถœ๋œ ๋นŒ๋“œ ๋ช…๋ น์— ํžŒํŠธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค. 0์„ ์ „๋‹ฌํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ ์ฝ”์–ด๋‹น ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ -_N_์„ ์ „๋‹ฌํ•˜์—ฌ _N_๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ).

-M, --ram=<MB>

๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์— ๋งŽ์€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ˜ธ์ถœ๋œ ๋นŒ๋“œ ๋ช…๋ น์— ํžŒํŠธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

-c, --command=<command>

์ปดํŒŒ์ผ๋œ ์–ธ์–ด์˜ ๊ฒฝ์šฐ, ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ถ„์„ํ•˜๋„๋ก ํ•˜๋Š” ๋ช…๋ น์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น์€ ์ƒ์„ฑ๋œ ์ฝ”๋“œ ๋ฐ(๊ฒฝ์šฐ์— ๋”ฐ๋ผ) ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ธก ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋ช…๋ น์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋ช…๋ น์€ ์„ ํƒํ•œ ์–ธ์–ด ํŒฉ์˜ ์ถ”๋ก ์— ๋”ฐ๋ผ ์›๋ณธ ํŠธ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž๋™์œผ๋กœ ํŒŒ์•…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์–ธ์–ด์˜ ์ผ๋ถ€ ์กฐํ•ฉ์„ ์ง€์ •ํ•˜๋ ค๋ฉด ๋ช…์‹œ์  ๋นŒ๋“œ ๋ช…๋ น์ด _ํ•„์š”_ํ•ฉ๋‹ˆ๋‹ค.

--no-cleanup

[๊ณ ๊ธ‰] ์ข…๋ฃŒ ํ›„ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ์šฉ๋„๋กœ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

--no-pre-finalize

[๊ณ ๊ธ‰] ํ™œ์„ฑ CodeQL ์ถ”์ถœ๊ธฐ์—์„œ ์ง€์ •ํ•œ ์‚ฌ์ „ ์ข…๋ฃŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

--[no-]skip-empty

[๊ณ ๊ธ‰] ๋นŒ๋“œ ์ค‘์— ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์‹คํŒจํ•˜๋Š” ๋Œ€์‹  ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ณ ์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

--[no-]linkage-aware-import

[๊ณ ๊ธ‰] codeql ๋ฐ์ดํ„ฐ ์„ธํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์—ฐ๊ฒฐ ์ธ์‹ (๊ธฐ๋ณธ๊ฐ’) ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ์˜ ์ด ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™„์„ฑ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋Œ€์‹  ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

v2.15.3๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ค€ ๊ณ„์‚ฐ ์˜ต์…˜

--[no-]calculate-baseline

[๊ณ ๊ธ‰] ๋ถ„์„ ์ค‘์ธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ธฐ์ค€ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›๋ณธ ๋ฃจํŠธ๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ํ•œ, ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ฃจํŠธ์—์„œ๋„ ๋™์ž‘์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--[no-]sublanguage-file-coverage

[GitHub.com ๋ฐ GitHub Enterprise Server v3.12.0 ์ด์ƒ ์ „์šฉ] ํ•˜์œ„ ์–ธ์–ด ํŒŒ์ผ ์ ์šฉ ๋ฒ”์œ„ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. C ๋ฐ C++, Java ๋ฐ Kotlin, JavaScript ๋ฐ TypeScript์™€ ๊ฐ™์€ CodeQL ์ถ”์ถœ๊ธฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์–ธ์–ด์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ํŒŒ์ผ ์ ์šฉ ๋ฒ”์œ„ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐ, ํ‘œ์‹œ ๋ฐ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

v2.15.2๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ถœ๊ธฐ ์„ ํƒ ์˜ต์…˜

--search-path=<dir>[:<dir>...]

์ถ”์ถœ๊ธฐ ํŒฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก. ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์ถ”์ถœ๊ธฐ ํŒฉ ์ž์ฒด ๋˜๋Š” ์ฆ‰์‹œ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ถ”์ถœ๊ธฐ๋ฅผ ํฌํ•จ ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๋กœ์— ์—ฌ๋ ค ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ˆœ์„œ๋Š” ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ์ด๋ฆ„์ด ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ง€์ •๋œ ์ฒซ ๋ฒˆ์งธ ํŠธ๋ฆฌ๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

CodeQL ๋„๊ตฌ ์ฒด์ธ ์ž์ฒด์™€ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” ์ถ”์ถœ๊ธฐ๋Š” ํ•ญ์ƒ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ„๋„๋กœ ๋ถ„์‚ฐ๋œ ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž๋ณ„ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ --search-path์„(๋ฅผ) ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค).

(์ฐธ๊ณ : Windows์—์„œ๋Š” ๊ฒฝ๋กœ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ;์ž…๋‹ˆ๋‹ค.)

GitHub API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์–ธ์–ด๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌ์„ฑํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค

-a, --github-auth-stdin

ํ‘œ์ค€ ์ž…๋ ฅ์„ ํ†ตํ•ด GitHub ์•ฑ ํ† ํฐ ๋˜๋Š” ๊ฐœ์ธ์šฉ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด GITHUB_TOKEN ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

-g, --github-url=<url>

์‚ฌ์šฉํ•  GitHub ์ธ์Šคํ„ด์Šค์˜ URL์ž…๋‹ˆ๋‹ค. ์ƒ๋žต๋œ ๊ฒฝ์šฐ CLI๋Š” ๊ฒ€์‚ฌ ๊ฒฝ๋กœ์—์„œ ์ด์— ๋Œ€ํ•œ ์ž๋™ ๊ฐ์ง€๋ฅผ ์‹œ๋„ํ•˜๋ฉฐ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ https://github.com/์ž…๋‹ˆ๋‹ค

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๊ตฌ์„ฑํ•˜๋Š” ์˜ต์…˜

--registries-auth-stdin

์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ <registry_url>=<token> ์Œ ๋ชฉ๋ก์„ ์ „๋‹ฌํ•˜์—ฌ GitHub Enterprise Server ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๋‘ ๊ฐœ์˜ GitHub Enterprise Server ์ธ์Šคํ„ด์Šค์— ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CODEQL_REGISTRIES_AUTH ๋ฐ GITHUB_TOKEN ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค. github.com ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—๋งŒ ์ธ์ฆํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๊ฐ„๋‹จํ•œ --github-auth-stdin ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์œ„ ์ˆ˜์ค€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ •๋ฆฌ ์˜ต์…˜

--max-disk-cache=<MB>

์ค‘๊ฐ„ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๋””์Šคํฌ ์บ์‹œ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ณต๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ํฌ๊ธฐ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ‰๊ฐ€๊ธฐ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ํฌ๊ธฐ์™€ ์ฟผ๋ฆฌ์˜ ๋ณต์žก์„ฑ์— ๋”ฐ๋ผ "ํ•ฉ๋ฆฌ์ ์ธ" ์–‘์˜ ์บ์‹œ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ์‚ฌ์šฉ๋Ÿ‰๋ณด๋‹ค ๋†’์€ ํ•œ๋„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ถ”๊ฐ€ ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฏ€๋กœ ์ดํ›„ ์ฟผ๋ฆฌ์˜ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--min-disk-free=<MB>

[๊ณ ๊ธ‰] ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์˜ ๋ชฉํ‘œ๋Ÿ‰์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

--max-disk-cache๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ์ด ๊ฐ’ ์•„๋ž˜๋กœ ๋–จ์–ด์ง€๋ฉด ํ‰๊ฐ€๊ธฐ๋Š” ๋””์Šคํฌ ์บ์‹œ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

--min-disk-free-pct=<pct>

[๊ณ ๊ธ‰] ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์˜ ๋ชฉํ‘œ ๋น„์œจ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

--max-disk-cache๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ์ด ๋ฐฑ๋ถ„์œจ ์•„๋ž˜๋กœ ๋–จ์–ด์ง€๋ฉด ํ‰๊ฐ€๊ธฐ๋Š” ๋””์Šคํฌ ์บ์‹œ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

--cache-cleanup=<mode>

์บ์‹œ๋ฅผ ํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ ๊ทน์ ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

clear: ์ƒˆ๋กœ ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ƒํƒœ๋กœ ํŠธ๋ฆฌ๋ฐํ•˜์—ฌ ์ „์ฒด ์บ์‹œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

trim(๊ธฐ๋ณธ๊ฐ’): ๋ช…์‹œ์ ์œผ๋กœ "์บ์‹œ๋œ" ์กฐ๊ฑด์ž๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค.

fit: ๋””์Šคํฌ ์บ์‹œ์— ๋Œ€ํ•ด ์ •์˜๋œ ํฌ๊ธฐ ์ œํ•œ์ด ๊ด€์ฐฐ๋˜์–ด ํ•„์š”ํ•œ ๋งŒํผ ์ค‘๊ฐ„์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

overlay: ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.

--cleanup-upgrade-backups

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐฑ์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ถ”์  ์˜ต์…˜

--no-tracing

[๊ณ ๊ธ‰] ์ง€์ •๋œ ๋ช…๋ น์„ ์ถ”์ ํ•˜์ง€ ๋ง๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ํ•„์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

--extra-tracing-config=<tracing-config.lua>

[๊ณ ๊ธ‰] ์ถ”์ ๊ธฐ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ถ”์ ๊ธฐ์˜ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋ช…๋ น์˜ ์ผ๋ถ€๋กœ ์‹คํ–‰๋˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค๋ฅธ ๋„๊ตฌ์˜ ์‹คํ–‰์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”์ถœ๊ธฐ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ์ถ”์ ๊ธฐ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋ช…๋ น ์‚ฌ์šฉ์ž ์ง€์ • ์˜ต์…˜

--working-dir=<dir>

[๊ณ ๊ธ‰] ์ง€์ •๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ์ธ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด, ๋ช…๋ น์ด codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ์— ์ „๋‹ฌ๋œ --source-root ๊ฐ’(์žˆ๋Š” ๊ฒฝ์šฐ)์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. --source-root ์ธ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์ด ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

--no-run-unnecessary-builds

[๊ณ ๊ธ‰] ์ƒ์„ฑ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ถ”์ ์— ์˜์กดํ•˜๋Š” ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ง€์ •๋œ ๋นŒ๋“œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์ด์œ ๋กœ ์ธํ•ด ๋ถ€์ž‘์šฉ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— CodeQL์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ถ”์ถœ๊ธฐ ๋™์ž‘ ์ œ์–ด ์˜ต์…˜

-O, --extractor-option=<extractor-option-name=value>

CodeQL ์ถ”์ถœ๊ธฐ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. extractor-option-name์€(๋Š”) extractor_name.group1.group2.option_name ๋˜๋Š” group1.group2.option_name์˜ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. extractor_option_name์ด(๊ฐ€) ์ถ”์ถœ๊ธฐ ์ด๋ฆ„์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ, ํ‘œ์‹œ๋œ ์ถ”์ถœ๊ธฐ๋Š” group1.group2.option_name ์˜ต์…˜์„ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ต์…˜ group1.group2.option_name์„ ์„ ์–ธํ•˜๋Š” ๋ชจ๋“  ์ถ”์ถœ๊ธฐ์—์„œ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. value์€(๋Š”) ์ค„์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์ค„ ์˜ต์…˜์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์— ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ, ๋™์ž‘์€ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์ด ์˜ˆ์ƒํ•˜๋Š” ํ˜•์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์˜ต์…˜์€ ์ œ๊ณต๋œ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์˜ต์…˜์€ ์ œ๊ณต๋œ ๋ชจ๋“  ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์€ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์„ ํ†ตํ•ด --extractor-options-file์ด(๊ฐ€) ์ œ๊ณต๋œ ํ›„์— ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค init ๋˜๋Š” codeql database begin-tracing์— ์ „๋‹ฌ๋˜๋ฉด ์˜ต์…˜์ด ๊ฐ„์ ‘ ์ถ”์  ํ™˜๊ฒฝ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ์—์„œ codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”์  ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ์›ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์˜ต์…˜๋„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ถ”์ถœ๊ธฐ์—์„œ ์„ ์–ธํ•œ ์˜ต์…˜์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•˜์—ฌ CodeQL ์ถ”์ถœ๊ธฐ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://codeql.github.com/docs/codeql-cli/extractor-options์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

--extractor-options-file=<extractor-options-bundle-file>

์ถ”์ถœ๊ธฐ ์˜ต์…˜ ๋ฒˆ๋“ค ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ถœ๊ธฐ ์˜ต์…˜ ๋ฒˆ๋“ค ํŒŒ์ผ์€ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” JSON ํŒŒ์ผ(ํ™•์žฅ๋ช… .json) ๋˜๋Š” YAML ํŒŒ์ผ(ํ™•์žฅ๋ช… .yaml ๋˜๋Š” .yml)์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์—๋Š” ์ตœ์ƒ์œ„ ๋งต ํ‚ค 'extractor'๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ์•„๋ž˜์—๋Š” ์ถ”์ถœ๊ธฐ ์ด๋ฆ„์ด ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€ ๋งต ํ‚ค๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋„์˜ ์ถ”๊ฐ€ ์ˆ˜์ค€์€ ์ค‘์ฒฉ๋œ ์ถ”์ถœ๊ธฐ ๊ทธ๋ฃน์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ฌธ์ž์—ด ๋ฐ ๋ฐฐ์—ด ์˜ต์…˜์€ ๋ฌธ์ž์—ด ๋ฐ ๋ฐฐ์—ด ๊ฐ’์ด ์žˆ๋Š” ์ง€๋„ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

์ถ”์ถœ๊ธฐ ์˜ต์…˜ ๋ฒˆ๋“ค ํŒŒ์ผ์€ ์ง€์ •๋œ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ถ”์ถœ๊ธฐ ์˜ต์…˜ ๋ฒˆ๋“ค ํŒŒ์ผ์—์„œ ๋™์ผํ•œ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ๋™์ž‘์€ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์ด ์˜ˆ์ƒํ•˜๋Š” ํ˜•์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์˜ต์…˜์€ ์ œ๊ณต๋œ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์˜ต์…˜์€ ์ œ๊ณต๋œ ๋ชจ๋“  ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์€ ์ถ”์ถœ๊ธฐ ์˜ต์…˜์„ ํ†ตํ•ด --extractor-option์ด(๊ฐ€) ์ œ๊ณต๋˜๊ธฐ ์ „์— ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค init ๋˜๋Š” codeql database begin-tracing์— ์ „๋‹ฌ๋˜๋ฉด ์˜ต์…˜์ด ๊ฐ„์ ‘ ์ถ”์  ํ™˜๊ฒฝ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ์—์„œ codeql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”์  ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ์›ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์˜ต์…˜๋„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ถ”์ถœ๊ธฐ์—์„œ ์„ ์–ธํ•œ ์˜ต์…˜์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•˜์—ฌ CodeQL ์ถ”์ถœ๊ธฐ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://codeql.github.com/docs/codeql-cli/extractor-options์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ผ๋ฐ˜ ์˜ต์…˜

-h, --help

์ด ๋„์›€๋ง ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

-J=<opt>

[๊ณ ๊ธ‰] ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” JVM์— ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

(๊ณต๋ฐฑ์„ ํฌํ•จํ•˜๋Š” ์˜ต์…˜์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•˜์„ธ์š”.)

-v, --verbose

์ถœ๋ ฅ๋˜๋Š” ์ง„ํ–‰๋ฅ  ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

-q, --quiet

์ถœ๋ ฅ๋˜๋Š” ์ง„ํ–‰๋ฅ  ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ค„์ž…๋‹ˆ๋‹ค.

--verbosity=<level>

[๊ณ ๊ธ‰] ์„ธ๋ถ€ ์ •๋ณด ํ‘œ์‹œ ์ˆ˜์ค€์„ ์˜ค๋ฅ˜, ๊ฒฝ๊ณ , ์ง„ํ–‰๋ฅ , ์ง„ํ–‰๋ฅ +, ์ง„ํ–‰๋ฅ ++, ์ง„ํ–‰๋ฅ +++ ์ค‘ ํ•˜๋‚˜๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. -v ๋ฐ -q๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

--logdir=<dir>

[๊ณ ๊ธ‰] ํƒ€์ž„์Šคํƒฌํ”„์™€ ์‹คํ–‰ ์ค‘์ธ ํ•˜์œ„ ๋ช…๋ น์˜ ์ด๋ฆ„์„ ํฌํ•จํ•˜๋Š” ์ƒ์„ฑ๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒ์ผ์— ์ž์„ธํ•œ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

(๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ด๋ฆ„์œผ๋กœ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด --log-to-stderr์„(๋ฅผ) ์ง€์ •ํ•˜๊ณ  stderr๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค.)

--common-caches=<dir>

[๊ณ ๊ธ‰] ๋‹ค์šด๋กœ๋“œํ•œ QL ํŒฉ ๋ฐ ์ปดํŒŒ์ผ๋œ ์ฟผ๋ฆฌ ๊ณ„ํš๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ CLI ์‹คํ–‰ ๊ฐ„์— ์œ ์ง€๋˜๋Š” ๋””์Šคํฌ์˜ ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๊ธฐ๋ณธ๊ฐ’์€ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ฆ„์ด ์ง€์ •๋œ .codeql ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์„ค์ •๋˜๋ฉฐ, ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

v2.15.2๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.