์ฟผ๋ฆฌ ๋์๋ง ํ์ผ ํ ์คํธ ์์๋ณด๊ธฐ
์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ Markdown์ผ๋ก ๋ ๋๋งํ์ฌ ํ ์คํธํจ์ผ๋ก์จ CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ก๋ํ๊ฑฐ๋ ์ฝ๋ ์ค์บ์์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ํจํ์ง ํ์ธํฉ๋๋ค.
์ฟผ๋ฆฌ ๋์๋ง์ ์ฟผ๋ฆฌ์ ํจ๊ป ์ ๊ณต๋๋ ์ค๋ช ์๋ก, ์ฟผ๋ฆฌ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ์ค๋ช ํ๊ณ ์ฟผ๋ฆฌ๊ฐ ์๋ณํ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ์ ์ฟผ๋ฆฌ์ ๋ํด ์ฟผ๋ฆฌ ๋์๋ง์ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์์ CodeQL์ ๊ธฐ์ฌํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
CodeQL CLI์๋ ์ฟผ๋ฆฌ ๋์๋ง์ ํ ์คํธํ๊ณ ์ฝํ ์ธ ๋ฅผ Markdown์ผ๋ก ๋ ๋๋งํ์ฌ IDE์ ์ฝํ ์ธ ๋ฅผ ์ฝ๊ฒ ๋ฏธ๋ฆฌ ๋ณผ ์ ์๋ ๋ช ๋ น์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ๋ช ๋ น์ ์ฌ์ฉํ์ฌ CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ก๋ํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ๊ธฐ ์ ์ ์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค. CodeQL CLI 2.7.1๋ถํฐ CodeQL ๋ถ์ ์ค์ ์์ฑ๋ SARIF ํ์ผ์ Markdown ๋ ๋๋ง๋ ์ฟผ๋ฆฌ ๋์๋ง์ ํฌํจํ ์๋ ์์ผ๋ฏ๋ก ์ฝ๋ ์ค์บ UI์ ์ฟผ๋ฆฌ ๋์๋ง์ ํ์ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ CodeQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ถ์์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ์ ์กฐ๊ฑด
- ์ฟผ๋ฆฌ ๋์๋ง(
.qhelp
) ํ์ผ์๋ ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฆ์ ๊ฐ์ง ํจ๊ป ์ ๊ณต๋๋ ์ฟผ๋ฆฌ(.ql
) ํ์ผ์ด ์์ด์ผ ํฉ๋๋ค. - ์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ ์ฟผ๋ฆฌ ๋์๋ง ์ค๋ช ์์ ํ์ค ๊ตฌ์กฐ์ ์คํ์ผ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฟผ๋ฆฌ ๋์๋ง ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
codeql generate query-help
์คํ
๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ ํ ์คํธํ ์ ์์ต๋๋ค.
codeql generate query-help <qhelp|query|dir|suite> --format=<format> [--output=<dir|file>]
์ด ๋ช
๋ น์ ๊ฒฝ์ฐ <qhelp|query|dir|suite>
๋ .qhelp
ํ์ผ์ ๊ฒฝ๋ก, .ql
ํ์ผ์ ๊ฒฝ๋ก, ์ฟผ๋ฆฌ ๋ฐ ์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก ๋๋ ์ฟผ๋ฆฌ ์งํฉ์ ๊ฒฝ๋ก์ฌ์ผ ํฉ๋๋ค.
์ฟผ๋ฆฌ ๋์๋ง์ด ๋ ๋๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ --format
์ต์
์ ์ง์ ํด์ผ ํฉ๋๋ค. ์ง๊ธ์ ์ฟผ๋ฆฌ ๋์๋ง์ Markdown์ผ๋ก ๋ ๋๋งํ๋๋ก markdown
์(๋ฅผ) ์ง์ ํด์ผ ํฉ๋๋ค.
์ด --output
์ต์
์ ๋ ๋๋ง๋ ์ฟผ๋ฆฌ ๋์๋ง์ ์ ์ฅํ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
.qhelp
ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ ๋๋ ํ๋ ์ด์์.qhelp
ํ์ผ์ ์ ์ํ๋ ์ฟผ๋ฆฌ ๋ชจ์์ ๊ฒฝ์ฐ--output
๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ ๋ด์ ํ์ผ ์ด๋ฆ์.qhelp
ํ์ผ ์ด๋ฆ์์ ํ์๋ฉ๋๋ค.- ๋จ์ผ
.qhelp
๋๋.ql
ํ์ผ์ ๊ฒฝ์ฐ--output
์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ถ๋ ฅ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ ๋๋ง๋ ์ฟผ๋ฆฌ ๋์๋ง์ดstdout
์ ๊ธฐ๋ก๋ฉ๋๋ค.
์ฟผ๋ฆฌ ๋์๋ง ํ์ผ์ ํ ์คํธํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์ต์ ์ ๋ํ ์ ์ฒด ๋ด์ฉ์ generate query-help์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ฒฐ๊ณผ
๋ช
๋ น์ ์คํํ๋ฉด CodeQL์ด(๊ฐ) ํจ๊ป ์ ๊ณต๋๋ .ql
ํ์ผ์ด ์๋ ๊ฐ .qhelp
ํ์ผ์ ๋ ๋๋ง์ ์๋ํฉ๋๋ค. ๋จ์ผ ํ์ผ์ ๊ฒฝ์ฐ --output
์ต์
์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ ๋๋ง๋ ์ฝํ
์ธ ๊ฐ stdout
์ ์ธ์๋ฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ๋ ๋๋ง๋ ์ฝํ
์ธ ๋ ์ง์ ๋ ์ถ๋ ฅ ๊ฒฝ๋ก์ ์ ์ฅ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก CodeQL CLI์(๋) ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค.
- ์ฟผ๋ฆฌ ๋์๋ง ์์์ ๋ํ ์ ํจํ์ง ์์ ์ค๋ช ์ด ์๊ณ ์ฟผ๋ฆฌ ๋์๋ง์ด ์ ํจํ์ง ์์ต๋๋ค.
- ๋ช
๋ น์ ์ง์ ๋
.qhelp
ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ด ํจ๊ป ์ ๊ณต๋๋.ql
ํ์ผ๊ณผ ๋์ผํ์ง ์์ต๋๋ค. - ๋ช
๋ น์ ์ง์ ๋
.ql
ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ด ํจ๊ป ์ ๊ณต๋๋.qhelp
ํ์ผ๊ณผ ๋์ผํ์ง ์์ต๋๋ค.
๋ช
๋ น์ --warnings
์ต์
์ ํฌํจํ์ฌ CodeQL CLI์ ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฆด ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ generate query-help์(๋ฅผ) ์ฐธ์กฐํ์ธ์.