Skip to main content

๋‹ค์ค‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณ€ํ˜• ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ CodeQL ์ฟผ๋ฆฌ ์‹คํ–‰

Visual Studio Code์˜ GitHub์— ์žˆ๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ CodeQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณ€ํ˜• ๋ถ„์„์„ ์‚ฌ์šฉํ•œ ๋Œ€๊ทœ๋ชจ 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์— ๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •

  1. "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •์„ ํด๋ฆญํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ํ•„๋“œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท "์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •" ๋ฒ„ํŠผ์ด ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  GitHub์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž์™€ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  Enter ํ‚ค๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

  3. GitHub๋กœ ์ธ์ฆํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ง€์นจ์— ๋”ฐ๋ผ ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด GitHub ์ธ์ฆ์˜ ํ”„๋กฌํ”„ํŠธ์—์„œ Visual Studio Code์—์„œ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Open์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฆ„์€ CodeQL ์ต์Šคํ…์…˜์— ๋Œ€ํ•œ ์„ค์ •์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ •์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

MRVA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์ฟผ๋ฆฌ ์‹คํ–‰

  1. ๊ธฐ๋ณธ์ ์œผ๋กœ "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—๋Š” ๋ถ„์„ ์ค‘์ธ ์–ธ์–ด์— ๋Œ€ํ•œ GitHub.com์˜ ์ƒ์œ„ 10๊ฐœ, ์ƒ์œ„ 100๊ฐœ ๋ฐ ์ƒ์œ„ 1,000๊ฐœ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ SUBDOMAIN.ghe.com์—์„œ ํ˜ธ์ŠคํŠธ๋˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  2. ํ•„์š”์— ๋”ฐ๋ผ ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, ์กฐ์ง ๋˜๋Š” ๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—์„œ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด + ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ From a GitHub repository ๋˜๋Š” All repositories of GitHub org or owner๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    3. ํ•„๋“œ์— ์‚ฌ์šฉํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋˜๋Š” ์กฐ์ง์˜ ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  3. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท "octo-org/octo-repo" ํ–‰์€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๊ณ  "์„ ํƒ" ๋ฒ„ํŠผ์€ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฅผ ์—ด๊ณ  ์ฟผ๋ฆฌ ํŒŒ์ผ์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•œ ๋‹ค์Œ CodeQL: ๋ณ€ํ˜• ๋ถ„์„ ์‹คํ–‰์„ ์„ ํƒํ•˜์—ฌ ๋ณ€ํ˜• ๋ถ„์„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

๋ณ€ํ˜• ๋ถ„์„ ์‹คํ–‰์„ ์ทจ์†Œํ•˜๋ ค๋ฉด "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์—์„œ Stop query๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์„์„ ์œ„ํ•ด ๋‹จ์ผ GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋˜๋Š” ์กฐ์ง ์„ ํƒ

  1. "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—์„œ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด + ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ From a GitHub repository ๋˜๋Š” All repositories of GitHub org or owner๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ํ•„๋“œ์— ์‚ฌ์šฉํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋˜๋Š” ์กฐ์ง์˜ ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ 

MRVA๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์˜ค๋ฅ˜์™€ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Visual Studio Code ์˜ค๋ฅ˜: CodeQL ํŒฉ์„ ๋งŒ๋“ค๊ณ  GitHub์— ๋ถ„์„์„ ๋ณด๋‚ด๋Š” ๋ฐ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ์žˆ๋Š” Visual Studio Code ์˜ค๋ฅ˜๋กœ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ์ •๋ณด๋Š” "๋ฌธ์ œ" ๋ณด๊ธฐ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ": ๋ณ€ํ˜• ๋ถ„์„ ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” ์ด ๋ณด๊ธฐ์—์„œ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํƒ์ƒ‰

GitHub์—์„œ ๋ณ€ํ˜• ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋Š” ์›Œํฌํ”Œ๋กœ๊ฐ€ ์‹คํ–‰๋˜์ž๋งˆ์ž "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ๊ฐ€ ์—ด๋ฆฌ๊ณ  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์›Œํฌํ”Œ๋กœ ๋กœ๊ทธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"FileAccessToHttp.ql"์— ๋Œ€ํ•œ ์‹คํ–‰์„ ๋ณด์—ฌ ์ฃผ๋Š” "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ" ์Šคํฌ๋ฆฐ์ƒท ํŒŒ๋ž€์ƒ‰ ์›์€ ์ฐพ์€ ๊ฒฐ๊ณผ ๋˜๋Š” "-"๊ฐ€ ์—ฌ์ „ํžˆ ์‹คํ–‰ ์ค‘์ธ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ˜• ๋ถ„์„ ์‹คํ–‰์ด ์˜ˆ์•ฝ๋˜๋ฉด "๊ฒฐ๊ณผ" ๋ณด๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ณด๊ธฐ์— ๋ถ„์„์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋œ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ๋ณด๊ธฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ๊ฒฐ๊ณผ ์ˆ˜์— ๋Œ€ํ•œ ์š”์•ฝ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฒฐ๊ณผ(๊ฒฐ๊ณผ ๊ฒฝ๋กœ ํฌํ•จ)๋ฅผ ๋ณด๋ ค๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ์—์„œ ์ฐพ์€ ๊ฒฐ๊ณผ ์ˆ˜

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€

  • ๋ถ„์„์ด ๊ณ„์† ์‹คํ–‰ ์ค‘์ธ์ง€ ๋˜๋Š” ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ GitHub์— ์žˆ๋Š” ๋ณ„ํ‘œ ํ‘œ์‹œ ์ˆ˜

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๋ณด๊ธฐ

  1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์„ ํด๋ฆญํ•˜์—ฌ ๊ฐ ๊ฒฐ๊ณผ์˜ ์š”์•ฝ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  2. GitHub์˜ ์›๋ณธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๊ฒฐ๊ณผ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ "๊ฒฝ๋กœ ํ‘œ์‹œ" ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    GitHub ์›๋ณธ ํŒŒ์ผ์— ๋Œ€ํ•œ ํŒŒ๋ž€์ƒ‰ ๋งํฌ๊ฐ€ ์žˆ๋Š” "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท "๊ฒฝ๋กœ ํ‘œ์‹œ" ๋งํฌ๋Š” ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ

์ถ”๊ฐ€ ๋ถ„์„์„ ์œ„ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ณต๋™ ์ž‘์—…์ž์™€ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๊ฒฐ๊ณผ" ๋ณด๊ธฐ์—์„œ Export results๋ฅผ ํด๋ฆญํ•˜์—ฌ GitHub์˜ ๋น„๋ฐ€ gist ๋˜๋Š” ์ž‘์—… ์˜์—ญ์˜ Markdown ํŒŒ์ผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก ๋งŒ๋“ค๊ธฐ

์ฐธ๊ณ  ํ•ญ๋ชฉ

CodeQL ๋ถ„์„์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•ญ์ƒ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ชฉ๋ก์— ๋Œ€ํ•ด ๋ณ€ํ˜• ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ณ€ํ˜• ๋ถ„์„์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ CodeQL์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ code scanning์„(๋ฅผ) ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CodeQL์„ ์‚ฌ์šฉํ•˜์—ฌ code scanning์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ • ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  1. "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—์„œ "๋ชฉ๋ก ์ถ”๊ฐ€" ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    "๋ณ€ํ˜• ๋ถ„์„ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท "์ถ”๊ฐ€ ๋ชฉ๋ก" ์•„์ด์ฝ˜์ด ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ์ƒˆ ๋ชฉ๋ก ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ ๋‹ค์Œ Enter ํ‚ค๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

  3. ๋ณด๊ธฐ์—์„œ ๋ชฉ๋ก์„ ์„ ํƒํ•œ ๋‹ค์Œ + ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ชฉ๋ก์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก ๊ด€๋ฆฌ

๋ชฉ๋ก ์ด๋ฆ„ ๋˜๋Š” ๋ชฉ๋ก ๋‚ด์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•˜๊ณ  ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์—์„œ ์˜ต์…˜์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•˜๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์€ 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๊ฐœ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. "๋ณ€ํ˜• ๋ถ„์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ" ๋ณด๊ธฐ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•  ๋ชฉ๋ก์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด๋ฏธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๊ธฐ์กด ๋ชฉ๋ก์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์„ ํƒํ•œ ๋ชฉ๋ก์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•œ ๋‹ค์Œ GitHub ์ฝ”๋“œ ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋งจ ์œ„์— ํ‘œ์‹œ๋˜๋Š” ํŒ์—…์˜ ๊ฒ€์ƒ‰ ์ฐฝ ์•„๋ž˜ ๋“œ๋กญ๋‹ค์šด์˜ ์„ ํƒ ํ•ญ๋ชฉ์—์„œ ๊ฒ€์ƒ‰ ์–ธ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ฒ€์ƒ‰ ์ฐฝ์—์„œ ์‚ฌ์šฉํ•  ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  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(์œผ)๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.