์ฐธ๊ณ ํญ๋ชฉ
์ด ์ฝํ ์ธ ๋ CodeQL CLI์ ์ต์ ๋ฆด๋ฆฌ์ค์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ด ์์์ ๋ํ ์์ธํ ๋ด์ฉ์ https://github.com/github/codeql-cli-binaries/releases์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ด์ ๋ฆด๋ฆฌ์ค์์ ์ด ๋ช
๋ น์ ์ฌ์ฉํ ์ ์๋ ์ต์
์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ํฐ๋ฏธ๋์์ ์ต์
์ ์ฌ์ฉํ์ฌ --help ๋ช
๋ น์ ์คํํฉ๋๋ค.
๊ฐ์
codeql pack install [--force] <options>... -- <dir>
codeql pack install [--force] <options>... -- <dir>
์ค๋ช
์ด ํฉ์ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค.
์ด ๋ช ๋ น์ ํฉ์ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค. codeql-pack.lock.yml์ด ์๋ ๊ฒฝ์ฐ ํด๋น ์ ๊ธ ํ์ผ์ ์ง์ ๋ ๋ฒ์ ์ด qlpack.yml ํ์ผ์ ์ง์ ๋ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ํธํ๋๋ฉด ์ค์น๋ฉ๋๋ค. ์ ๊ธ ํ์ผ์ ์ง์ ๋ ์ข ์์ฑ ๋ฒ์ ์ด ์ด ํฉ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ํธํ๋์ง ์์ผ๋ฉด ์ด ๋ช ๋ น์ ๊ฐ ์ข ์์ฑ์ ์ต์ ํธํ ๋ฒ์ ์ ์ค์นํ์ฌ ์๋ก ์ ํํ ๋ฒ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ ๊ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด ๋ช ๋ น์ ๋ชจ๋ ์ข ์์ฑ์ ์ต์ ํธํ ๋ฒ์ ์ ์ค์นํ์ฌ ์ ์ ๊ธ ํ์ผ์ ๋ง๋ญ๋๋ค.
v2.6.0๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ต์
๊ธฐ๋ณธ ์ต์
<dir>
ํจํค์ง์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.
--format=<fmt>
์ถ๋ ฅ ํ์(text(๊ธฐ๋ณธ๊ฐ) ๋๋ json)์ ์ ํํฉ๋๋ค.
-f, --[no-]force
์ด๋ฏธ ์กด์ฌํ๋ ํฉ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ํ์ฉํฉ๋๋ค.
--[no-]allow-prerelease
์ํํ ๋ฒ์ ํ์ ์๊ฐ ์๋ ํฉ(์: X.Y.Z-qualifier) ์ฌ์ฉ์ ํ์ฉํฉ๋๋ค. ์ด ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ์ํํ ํฉ์ ๋ฌด์๋ฉ๋๋ค.
v2.11.3๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
--lock-override=<file>
[๊ณ ๊ธ] ์ข ์์ฑ ํ์ธ์ ๋ํ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ ๋์ฒด ์ ๊ธ ํ์ผ์ ์ง์ ํฉ๋๋ค.
--lock-output=<file>
[๊ณ ๊ธ] ์ข ์์ฑ ํ์ธ์ผ๋ก ์์ฑ๋ ์ ๊ธ ํ์ผ์ ์ ์ฅํ ๋์ฒด ์์น๋ฅผ ์ง์ ํฉ๋๋ค.
v2.14.1๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
--no-strict-mode
[๊ณ ๊ธ] strict ๋ชจ๋๋ฅผ ๋นํ์ฑํํ์ฌ --additional-packs
๋ฐ ๊ธฐํ ๋ก์ปฌ๋ก ํ์ธ๋ ์์น์์ ํจํค์ง๋ฅผ ํ์ธํ ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ๋ก์ปฌ๋ก ํ์ธ๋ ํจํค์ง๋ ๋ค์ด๋ก๋๋์ง ์์ผ๋ฉฐ
ํจํค์ง ์ ๊ธ์ ์ถ๊ฐ๋์ง ์์ต๋๋ค.
--mode=<mode>
[์ฌ์ฉ๋์ง ์์] ์ข ์์ฑ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค.
minimal-update (๊ธฐ๋ณธ๊ฐ): qlpack.yml ํ์ผ์ ๊ธฐ์กด ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก codeql-pack.lock.yml์ ์
๋ฐ์ดํธํ๊ฑฐ๋ ๋ง๋ญ๋๋ค. ๊ธฐ์กด codeql-pack.lock.yml์ด qlpack.yml์ ํ์ฌ ์ข
์์ฑ์ ์ถฉ์กฑํ์ง ์๋ ๊ฒฝ์ฐ ํ์์ ๋ฐ๋ผ ์ ๊ธ ํ์ผ์ด ์
๋ฐ์ดํธ๋ฉ๋๋ค.
upgrade: qlpack.yml ํ์ผ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ชจ๋ ์ข
์์ฑ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก codeql-pack.lock.yml์ ์
๋ฐ์ดํธํ๊ฑฐ๋ ๋ง๋ญ๋๋ค. ์ด ๋ชจ๋๋ 'codeql pack upgrade' ๋ช
๋ น์ผ๋ก ๋์ฒด๋์์ต๋๋ค.
verify: ๊ธฐ์กด codeql-pack.lock.yml์ด qlpack.yml ํ์ผ์ ์ง์ ๋ ์ข
์์ฑ์ ๋ํด ์ฌ์ ํ ์ ํจํ์ง ํ์ธํ๊ฑฐ๋ ์ ๊ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์คํจํฉ๋๋ค. ์ด ๋ชจ๋๋ 'codeql pack ci' ๋ช
๋ น์ผ๋ก ๋์ฒด๋์์ต๋๋ค.
no-lock: ๊ธฐ์กด codeql-pack.lock.yml์ ๋ฌด์ํ๊ณ qlpack.yml ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ธ์ ์ํํฉ๋๋ค. ์ ๊ธ ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํ์ง ์์ต๋๋ค.
use-lock: ๊ธฐ์กด codeql-pack.lock.yml ํ์ผ์ ์ฌ์ฉํ์ฌ ์ข
์์ฑ์ ํ์ธํ๊ฑฐ๋ ์ ๊ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๋ง๋ญ๋๋ค.
update: [์ฌ์ฉ๋์ง ์์] qlpack.yml ํ์ผ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ชจ๋ ์ข
์์ฑ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก codeql-pack.lock.yml์ ์
๋ฐ์ดํธํ๊ฑฐ๋ ๋ง๋ญ๋๋ค. ์ด ๋ชจ๋๋ 'codeql pack upgrade' ๋ช
๋ น์ผ๋ก ๋์ฒด๋์์ต๋๋ค.
ํจํค์ง ๋ ์ง์คํธ๋ฆฌ ์ธ๋ถ์์ QL ํฉ์ ํ์ธํ๋ ์ต์
--search-path=<dir>[:<dir>...]
QL ํฉ์ ์ฐพ์ ์ ์๋ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก์
๋๋ค. ๊ฐ ๋๋ ํฐ๋ฆฌ๋ QL ํฉ(๋๋ ๋ฃจํธ์ .codeqlmanifest.json ํ์ผ์ด ํฌํจ๋ ํฉ ๋ฒ๋ค) ๋๋ ๊ทธ๋ฌํ ๋๋ ํฐ๋ฆฌ ํ๋ ์ด์์ ์ง๊ณ ๋ถ๋ชจ์ผ ์ ์์ต๋๋ค.
๊ฒฝ๋ก์ ๋ ์ด์์ ๋๋ ํฐ๋ฆฌ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋๋ ํฐ๋ฆฌ์ ์์๊ฐ ์ฐ์ ์์๋ฅผ ์ ์ํฉ๋๋ค. ํ์ธํด์ผ ํ๋ ํฉ ์ด๋ฆ์ด ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ ์ค ๋ ์ด์์์ ์ผ์นํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฐ์ ํฉ๋๋ค.
์คํ ์์ค CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฒดํฌ ์์์์ ์ด๋ฅผ ๊ฐ๋ฆฌํค๋ฉด ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ ์ธ์ด ์ค ํ๋๋ฅผ ์ฟผ๋ฆฌํ ๋ ์๋ํด์ผ ํฉ๋๋ค.
์์ถ์ ํผ CodeQL ํด์ฒด์ธ์ ํ์ ๋ก CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฒดํฌ ์์ํ ๊ฒฝ์ฐ ์ด ์ต์
์ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํ์ ๋๋ ํฐ๋ฆฌ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฐพ์ ์ ์๋ QL ํฉ์ผ๋ก ํญ์ ๊ฒ์๋ฉ๋๋ค. (์ด ๊ธฐ๋ณธ๊ฐ์ด ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ณ ๊ตฌ์ฑ ํ์ผ์์ --search-path๋ฅผ ํ ๋ฒ๋ง ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค).
(์ฐธ๊ณ : Windows์์๋ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ;์
๋๋ค.)
--additional-packs=<dir>[:<dir>...]
์ด ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก์ด ์ง์ ๋ ๊ฒฝ์ฐ --search-path์ ์๋ ๋๋ ํฐ๋ฆฌ๋ณด๋ค ๋จผ์ ํฉ์ด ๊ฒ์๋ฉ๋๋ค. ์ด ์ฌ์ด์ ์์๋ ์ค์ํ์ง ์์ต๋๋ค. ์ด ๋ชฉ๋ก์ ํตํด ์๋ก ๋ค๋ฅธ ๋ ์์น์์ ํฉ ์ด๋ฆ์ ์ฐพ์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ๊ฒฝ๋ก์๋ ํ์๋๋ ํฉ์ ์ ๋ฒ์ ์ ์ผ์์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. ๋ฐ๋ฉด์ ๊ตฌ์ฑ ํ์ผ์์ ์ด ์ต์ ์ ์ฌ์ ์ํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ์ผ๋ถ ๋ด๋ถ ์์ ์์๋ ๊ตฌ์ฑ๋ ๊ฐ์ ์ฌ์ ์ํ์ฌ ์ฆ์ ์ด ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
(์ฐธ๊ณ : Windows์์๋ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ;์
๋๋ค.)
CodeQL ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ตฌ์ฑํ๋ ์ต์
--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 ์ต์
์ ์ฌ์ฉํ์ฌ ์ธ์ฆํ ์ ์์ต๋๋ค.
--github-auth-stdin
ํ์ค ์ ๋ ฅ์ ํตํด github.com์ GitHub Apps ํ ํฐ ๋๋ ๊ฐ์ธ์ฉ ์ก์ธ์ค ํ ํฐ์ ์ ๋ฌํ์ฌ github.com ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ์ธ์ฆํฉ๋๋ค.
GitHub Enterprise Server ์ปจํ
์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ์ธ์ฆํ๋ ค๋ฉด --registries-auth-stdin์ ์ ๋ฌํ๊ฑฐ๋ CODEQL_REGISTRIES_AUTH ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด GITHUB_TOKEN ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ์ ์๋ฉ๋๋ค.
์ผ๋ฐ ์ต์
-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๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.