์ฐธ๊ณ ํญ๋ชฉ
์ด ์ฝํ ์ธ ๋ CodeQL CLI์ ์ต์ ๋ฆด๋ฆฌ์ค์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ด ์์์ ๋ํ ์์ธํ ๋ด์ฉ์ https://github.com/github/codeql-cli-binaries/releases์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ด์ ๋ฆด๋ฆฌ์ค์์ ์ด ๋ช
๋ น์ ์ฌ์ฉํ ์ ์๋ ์ต์
์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ํฐ๋ฏธ๋์์ ์ต์
์ ์ฌ์ฉํ์ฌ --help
๋ช
๋ น์ ์คํํฉ๋๋ค.
๊ฐ์
codeql test extract [--print-database] [--source-root=<dir>] <options>... -- <testDirectory>
codeql test extract [--print-database] [--source-root=<dir>] <options>... -- <testDirectory>
์ค๋ช
[์ฐ๊ฒฐ] ํ ์คํธ ๋๋ ํฐ๋ฆฌ์ ๋ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋น๋ํฉ๋๋ค.
์ค์ ๋ก ํ ์คํธ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ง ์๊ณ ์ง์ ๋ ํ ์คํธ ๋๋ ํฐ๋ฆฌ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋น๋ํฉ๋๋ค. ํ ์คํธ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์์ QL ๋ฐ์ดํฐ ์ธํธ์ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ต์
๊ธฐ๋ณธ ์ต์
<testDirectory>
[ํ์] ํ ์คํธ ๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก์ ๋๋ค.
--database=<dir>
์์ฑ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์น๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์คํธ ๋๋ ํฐ๋ฆฌ ์์ฒด์ ์ด๋ฆ์ '.testproj'๊ฐ ์ถ๊ฐ๋ ์ด๋ฆ์ ํ์ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.
-D, --print-database
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ฐ์ดํฐ์ธํธ๊ฐ ์๋๋ผ, ์์ฑ ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
-s, --source-root=<dir>
[๊ณ ๊ธ] ํ ์คํธ ๋๋ ํฐ๋ฆฌ์ ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ฃจํธ ์์ค ์ฝ๋ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.
--search-path=<dir>[:<dir>...]
์ถ์ถ๊ธฐ ํฉ์ ์ฐพ์ ์ ์๋ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก. ๋๋ ํฐ๋ฆฌ๋ ์ถ์ถ๊ธฐ ํฉ ์์ฒด ๋๋ ์ฆ์ ํ์ ๋๋ ํฐ๋ฆฌ๋ก ์ถ์ถ๊ธฐ๋ฅผ ํฌํจ ํ๋ ๋๋ ํฐ๋ฆฌ ์ ์์ต๋๋ค.
๊ฒฝ๋ก์ ์ฌ๋ ค ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ํด๋น ์์๋ ์ฐ์ ์์๋ฅผ ์ ์ํฉ๋๋ค. ๋์ ์ด๋ฆ์ด ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ ์ค ํ๋ ์ด์์์ ์ผ์นํ๋ ๊ฒฝ์ฐ ์ง์ ๋ ์ฒซ ๋ฒ์งธ ํธ๋ฆฌ๊ฐ ์ฐ์ ์ ์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
CodeQL ๋๊ตฌ ์ฒด์ธ ์์ฒด์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ์ถ์ถ๊ธฐ๋ ํญ์ ์ฐพ์ ์ ์์ง๋ง ๋ณ๋๋ก ๋ถ์ฐ๋ ์ถ์ถ๊ธฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ด ์ต์
์ ์ ๊ณตํด์ผ ํฉ๋๋ค(์๋๋ฉด ์ฌ์ฉ์๋ณ ๊ตฌ์ฑ ํ์ผ์์ --search-path
์(๋ฅผ) ์ค์นํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค).
(์ฐธ๊ณ : Windows์์๋ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ;
์
๋๋ค.)
--cleanup
ํ ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋๋ ๋์ ์ ๊ฑฐํฉ๋๋ค.
--[no-]show-extractor-output
[๊ณ ๊ธ] ํ ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋๋ ์ถ์ถ๊ธฐ ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ํ์ํฉ๋๋ค. ํ ์คํธ ์ฌ๋ก๋ฅผ ๊ฐ๋ฐํ๊ฑฐ๋ ํธ์งํ๋ ๋์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ์ค๋ ๋์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค๋ณต๋๊ฑฐ๋ ์๋ชป๋ ํ์์ ์ถ๋ ฅ์ด ๋ฐ์ํ ์ ์์ผ๋ ์ฃผ์ํ์ธ์!
--[no-]check-undefined-labels
[๊ณ ๊ธ] ์ ์๋์ง ์์ ๋ ์ด๋ธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
--[no-]check-unused-labels
[๊ณ ๊ธ] ์ฌ์ฉํ์ง ์๋ ๋ ์ด๋ธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
--[no-]check-repeated-labels
[๊ณ ๊ธ] ๋ฐ๋ณต๋๋ ๋ ์ด๋ธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
--[no-]check-redefined-labels
[๊ณ ๊ธ] ๋ค์ ์ ์๋ ๋ ์ด๋ธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
--[no-]check-use-before-definition
[๊ณ ๊ธ] ์ ์ํ๊ธฐ ์ ์ ์ฌ์ฉ๋ ๋ ์ด๋ธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
--[no-]fail-on-trap-errors
[๊ณ ๊ธ] ํธ๋ฉ ๊ฐ์ ธ์ค๊ธฐ ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด 0์ด ์๋ ๊ฐ์ผ๋ก ์ข ๋ฃํฉ๋๋ค.
--[no-]include-location-in-star
[๊ณ ๊ธ] ์ถ์ฒ๊ฐ ๋ ํธ๋ฉ ํ์ผ์ ์์น๋ฅผ ์ธ์ฝ๋ฉํ๋ ์ํฐํฐ ID๋ฅผ ์์ฑํฉ๋๋ค. ํธ๋ฉ ์์ฑ๊ธฐ ๋๋ฒ๊น ์ ์ ์ฉํ ์ ์์ง๋ง ๋ฐ์ดํฐ ์ธํธ์์ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค.
--[no-]linkage-aware-import
[๊ณ ๊ธ] codeql ๋ฐ์ดํฐ ์ธํธ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์ฐ๊ฒฐ ์ธ์ (๊ธฐ๋ณธ๊ฐ) ์ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ์ ์ด ๋ถ๋ถ์ด ๋๋ฌด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์ ์ด ์ต์ ์ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ๋๋ฅผ ๋ฎ์ถ๋ ๋์ ์์ ์ ์งํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
v2.15.3
๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
--format=<fmt>
์ถ๋ ฅ ํ์(text
(๊ธฐ๋ณธ๊ฐ) ๋๋ json
)์ ์ ํํฉ๋๋ค.
์ผ๋ฐ ์ต์
-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
๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.