Skip to main content

ํ…Œ์ŠคํŠธ ์ˆ˜๋ฝ

์‹คํŒจํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

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

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

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

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

์ฐธ๊ณ  ํ•ญ๋ชฉ

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

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

๊ฐœ์š”

Shell
codeql test accept <options>... -- <test|dir>...

์„ค๋ช…

์‹คํŒจํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” codeql test run์ด ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ๋‚จ๊ธด .actual ํŒŒ์ผ์˜ ์ด๋ฆ„์„ .expected๋กœ ๋ฐ”๊พธ์–ด ๋‚˜์ค‘์— ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ํ…Œ์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ†ต๊ณผ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋„๋ก ํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํŒŒ์ผ ์กฐ์ž‘์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๊ตฌ๋ฌธ์ด ๋” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ต์…˜

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

<test|dir>...

๊ฐ ์ธ์ˆ˜๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

  • ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” .ql ๋˜๋Š” .qlref ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • ์‹คํ–‰ํ•  ํŒŒ์ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

--slice=<N/M>

[๊ณ ๊ธ‰] ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋ฅผ ๋Œ€๋žต ๊ฐ™์€ ํฌ๊ธฐ์˜ _M_๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ทธ ์ค‘ Nth๋ฒˆ์งธ ์กฐ๊ฐ๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋™ ๋ณ‘๋ ฌํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--[no-]strict-test-discovery

[๊ณ ๊ธ‰] ํ…Œ์ŠคํŠธ๋กœ ํ™•๊ณ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” .ql ํŒŒ์ผ๊ณผ ์œ ์šฉํ•œ ์ฟผ๋ฆฌ์ธ .ql ํŒŒ์ผ์„ ๊ตฌ๋ถ„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ์˜ ํŒŒ์ผ ์ •๋ ฌ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ง€์‹์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹๋ณ„ํ•ด์•ผ ํ•˜๋Š” IDE์™€ ๊ฐ™์€ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

qlpack.yml์ด tests ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๋Š” QL ํŒฉ ๋‚ด์—์„œ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  .ql ํŒŒ์ผ์€ ํ…Œ์ŠคํŠธ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ ๊ทธ ์™ธ๋ถ€์˜ .ql ํŒŒ์ผ์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. tests ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๋Š” QL ํŒฉ์—์„œ .ql ํŒŒ์ผ์€ ํ•ด๋‹น .expected ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ…Œ์ŠคํŠธ๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.

์ผ๊ด€์„ฑ์„ ์œ„ํ•ด .qlref ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์ผ ์ˆ˜ ์—†๋”๋ผ๋„ .qlref ํŒŒ์ผ์€ .ql ํŒŒ์ผ๊ณผ ๋™์ผํ•œ ๊ทœ์น™์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

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

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