๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์์ ์ฌ์ฉํ ๋๊ท๋ชจ CodeQL ์ฟผ๋ฆฌ ์คํ ์ ๋ณด
MRVA(๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์)๋ฅผ ์ฌ์ฉํ๋ฉด Visual Studio Code์ GitHub์ ์๋ ์ต๋ 1,000๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์์ CodeQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์ ๋ํด MRVA๋ฅผ ์คํํ๋ฉด ๋ถ์ํ ์ ์๋ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด ์ฟผ๋ฆฌ๊ฐ ์คํ๋ฉ๋๋ค. GitHub๋ CodeQL์ ์ฌ์ฉํ์ฌ code scanning์ ์คํํ๋ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ์์ฒ ๊ฐ์ ๊ณต์ฉ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ธฐ๋ณธ ๋ถ๊ธฐ์ ๋ํ ์ต์ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค๊ณ ์ ์ฅํฉ๋๋ค.
๋ถ์ ๋ชฉ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ๊ธฐ๋ณธ ์ค์ ๋๋ ๊ณ ๊ธ ์ค์ ์ ์ฌ์ฉํ์ฌ GitHub์์ CodeQL์(๋ฅผ) ์ฌ์ฉํ์ฌ code scanning์(๋ฅผ) ์ฌ์ฉํด์ผ ํฉ๋๋ค. CodeQL์ ์ฌ์ฉํ์ฌ code scanning์ ์ฌ์ฉํ๋๋ก ์ค์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ฝ๋ ์ค์บ์ ์ํ ๊ธฐ๋ณธ ์ค์ ๊ตฌ์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
MRVA๊ฐ GitHub.com์์ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ
MRVA๋ฅผ ์คํํ๋ฉด ๋ถ์์ด GitHub Actions์(๋ฅผ) ์ฌ์ฉํ์ฌ ์์ ํ ์คํ๋ฉ๋๋ค. ์ํฌํ๋ก๋ฅผ ๋ง๋ค ํ์๋ ์์ง๋ง Visual Studio Code์ฉ CodeQL ํ์ฅ์ด ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฌ์ฉํด์ผ ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ถ์์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋๋ก VS Code(์ผ)๋ก ์ ์ก๋ฉ๋๋ค.
CodeQL ์ต์คํ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ์์ฑ์ด ์๋ CodeQL ํฉ์ ๋น๋ํฉ๋๋ค. CodeQL ํฉ ๋ฐ ์ ํํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์ GitHub์ API ์๋ํฌ์ธํธ์ ๊ฒ์๋์ด ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ GitHub Actions ๋์ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์ํฌํ๋ก๋ ์ฌ๋ฌ ๋ณ๋ ฌ ์์ ์ ์คํํ์ฌ ๋ชฉ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด CodeQL ์ฟผ๋ฆฌ๋ฅผ ์คํํด ์ฟผ๋ฆฌ ์คํ์ ์ต์ ํํฉ๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ถ์๋๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ฒ๋ฆฌ๋๊ณ VS Code์ ํ์๋ฉ๋๋ค.
ํ์ ์กฐ๊ฑด
-
์ฒซ ๋ฒ์งธ ๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์์ ์คํํ๋ ค๋ฉด ๋จผ์ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
-
์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋น์ด ์์ ์ ์์ง๋ง ์ปค๋ฐ์ด ํ๋ ์ด์ ์์ด์ผ ํฉ๋๋ค.
-
GitHub.com์์ ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ๋ง ๋ถ์ํ๋ ค๋ ๊ฒฝ์ฐ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ํ์ ์ฌ๋ถ๋ "public"์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๋ณํ ๋ถ์์ ๋ฌด๋ฃ์ ๋๋ค.
-
GitHub.com์์ ํ๋ผ์ด๋น ๋๋ ๋ด๋ถ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ถ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ํ์ ์ฌ๋ถ๋ "private"์ด์ด์ผ ํฉ๋๋ค.
๋ฌด๋ฃ ์ ํ์ ์ด๊ณผํ๋ ํ๋ผ์ด๋น ๋๋ ๋ด๋ถ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ณํ ๋ถ์์ ์คํํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ์์ ์๊ฐ(๋ถ)์ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์์๊ฒ ์ฒญ๊ตฌ๋ฉ๋๋ค. ๋ฌด๋ฃ ์๊ฐ(๋ถ) ๋ฐ ์ฒญ๊ตฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub Actions ์ฒญ๊ตฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
MRVA์ ๋ํ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค์
-
"๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค์ ์ ํด๋ฆญํ์ฌ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ํ๋๋ฅผ ํ์ํฉ๋๋ค.
-
์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฌ์ฉํ GitHub์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์์ ์์ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
-
GitHub๋ก ์ธ์ฆํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ง์นจ์ ๋ฐ๋ผ ๊ณ์ ์ ๋ก๊ทธ์ธํฉ๋๋ค. ์๋ฃ๋๋ฉด GitHub ์ธ์ฆ์ ํ๋กฌํํธ์์ Visual Studio Code์์ ์ด ์ ์๋ ๊ถํ์ ์์ฒญํ ์ ์์ผ๋ฉฐ Open์ ํด๋ฆญํฉ๋๋ค.
์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ด๋ฆ์ CodeQL ์ต์คํ ์ ์ ๋ํ ์ค์ ์ ์ ์ฅ๋ฉ๋๋ค. ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ค์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
MRVA๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ์ฟผ๋ฆฌ ์คํ
-
๊ธฐ๋ณธ์ ์ผ๋ก "๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์๋ ๋ถ์ ์ค์ธ ์ธ์ด์ ๋ํ GitHub.com์ ์์ 10๊ฐ, ์์ 100๊ฐ ๋ฐ ์์ 1,000๊ฐ ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ SUBDOMAIN.ghe.com์์ ํธ์คํธ๋๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ชฉ๋ก์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
ํ์์ ๋ฐ๋ผ ์ ๋ฆฌํฌ์งํ ๋ฆฌ, ์กฐ์ง ๋๋ ๋ชฉ๋ก์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
-
"๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด + ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
๋๋กญ๋ค์ด ๋ฉ๋ด์์ From a GitHub repository ๋๋ All repositories of GitHub org or owner๋ฅผ ์ ํํฉ๋๋ค.
-
ํ๋์ ์ฌ์ฉํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์กฐ์ง์ ์๋ณ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
-
-
์ฟผ๋ฆฌ๋ฅผ ์คํํ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค.
-
์คํํ ์ฟผ๋ฆฌ๋ฅผ ์ด๊ณ ์ฟผ๋ฆฌ ํ์ผ์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํ ๋ค์ CodeQL: ๋ณํ ๋ถ์ ์คํ์ ์ ํํ์ฌ ๋ณํ ๋ถ์์ ์์ํฉ๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
๋ณํ ๋ถ์ ์คํ์ ์ทจ์ํ๋ ค๋ฉด "๋ณํ ๋ถ์ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์์ Stop query๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ถ์์ ์ํด ๋จ์ผ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์กฐ์ง ์ ํ
-
"๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด + ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
๋๋กญ๋ค์ด ๋ฉ๋ด์์ From a GitHub repository ๋๋ All repositories of GitHub org or owner๋ฅผ ์ ํํฉ๋๋ค.
-
ํ๋์ ์ฌ์ฉํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์กฐ์ง์ ์๋ณ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ค๋ฅ ๋ฐ ๊ฒฝ๊ณ
MRVA๋ฅผ ์คํํ ๋ ์ค๋ฅ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ ๋ ๊ฐ์ง ์ฃผ์ ์์น๊ฐ ์์ต๋๋ค.
-
Visual Studio Code ์ค๋ฅ: CodeQL ํฉ์ ๋ง๋ค๊ณ GitHub์ ๋ถ์์ ๋ณด๋ด๋ ๋ฐ ๊ด๋ จ๋ ๋ฌธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ฅธ์ชฝ ํ๋จ์ ์๋ Visual Studio Code ์ค๋ฅ๋ก ๋ณด๊ณ ๋ฉ๋๋ค. ์ ๋ณด๋ "๋ฌธ์ " ๋ณด๊ธฐ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
"๋ณํ ๋ถ์ ๊ฒฐ๊ณผ": ๋ณํ ๋ถ์ ์คํ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ ์ด ๋ณด๊ธฐ์์ ๋ณด๊ณ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ ํ์
GitHub์์ ๋ณํ ๋ถ์์ ์คํํ๋ ์ํฌํ๋ก๊ฐ ์คํ๋์๋ง์ "๋ณํ ๋ถ์ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ๊ฐ ์ด๋ฆฌ๊ณ ์ค๋น๊ฐ ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค. ์ด ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋งํ๊ณ , ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ , ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํฌํ๋ก ๋ก๊ทธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ณํ ๋ถ์ ์คํ์ด ์์ฝ๋๋ฉด "๊ฒฐ๊ณผ" ๋ณด๊ธฐ๊ฐ ์๋์ผ๋ก ์ด๋ฆฝ๋๋ค. ์ฒ์์๋ ๋ณด๊ธฐ์ ๋ถ์์ ์ํด ์์ฝ๋ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ถ์ํ ๋ ๋ณด๊ธฐ๊ฐ ์ ๋ฐ์ดํธ๋์ด ๊ฒฐ๊ณผ ์์ ๋ํ ์์ฝ์ด ํ์๋ฉ๋๋ค. ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์์ธํ ๊ฒฐ๊ณผ(๊ฒฐ๊ณผ ๊ฒฝ๋ก ํฌํจ)๋ฅผ ๋ณด๋ ค๋ฉด ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด ๋ค์์ ํ์ธํ ์ ์์ต๋๋ค.
-
์ฟผ๋ฆฌ์์ ์ฐพ์ ๊ฒฐ๊ณผ ์
-
๋ฆฌํฌ์งํ ๋ฆฌ์ ํ์ ์ฌ๋ถ
-
๋ถ์์ด ๊ณ์ ์คํ ์ค์ธ์ง ๋๋ ์๋ฃ๋์๋์ง ์ฌ๋ถ
-
๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ GitHub์ ์๋ ๋ณํ ํ์ ์
๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ ๋ณด๊ธฐ
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ํด๋ฆญํ์ฌ ๊ฐ ๊ฒฐ๊ณผ์ ์์ฝ์ ํ์ํฉ๋๋ค.
-
GitHub์ ์๋ณธ ํ์ผ์ ๋ํ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๊ฒฐ๊ณผ์ ์ฌ์ฉํ ์ ์๋ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค. ๋ฐ์ดํฐ ํ๋ฆ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ถ๊ฐ "๊ฒฝ๋ก ํ์" ๋งํฌ๊ฐ ์์ต๋๋ค.
๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ
์ถ๊ฐ ๋ถ์์ ์ํด ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ณด๋ด๊ฑฐ๋ ๊ณต๋ ์์ ์์ ๋ ผ์ํ ์ ์์ต๋๋ค. "๊ฒฐ๊ณผ" ๋ณด๊ธฐ์์ Export results๋ฅผ ํด๋ฆญํ์ฌ GitHub์ ๋น๋ฐ gist ๋๋ ์์ ์์ญ์ Markdown ํ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ณด๋ ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก ๋ง๋ค๊ธฐ
์ฐธ๊ณ ํญ๋ชฉ
CodeQL ๋ถ์์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ํญ์ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํฉ๋๋ค. ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์ ๋ํด ๋ณํ ๋ถ์์ ์คํํ๋ฉด ํ์ฌ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด์๋ง ์ฟผ๋ฆฌ๊ฐ ์คํ๋ฉ๋๋ค. ๋ณํ ๋ถ์์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ CodeQL์(๋ฅผ) ์ฌ์ฉํ์ฌ code scanning์(๋ฅผ) ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค. CodeQL์ ์ฌ์ฉํ์ฌ code scanning์ ์ฌ์ฉํ๋๋ก ์ค์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ฝ๋ ์ค์บ์ ์ํ ๊ธฐ๋ณธ ์ค์ ๊ตฌ์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
"๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ "๋ชฉ๋ก ์ถ๊ฐ" ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
-
์ ๋ชฉ๋ก ์ด๋ฆ์ ์ ๋ ฅํ ๋ค์ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
-
๋ณด๊ธฐ์์ ๋ชฉ๋ก์ ์ ํํ ๋ค์ + ๋ฅผ ํด๋ฆญํ์ฌ ๋ชฉ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก ๊ด๋ฆฌ
๋ชฉ๋ก ์ด๋ฆ ๋๋ ๋ชฉ๋ก ๋ด์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํ๊ณ ์ปจํ ์คํธ ๋ฉ๋ด์์ ์ต์ ์ ์ ํํ์ฌ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ณ ํธ์งํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก์ databases.json
ํ์ผ์ ์์
์์ญ์ ์ ์ฅ๋ฉ๋๋ค. ์ด ํ์ผ์ Visual Studio Code์์ ์ง์ ํธ์งํ๋ ค๋ฉด ๋ณด๊ธฐ ๋จธ๋ฆฌ๊ธ์์ {} ๋ฅผ ํด๋ฆญํ์ฌ ์ด ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฟผ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์งํฉ์ ๊ณ์ ๋ถ์ํ๋ ค๋ฉด "๋ณํ ๋ถ์ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก ๋ณต์ฌ๋ฅผ ํด๋ฆญํ์ฌ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก๋ง JSON์ผ๋ก ํด๋ฆฝ๋ณด๋์ ์ถ๊ฐํฉ๋๋ค.
๋ค์ ์์ ์กฐ๊ฐ์์ my-organization/my-repository
์๋ ์ฟผ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.
{
"name": "new-repo-list",
"repositories": [
"my-organization/my-repository"
]
}
๊ทธ๋ฐ ๋ค์ "๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ๋ฆฌํฌ์งํ ๋ฆฌ์ new-repo-list
๋ฅผ databases.json
์ ์ฝ์
ํ ์ ์์ต๋๋ค.
GitHub ์ฝ๋ ๊ฒ์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ถ๊ฐ
์ฐธ๊ณ ํญ๋ชฉ
์ด ๊ธฐ๋ฅ์ GitHub ์ฝ๋ ๊ฒ์ API๋ฅผ ํตํด ๋ ๊ฑฐ์ ์ฝ๋ ๊ฒ์์ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉํ ๊ตฌ๋ฌธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ๋ (๋ ๊ฑฐ์) ๊ฒ์์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
CodeQL ํ์ฅ์์ ์ง์ ์ฝ๋ ๊ฒ์์ ์ฌ์ฉํ์ฌ GitHub์ ๋ฆฌํฌ์งํ ๋ฆฌ ํ์ ์งํฉ์ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด rails
์กฐ์ง์ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ GitHub์ ์ถ๊ฐํ๋ ค๋ฉด org:rails
๋ฅผ ๊ฒ์ํฉ๋๋ค.
๊ฒ์๋น ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก์ ์ต๋ 1,000๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
-
"๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ" ๋ณด๊ธฐ์์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ ๋ชฉ๋ก์ ์ ํํฉ๋๋ค. ์ ๋ชฉ๋ก์ ๋ง๋ค๊ฑฐ๋ ์ด๋ฏธ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ํฌํจ๋ ๊ธฐ์กด ๋ชฉ๋ก์ ์ ํํ ์ ์์ต๋๋ค.
-
์ ํํ ๋ชฉ๋ก์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํ ๋ค์ GitHub ์ฝ๋ ๊ฒ์์ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
์ ํ๋ฆฌ์ผ์ด์ ์ ๋งจ ์์ ํ์๋๋ ํ์ ์ ๊ฒ์ ์ฐฝ ์๋ ๋๋กญ๋ค์ด์ ์ ํ ํญ๋ชฉ์์ ๊ฒ์ ์ธ์ด๋ฅผ ์ ํํฉ๋๋ค.
-
๊ฒ์ ์ฐฝ์์ ์ฌ์ฉํ ๊ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๊ณ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
Searching for repositories...
ํ
์คํธ๊ฐ ์๋ ์์์ ์ ํ๋ฆฌ์ผ์ด์
์ค๋ฅธ์ชฝ ํ๋จ์์ ๊ฒ์ ์งํ๋ฅ ์ ํ์ธํ ์ ์์ต๋๋ค. ์ทจ์๋ฅผ ํด๋ฆญํ๋ฉด ๋ชฉ๋ก์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ถ๊ฐ๋์ง ์์ต๋๋ค. ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ณํ ๋ถ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณด๊ธฐ์ ์ฌ์ฉ์ ์ง์ ๋ชฉ๋ก ์๋ ๋๋กญ๋ค์ด์ ํ์๋ฉ๋๋ค.
๊ฒฐ๊ณผ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค ์ผ๋ถ์๋ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉฐ ์ผ๋ถ๋ Visual Studio Code์ฉ CodeQL ์ต์คํ ์ ์ ์ก์ธ์ค๋ฅผ ํ์ฉํ์ง ์์ ์ ์์ต๋๋ค. ๋ชฉ๋ก์์ ๋ถ์์ ์คํํ๋ฉด "๋ณํ ๋ถ์ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์ ๋ถ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ, ์ก์ธ์ค๊ฐ ๊ฑฐ๋ถ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฐ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ํ์๋ฉ๋๋ค.
์์ฒด ํธ์คํ ๋ฌ๋์์ ๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์์ ์ฌ์ฉํ์ฌ CodeQL ์ฟผ๋ฆฌ ์คํ
์์ฒด ํธ์คํ ๋ฌ๋์์ ๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์์ ์ฌ์ฉํ์ฌ CodeQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ๋จผ์ ์์ฒด ํธ์คํ ๋ฌ๋๋ฅผ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถ๊ฐํ๋์ง ํ์ธํ๊ฑฐ๋ ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์กฐ์ง ๋๋ ์ํฐํ๋ผ์ด์ฆ ์์ค ์คํ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉํ๋ ค๋ ์์ฒด ํธ์คํ
๋ฌ๋ ๋ ์ด๋ธ์ JSON ํ์ ๋ชฉ๋ก์ ํฌํจํ๋ MRVA_RUNNER_OS
๋ผ๋ ์ด๋ฆ์ผ๋ก ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ Actions ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์์:
["self-hosted", "macOS", "ARM64"]
์ฐธ๊ณ ํญ๋ชฉ
MRVA_RUNNER_OS
๋ณ์๋ฅผ Actions ์ค์ ๋๋ ์ํฌํ๋ก .yml
ํ์ผ์ ํ๊ฒฝ ๋ณ์๋ Actions ๋น๋ฐ๋ก ์ค์ ํ๋ ๊ฒ์ด ์๋๋ผ, ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ค์ ์์ Actions ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณ์๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
๋ณ์์ ์ ๋ณด ์ ์ฅ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์์ธํ ๋ด์ฉ์ ์์ฒด ํธ์คํธํ ์คํ๊ธฐ ์ถ๊ฐ ๋ฐ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ์์ฒด ํธ์คํธํ ์คํ๊ธฐ์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์์ฒด ํธ์คํ ๋ฌ๋์์ ๋ค์ค ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณํ ๋ถ์์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ถ์์ ์ ์ ์ผ๋ก ์์ฒด ํธ์คํ ๋ฌ๋์์ ์คํ๋ฉ๋๋ค. ์ ์ํฌํ๋ก๋ฅผ ๋ง๋ค ํ์๋ ์์ง๋ง Visual Studio Code์ฉ CodeQL ํ์ฅ์ด ์ปจํธ๋กค๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฌ์ฉํด์ผ ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ถ์์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋๋ก VS Code(์ผ)๋ก ์ ์ก๋ฉ๋๋ค.