CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด
ํ๋ก์ ํธ๋ฅผ ๋ถ์ํ๋ ค๋ฉด ํด๋น ํ๋ก์ ํธ์ ๋ํ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ๋ก์ปฌ(ZIP ๋ณด๊ด ํ์ผ ๋๋ ๋ณด๊ดํ์ง ์์ ํด๋์์), ๊ณต์ฉ URL ๋๋ GitHub์ ํ๋ก์ ํธ URL์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋๋ CodeQL CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. CodeQL ๋ถ์์ ์ํ ์ฝ๋ ์ค๋น์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ค์ด๋ก๋
GitHub.com์์๋ ๋ถ์์ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ 200,000๊ฐ ์ด์์ ์คํ ์์ค ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ค์ด๋ก๋ํ ์ ์๋ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋์ง ํ์ธํ๊ณ , ์๋ ๊ฒฝ์ฐ REST API๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ด๋ก๋ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub REST API ์ค๋ช ์์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์ด ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ถ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
-
"๋ฐ์ดํฐ๋ฒ ์ด์ค" ๋ณด๊ธฐ์ ์ ๋ชฉ ํ์์ค์ ๋ง์ฐ์ค๋ก ๊ฐ๋ฆฌํค๊ณ ์ ์ ํ ์์ด์ฝ์ ์ ํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํฉ๋๋ค. ๋ก์ปฌ(ZIP ๋ณด๊ด ํ์ผ ๋๋ ๋ณด๊ดํ์ง ์์ ํด๋์์), ๊ณต์ฉ URL ๋๋ GitHub์ ํ๋ก์ ํธ URL์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
-
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ฉด "๋ฐ์ดํฐ๋ฒ ์ด์ค" ๋ณด๊ธฐ์ ํ์๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๊ธฐ ์ํ ๋ฉ๋ด ์ต์ ์ ๋ณด๋ ค๋ฉด ๋ชฉ๋ก์์ ํญ๋ชฉ์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํฉ๋๋ค. ํ ๋ฒ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
ํ
์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ ์๋ ์์ต๋๋ค. CodeQL CLI์(๋ฅผ) ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ์์ ์ฌ๋ฐ ํ
์คํธ๋ฅผ ์คํํ ๋ ํ
์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค(.testproj
์ต์คํ
์
์ด ์๋ ํด๋)๊ฐ ์์ฑ๋ฉ๋๋ค. ์ฟผ๋ฆฌ๊ฐ ์ฌ๋ฐ ํ
์คํธ์ ์คํจํ๋ ๊ฒฝ์ฐ ํ
์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Visual Studio Code(์ผ)๋ก ๊ฐ์ ธ์์ ์ค๋ฅ๋ฅผ ๋๋ฒ๊ทธํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ํ
์คํธ ์คํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ ํ
์คํธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ธ์ด๋ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฟผ๋ฆฌ ํํฐ๋ง
ํ์์ ๋ฐ๋ผ ํน์ ์ธ์ด์ ํด๋น ์ธ์ด์ ๋ํด ์์ฑ๋ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณด๋ ค๋ฉด ์ธ์ด ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ด ํํฐ๋ฅผ ์ ์ฉํ๋ฉด ๋ฉ๋๋ค.
-
์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ด ํํฐ๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ์ด๋๋ฐ์์ "์ธ์ด" ๋ณด๊ธฐ๋ฅผ ์ฝ๋๋ค.
-
์ ์ฉํ ์ธ์ด ํํฐ๋ฅผ ๋ง์ฐ์ค๋ก ๊ฐ๋ฆฌํจ ๋ค์ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
๋ค์ ๋จ๊ณ
CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ต์คํ ์ ์ ํตํด ํ๋ก์ ํธ๋ฅผ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด CodeQL ์ฟผ๋ฆฌ ์คํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.