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 resolve upgrades --dbscheme=<file> <options>...

์„ค๋ช…

[์‹ฌ์ธต ์—ฐ๊ฒฐ] ์›์‹œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

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

์˜ต์…˜

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

--dbscheme=<file>

[ํ•„์ˆ˜] ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ํ˜„์žฌ dbscheme์ž…๋‹ˆ๋‹ค.

--format=<fmt>

์ถœ๋ ฅ ํ˜•์‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

lines (๊ธฐ๋ณธ๊ฐ’): ์—…๊ทธ๋ ˆ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ๊ฐ ํ•œ ์ค„๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

json: ์—…๊ทธ๋ ˆ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ์˜ JSON ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

--just-check

์ถœ๋ ฅ์„ ์ธ์‡„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ 0์œผ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ฝ”๋“œ 1๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ถœํ•˜๋Š” ๋ช…๋ น์˜ ๋ช…๋ น์ค„ ์˜ต์…˜

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

์—…๊ทธ๋ ˆ์ด๋“œ ๋ ˆ์‹œํ”ผ๊ฐ€ ํฌํ•จ๋œ QL ํŒฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” QL ํŒฉ(๋˜๋Š” ๋ฃจํŠธ์— .codeqlmanifest.json ํŒŒ์ผ์ด ํฌํ•จ๋œ ํŒฉ ๋ฒˆ๋“ค) ๋˜๋Š” ๊ทธ๋Ÿฌํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ง๊ณ„ ๋ถ€๋ชจ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜คํ”ˆ ์†Œ์Šค CodeQL ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ฒดํฌ ์•„์›ƒ์—์„œ ์ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฟผ๋ฆฌํ•  ๋•Œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

--additional-packs=<dir>[:<dir>...]

[๊ณ ๊ธ‰] ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์ด ์ง€์ •๋œ ๊ฒฝ์šฐ --search-path์— ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณด๋‹ค ๋จผ์ € ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์ด์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ชฉ๋ก์„ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์œ„์น˜์—์„œ ํŒฉ ์ด๋ฆ„์„ ์ฐพ์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

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

--target-dbscheme=<file>

์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋Š” ๋Œ€์ƒ dbscheme์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ตœ๋Œ€ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

--target-sha=<sha>

[๊ณ ๊ธ‰] dbscheme ํŒŒ์ผ ๋Œ€์‹  ๋Œ€์ƒ dbscheme์˜ ๋‚ด๋ถ€ ํ•ด์‹œ๋ฅผ ์ œ๊ณตํ•˜๋Š” --target-dbscheme์˜ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.

--[no-]allow-downgrades

์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๊ด€๋ จ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

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

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