CodeQL ์์ ์์ญ ์ค์
์ต์คํ
์
์ github/codeql
๋ฆฌํฌ์งํ ๋ฆฌ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ฟผ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
-
codeql-custom-queries-LANGUAGE
ํ์์ผ๋ก ๋ช ๋ช ๋ ์ผ๋ จ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํฌํจํ๋ CodeQL ์์ ์์ ์์ญ์ ์ฌ์ฉํฉ๋๋ค. ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ธ์ด์ ๋ํ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ ๊ฐ๋ฐ์ ์์ํ ์ค๋น๊ฐ ๋์์ต๋๋ค. ์์ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์์ ์ฟผ๋ฆฌ๋ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ถ์ฅ๋ ๋ฐฉ๋ฒ์ ๋๋ค. -
CodeQL์ ๋ํ ๊ธฐ์กด ์์ ์์ญ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ ๊ณ ๊ธ ์ฌ์ฉ์์๊ฒ ๊ถ์ฅ๋ฉ๋๋ค.
-
CodeQL CLI ์ฌ์ฉ์๋ ์ถ์ถ๋ CodeQL CLI ๋ณด๊ด ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ด ์ ์์ต๋๋ค.
์ต์ 1: ์์ ์์ ์์ญ ์ฌ์ฉ(๊ถ์ฅ)
์ฐธ๊ณ ํญ๋ชฉ
CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์์ ์์
์์ญ์ ํ์ ๋ชจ๋๋ก ํฌํจ๋ฉ๋๋ค. git submodule update --remote
๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ธฐ์ ์ผ๋ก ํ์ ๋ชจ๋์ ์ต์ ์ํ๋ก ์ ์งํ๊ณ ์ต์ ๋ฒ์ ์ VS Code ์ต์คํ
์
๋ฐ CodeQL CLI๊ณผ(์) ํธํ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
-
vscode-codeql-starter ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ปดํจํฐ์ ๋ณต์ ํฉ๋๋ค.
git clone --recursive
๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ณต์ ํgit submodule update --init --remote
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ๋ชจ๋์ ํฌํจํด์ผ ํฉ๋๋ค. -
VS Code์์ ํ์ผ์ ํด๋ฆญํ ํ ํ์ผ์์ ์์ ์์ญ ์ด๊ธฐ... ๋ฅผ ํด๋ฆญํ์ฌ ์์ ์์ญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฒดํฌ ์์์์
vscode-codeql-starter.code-workspace
ํ์ผ์ ์ฝ๋๋ค.
์ต์ 2: CodeQL์ ๋ํ ๊ธฐ์กด ์์ ์์ญ ์ ๋ฐ์ดํธ(๊ณ ๊ธ)
-
VS Code์์ ํ์ผ์ ์ ํํ ๋ค์ ์์ ์์ญ์ ํด๋ ์ถ๊ฐ... ๋ฅผ ์ ํํ๊ณ CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ก์ปฌ ์ฒดํฌ ์์์ ์ฐพ์ต๋๋ค.
-
์ ํด๋ ๋๋ ์์ ์์ญ์ ํด๋ ์ถ๊ฐ... ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ฅํ ๋์ ์ธ์ด๋น ํ๋์ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
-
๊ฐ ๋์ ์ธ์ด ๋๋ ํฐ๋ฆฌ์
qlpack.yml
ํ์ผ์ ๋ง๋ญ๋๋ค(github/codeql
์main
๋ถ๊ธฐ์ ์ด๋ฏธ ์ด๋ฌํ ํ์ผ์ด ์์). ์ด๋ฅผ ํตํด CodeQL CLI์ ํด๋น ๋๋ ํฐ๋ฆฌ์ ๋์ ์ธ์ด์ ํด๋น ์ข ์์ฑ์ด ๋ฌด์์ธ์ง ์๋ ค์ค๋๋ค. CodeQL์(๋) ์ด๋ ค ์๋ ๋ชจ๋ ์์ ์์ญ ๋๋ ํฐ๋ฆฌ ๋๋ ์ฌ์ฉ์์ ๊ฒ์ ๊ฒฝ๋ก์์ ์ข ์์ฑ์ ์ฐพ์ต๋๋ค.์๋ฅผ ๋ค์ด
my-custom-cpp-pack
์ด๋ผ๋ ์ฌ์ฉ์ ์ง์ CodeQL ๋๋ ํฐ๋ฆฌ๋ฅผ C++์ฉ CodeQL ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข ์๋๋๋ก ํ๋ ค๋ฉด ๋ค์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋qlpack.yml
ํ์ผ์ ๋ง๋ญ๋๋ค.name: my-custom-cpp-pack version: 0.0.0 libraryPathDependencies: codeql/cpp-all
qlpack.yml
ํ์ผ์ ์ถ๊ฐํด์ผ ํ๋ ์ด์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ์ ์ฌ์ฉํ์ฌ ๋ถ์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ต์ 3: ์ถ์ถ๋ CodeQL CLI ๋ณด๊ด ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ ์ด๊ธฐ
์ฐธ๊ณ ํญ๋ชฉ
์ด ์ต์ ์ ๊ฒฝ์ฐ CodeQL CLI๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ CodeQL CLI ์ค์ ํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
VS Code์์ CodeQL CLI .zip ๋ณด๊ด ํ์ผ์ ์ถ์ถํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ด์ด CodeQL ๋๋ ํฐ๋ฆฌ(์: codeql-home
)๋ฅผ ๋ง๋ญ๋๋ค.