CodeQL ๊ตฌ์ฑ ํ์ผ์์ ๋ช ๋ น ์ต์ ์ง์ ์์๋ณด๊ธฐ
์ฌ์ฉ์๋ณ ๊ตฌ์ฑ ํ์ผ์ ๋ช ๋ น์ ๋ํ ๊ธฐ๋ณธ ๋๋ ์์ฃผ ์ฌ์ฉ๋๋ ์ต์ ์ ์ ์ฅํ ์ ์์ต๋๋ค.
๋ค์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก CodeQL CLI ๋ช ๋ น ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์ ์ ํ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ค์์ ์ง์ ์ง์ .
- CodeQL์ด(๊ฐ) ๋ช
๋ น์ด ์คํ๋ ๋๋ง๋ค ๊ด๋ จ ์ต์
์ ์ค์บํ๋ ๊ตฌ์ฑ(๋๋
config
) ํ์ผ์์ ์ง์ .
๋ช
๋ น์ ์คํํ ๋๋ง๋ค ๋ณ๊ฒฝ๋๋ ์ต์
์ ๊ฒฝ์ฐ, ๋ช
๋ น์ค์์ ๊ฐ์ ์ง์ ํ๋ ๊ฒ์ด CodeQL์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฅ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์
๋๋ค. config
ํ์ผ์ ์ต์
์ ์ ์ฅํ๋ ๊ฒ์ ์์ฃผ ์ฌ์ฉํ๋ ์ต์
์ ์ง์ ํ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค. ๋ํ ์ ๊ธฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ง์ CodeQL ํฉ์ ๊ฒ์ ๊ฒฝ๋ก์ ์ถ๊ฐํ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
CodeQL ๊ตฌ์ฑ ํ์ผ ์ฌ์ฉํ๊ธฐ
.config/codeql/
ํ์ ๋๋ ํฐ๋ฆฌ์ ํ(Linux ๋ฐ macOS) ๋๋ ์ฌ์ฉ์ ํ๋กํ(Windows) ๋๋ ํฐ๋ฆฌ ์๋์ config
ํ์ผ์ ์ ์ฅํด์ผ ํฉ๋๋ค. ์๋ค ๋ค์ด $HOME/.config/codeql/config
์
๋๋ค.
์ต์ ์ ์ง์ ํ๋ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<command> <subcommand> <option> <value>
๋ ์ด์์ ๋ช ๋ น์ ๋์ผํ ์ต์ ์ ์ ์ฉํ๋ ค๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๊ด๋ จ ์๋ ๋ชจ๋
<subcommand>
์ ๋ํ ์ต์ ์ ์ง์ ํ๋<subcommand>
์(๋ฅผ) ์๋ตํฉ๋๋ค. <command>
๋ฐ<subcommand>
๋ ๋ค ์๋ตํ๊ณ , ๋ชจ๋<command>
๋ฐ<subcommand>
์ต์ ๊ณผ ๊ด๋ จ๋ ์ต์ ์ ์ ์ฒด์ ์ผ๋ก ์ง์ ํฉ๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
config
ํ์ผ์ ์ต์ ํ๋๊ทธ์ ๊ฐ ์ฌ์ด์ ๊ณต๋ฐฑ๋ง ํ์ฉํฉ๋๋ค. CodeQL์(๋) ์ต์ ๊ฐ์ ์ง์ ํ๋ ๋ฐ=
์(๋ฅผ) ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๋ช
๋ น์ค์์ ์ต์
์ ์ง์ ํ๋ฉด ํด๋น ์ต์
์ ๋ํด ์ ์๋
config
๊ฐ์ด ์ฌ์ ์๋ฉ๋๋ค. <command>
,<subcommand>
์ ๋ํด ๋๋ ์ ์ญ์ ์ผ๋ก ๋ ์ด์์ ์ต์ ์ ์ง์ ํ๋ ค๋ฉด ์ต์ ๋น ํ ์ค์ ์ฌ์ฉํฉ๋๋ค.
์์
-
CSV ํ์์ผ๋ก
codeql database analyze
์ ์ํด ์์ฑ๋ ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.database analyze --format csv
์ฌ๊ธฐ์๋
database analyze
์ ๋์ผํ--format
์ต์ ์ด ์ ๋ฌ๋๋ ๋์ ์คํ๋๋ ํ์ ์์ค ๋ช ๋ น์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ช ๋ น ๋ฐ ํ์ ๋ช ๋ น์ ์ง์ ํด์ผ ํฉ๋๋ค. -
CodeQL ๋ช ๋ น์ ์คํํ ๋ ์ฌ์ฉํ RAM(4096MB) ๋ฐ ์ค๋ ๋ ์(4)๋ฅผ ์ ์ํ๋ ค๋ฉด ๋ณ๋์ ์ค์์ ๋ค์์ ์ง์ ํฉ๋๋ค.
--ram 4096 --threads 4
-
CodeQL์ ๋ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ์ญ์ ์ผ๋ก ์ง์ ํ์ฌ CodeQL ํฉ(์ค์น ๋๋ ํฐ๋ฆฌ์ ํ์ ๊ฐ ์๋)์ ์ค์บํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
--search-path <path-to-directory>