Skip to main content

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ํŒŒ์ผ

[์—ฐ๊ฒฐ] ์ง€์ •๋œ CodeQL ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ํŒŒ์ผ์„ ์ธ๋ฑ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

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

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

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

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

์ฐธ๊ณ  ํ•ญ๋ชฉ

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

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

๊ฐœ์š”

Shell
codeql database index-files --language=<lang> [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>

์„ค๋ช…

[์—ฐ๊ฒฐ] ์ง€์ •๋œ CodeQL ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ํŒŒ์ผ์„ ์ธ๋ฑ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

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

--include, --exclude ๋ฐ --prune ์˜ต์…˜์€ ๋ชจ๋‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” GLOB ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹จ์ผ "?"๋Š” ์Šฌ๋ž˜์‹œ/๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ผ "*"๋Š” ์Šฌ๋ž˜์‹œ/๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž ์ˆ˜์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจํ„ด "**"๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ „์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜

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

<database>

[ํ•„์ˆ˜] ์ƒ์„ฑ ์ค‘์ธ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. codeql database init๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ถœํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

-l, --language=<lang>

[ํ•„์ˆ˜] ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์„ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ถ”์ถœ๊ธฐ์ž…๋‹ˆ๋‹ค.

-j, --threads=<num>

์ถ”์ถœ๊ธฐ์—์„œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ œ์•ˆ์œผ๋กœ์จ ์ถ”์ถœ๊ธฐ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. CODEQL_THREADS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์ด ์ด ์˜ต์…˜๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

-M, --ram=<MB>

์ถ”์ถœ๊ธฐ์—์„œ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ œ์•ˆ์œผ๋กœ์จ ์ถ”์ถœ๊ธฐ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. CODEQL_RAM ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์ด ์ด ์˜ต์…˜๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

--working-dir=<dir>

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

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

-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๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ธ๋ฑ์‹ฑ๋œ ํŒŒ์ผ ์ง‘ํ•ฉ์„ ์ œํ•œํ•˜๋Š” ์˜ต์…˜

--include-extension=<.ext>

์ง€์ •๋œ ํ™•์žฅ๋ช…์„ ๊ฐ–๋Š” ๊ฒ€์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ™•์žฅ๋ช… ์•ž์— ์ ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด --include-extension .xml ์ „๋‹ฌ์—๋Š” ".xml" ํ™•์žฅ๋ช…์„ ๊ฐ–๋Š” ๋ชจ๋“  ํŒŒ์ผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋ถ€์ •๋œ --include ์˜ต์…˜๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

--include=<glob>

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

--include ์˜ต์…˜์€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ์ดํ›„ ์˜ต์…˜์ด ์ด์ „ ์˜ต์…˜์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด --include ** --include !sub/*.ts --include sub/main.*๋Š” sub/main.ts๋ฅผ ํฌํ•จํ•˜๊ณ (sub/main.*์— ์˜ํ•ด ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ), sub/index.ts๋ฅผ ์ œ์™ธํ•˜๋ฉฐ(!sub/*.ts์— ์˜ํ•ด ์ œ์™ธ๋˜๊ธฐ ๋•Œ๋ฌธ) sub/test.js๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(์ดํ›„์— ์ œ์™ธ๋˜์ง€ ์•Š๊ณ  **์— ์˜ํ•ด ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ).

--also-match=<glob>

๊ฒ€์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ฐ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒฐ๊ณผ๊ฐ€ ์ง€์ •๋œ GLOB์™€ ์ผ์น˜ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ --include์™€ ๊ตฌ์กฐ ๋ฐ ํ•ด์„์ด ๋™์ผํ•˜์ง€๋งŒ --include์™€ ํ•จ๊ป˜ ์ ์šฉ๋˜๋Š” ๋ณ„๋„์˜ GLOB ์‹œํ€€์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

--exclude=<glob>

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

--prune=<glob>

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

--size-limit=<bytes>

ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋œ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ ์ œํ•œ์€ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋˜๋Š” "k" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” KiB(ํ‚ค๋น„๋ฐ”์ดํŠธ), "m" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” MiB(๋ฉ”๋น„๋ฐ”์ดํŠธ), "g" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” GiB(๊ธฐ๋น„๋ฐ”์ดํŠธ) ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋ชจ๋“  include ์˜ต์…˜์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

--total-size-limit=<bytes>

ํ™•์ธ๋œ ๋ชจ๋“  ํŒŒ์ผ์˜ ๊ฒฐํ•ฉ๋œ ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋œ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์ด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ ์ œํ•œ์€ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋˜๋Š” "k" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” KiB(ํ‚ค๋น„๋ฐ”์ดํŠธ), "m" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” MiB(๋ฉ”๋น„๋ฐ”์ดํŠธ), "g" ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” GiB(๊ธฐ๋น„๋ฐ”์ดํŠธ) ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๋Œ€์ƒ์— ๋Œ€ํ•œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ ๋งํฌ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

--[no-]find-any

์ตœ๋Œ€ ํ•˜๋‚˜์˜ ์ผ์น˜ ํ•ญ๋ชฉ์„ ์ฐพ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์ผ์น˜ ํ•ญ๋ชฉ์ด ์•„๋‹˜).

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

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

-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๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.