์ข ๋ฃ ์ฝ๋ ์ ๋ณด
CodeQL CLI์(๋) ์ข ๋ฃ ์ฝ๋๋ก ์คํ๋๋ ๊ฐ ๋ช ๋ น์ ์ํ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์ด ์ข ๋ฃ ์ฝ๋๋ ํ์ ๋ช ๋ น์ด๋ CodeQL CLI์ ์์กดํ๋ ๋ค๋ฅธ ๋๊ตฌ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
0
์ฑ๊ณต, ์ ์ ์ข ๋ฃ.
1
์ด ๋ช ๋ น์ผ๋ก ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด "์๋์"์ธ ๊ฒ์ ์ฑ๊ณต์ ์ผ๋ก ํ์ธํ์ต๋๋ค.
์ด ์ข ๋ฃ ์ฝ๋๋ ํ ์คํธ ์คํ, dataset check, ์ฟผ๋ฆฌ ํ์,์ถ์ถ๊ธฐ ํ์ธ ๊ฐ์ ๋ช ๊ฐ์ง ๋ช ๋ น์์๋ง ์ฌ์ฉ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด๋ฌํ ๋ช ๋ น์ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
2
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
CLI๋ stderr์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์๋๋ค.
์ฌ๊ธฐ์๋ codeql
๋๋ผ์ด๋ฒ๊ฐ ์ถ์ถ๊ธฐ ๋์์์ ๋ด๋ถ ์ค๋ฅ์ ์ฌ์ฉ์ ๊ด๋ จ ์ค๋ฅ๋ฅผ ๊ตฌ๋ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ถ์ถ๊ธฐ๊ฐ ๋ด๋ถ ์ค๋ฅ๋ก ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
3
์์ ๊ด๋ฆฌ์๊ฐ CodeQL ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์์ ๊ด๋ฆฌ์๊ฐ CodeQL CLI์ ๋ํ Java ์ฝ๋๋ฅผ ์์ ์์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ CodeQL ์ค์น์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
32
์ถ์ถ๊ธฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฃ์(๋ฅผ) ์คํํ ๋ ๋ถ์ํ ์ฝ๋๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
33
ํ๋ ์ด์์ ์ฟผ๋ฆฌ ํ๊ฐ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค.
๋ณ๋ ฌ๋ก ํ๊ฐ๋ ์ผ๋ถ ์ฟผ๋ฆฌ๋ ์๊ฐ์ด ์ด๊ณผ๋์ง ์์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฟผ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ๋ ํ์์ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
98
ํ๊ฐ๊ฐ ๋ช ์์ ์ผ๋ก ์ทจ์๋์์ต๋๋ค.
99
CodeQL CLI์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค.
๊ทธ๋ ๋ค๊ณ ํด์ ๋ชจ๋ ์ปดํจํฐ์ ๋ฌผ๋ฆฌ์ RAM์ด ์ฌ์ฉ๋ ๊ฒ์ ์๋๋๋ค.
--ram
์ต์
์ ์ฌ์ฉํ์ฌ ์ ํ์ ๋ช
์์ ์ผ๋ก ์ค์ ํ์ง ์์ผ๋ฉด JVM์ด ์์ ์ ๊ธฐ๋ณธ ์ ํ์ ๊ฒฐ์ ํฉ๋๋ค.
100
์น๋ช ์ ์ธ ๋ด๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฒ๊ทธ๋ก ๊ฐ์ฃผ๋์ด์ผ ํฉ๋๋ค. CLI๋ ์ผ๋ฐ์ ์ผ๋ก stderr์ ์ฝ์ด ์ค๋ฅ ์ค๋ช
์ ์๋๋ค.
๋ฒ๊ทธ๋ฅผ ์ฌํํ ์ ์๋ ๊ฒฝ์ฐ, --logdir
์(๋ฅผ) ์ฌ์ฉํ์ฌ ๋ก๊ทธ ํ์ผ์ ๋ฒ๊ทธ ๋ณด๊ณ ์์ GitHub์ ๋ณด๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ธฐํ
codeql
์(๋ฅผ) ์คํํ๋ JVM ๋ด์์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์์ฒด์ ์ผ๋ก ์ ํํ nonzero ์ข
๋ฃ ์ฝ๋๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ CodeQL ์ค์น์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ CodeQL ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ํธ์คํธ ์์คํ
์ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Unix ์์คํ
์ ์ข
๋ฃ ์ฝ๋ 137์ ๋ฐํํ์ฌ ํด๋น ์ปค๋์ด CodeQL์ด(๊ฐ) ์์๋ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ์์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ codeql database analyze
๋จ๊ณ์ ๋ํ โram=
ํ๋๊ทธ๋ฅผ ์์ ํ๊ณ ์ํฌํ๋ก๋ฅผ ๋ค์ ์คํํ๋ ๊ฒ์
๋๋ค.