์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ ์์๋ณด๊ธฐ
์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ์ ํ ์คํธํ ์ฟผ๋ฆฌ ํ ๊ฐ์ ์์น๋ฅผ ์ ์ํ๋ ํ ์คํธ ํ์ผ์ ๋๋ค.
test run
ํ์ ๋ช
๋ น์ ํ
์คํธ ๋๋ ํฐ๋ฆฌ์ ์ํ์ง ์๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋๋ก ์ง์ํ๋ ค๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
ํ
์คํธ๋ก ์คํํ๋ ค๋ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ์ ์ฌ์ฉํ์ฌ ํ ์คํธํ ์ฟผ๋ฆฌ์ ์์น๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ ์ค์ ์ฝ๋๋ฒ ์ด์ค์์ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ธฐ ์ํ ๊ฒฝ๊ณ ๋ฐ ๊ฒฝ๋ก ์ฟผ๋ฆฌ์ ๋ํ ํ ์คํธ๋ฅผ ๋ง๋ค ๋ ์ ์ฉํฉ๋๋ค. ํ ์คํธ ์ฝ๋์ ์ฌ๋ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ ๋๋ ํฐ๋ฆฌ๋ ์ฟผ๋ฆฌ์ ๋ค์ํ ์ธก๋ฉด์ ์ด์ ์ ๋ง์ถฅ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ ์คํธ ์ฝ๋์ ๊ฐ ๋๋ ํฐ๋ฆฌ์ ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ์ ์ถ๊ฐํ์ฌ ํ ์คํธํ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค.
- ํ
์คํธ ๋๋ ํฐ๋ฆฌ์ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด๋ ์ผ๋ฐ์ ์ผ๋ก QL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ ํ
์คํธํ๊ธฐ ์ํด ์ฟผ๋ฆฌ๋ฅผ ๋ช
์์ ์ผ๋ก ์์ฑํ ๋ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ฟผ๋ฆฌ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์กฐ๊ฑด์ ํธ์ถ์ด ๋ช ๊ฐ๋ง ํฌํจ๋์ด ์ถ๋ ฅ์ ํ
์คํธํ ์ ์๋๋ก
select
๋ฌธ์ ๋ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ ์ ์
๊ฐ ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ(.qlref
)์ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์ฐพ์ ์์น๋ฅผ ์ ์ํ๋ ํ ์ค์ ํฌํจํฉ๋๋ค. ์์น๋ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ CodeQL ํฉ์ ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.
์ด๋ ์ผ๋ฐ์ ์ผ๋ก .qlref
์(๋ฅผ) ํฌํจํ๋ CodeQL ํฉ, ํ
์คํธ ํฉ์ dependencies
๋ธ๋ก์ ์ง์ ๋ CodeQL ํฉ, ๋๋ CodeQL ํฉ์ ์ ์ด์ ์ข
์์ฑ์
๋๋ค.
์์คํ ๊ฐ์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด ๋ชจ๋ ์ด์ ์ฒด์ ์ ๊ฒฝ๋ก์์ ์ฌ๋์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์์
JavaScript ๊ฒฝ๊ณ ์ฟผ๋ฆฌ๋ฅผ ํ ์คํธํ๋ ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ: DeadAngularJSEventListener.qlref
javascript/ql/test
์ ์๋ CodeQL ํฉ์ qlpack.yml
ํ์ผ(https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml)์ codeql/javascript-queries
์(๋ฅผ) ์ข
์์ฑ์ผ๋ก ์ ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ ์ฐธ์กฐ ํ์ผ์ codeql/javascript-queries
CodeQL ํฉ์ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ฆฌ์ ์์น๋ฅผ ์ ์ํฉ๋๋ค.
AngularJS/DeadAngularJSEventListener.ql
๋ ๋ค๋ฅธ ์๋ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ ํ ์คํธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.