Skip to main content

CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ

์ต์Šคํ…์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ณด

ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ(ZIP ๋ณด๊ด€ ํŒŒ์ผ ๋˜๋Š” ๋ณด๊ด€ํ•˜์ง€ ์•Š์€ ํด๋”์—์„œ), ๊ณต์šฉ URL ๋˜๋Š” GitHub์˜ ํ”„๋กœ์ ํŠธ URL์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” CodeQL CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CodeQL ๋ถ„์„์„ ์œ„ํ•œ ์ฝ”๋“œ ์ค€๋น„์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‹ค์šด๋กœ๋“œ

GitHub.com์—์„œ๋Š” ๋ถ„์„์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” 200,000๊ฐœ ์ด์ƒ์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์žˆ๋Š” ๊ฒฝ์šฐ REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub REST API ์„ค๋ช…์„œ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚˜์—ด ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ถ„์„ํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ

  1. "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค" ๋ณด๊ธฐ์˜ ์ œ๋ชฉ ํ‘œ์‹œ์ค„์„ ๋งˆ์šฐ์Šค๋กœ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์ ์ ˆํ•œ ์•„์ด์ฝ˜์„ ์„ ํƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ(ZIP ๋ณด๊ด€ ํŒŒ์ผ ๋˜๋Š” ๋ณด๊ด€ํ•˜์ง€ ์•Š์€ ํด๋”์—์„œ), ๊ณต์šฉ URL ๋˜๋Š” GitHub์˜ ํ”„๋กœ์ ํŠธ URL์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฐธ๊ณ  ํ•ญ๋ชฉ

ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„์„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. CodeQL CLI์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ์—์„œ ์žฌ๋ฐœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(.testproj ์ต์Šคํ…์…˜์ด ์žˆ๋Š” ํด๋”)๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์žฌ๋ฐœ ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ Visual Studio Code(์œผ)๋กœ ๊ฐ€์ ธ์™€์„œ ์˜ค๋ฅ˜๋ฅผ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์–ธ์–ด๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ง

ํ•„์š”์— ๋”ฐ๋ผ ํŠน์ • ์–ธ์–ด์™€ ํ•ด๋‹น ์–ธ์–ด์— ๋Œ€ํ•ด ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด๋ ค๋ฉด ์–ธ์–ด ์„ ํƒ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์–ด ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์–ธ์–ด ํ•„ํ„ฐ๋ฅผ ๋ณด๋ ค๋ฉด ์‚ฌ์ด๋“œ๋ฐ”์—์„œ "์–ธ์–ด" ๋ณด๊ธฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  2. ์ ์šฉํ•  ์–ธ์–ด ํ•„ํ„ฐ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ๊ฐ€๋ฆฌํ‚จ ๋‹ค์Œ ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„

CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ต์Šคํ…์…˜์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด CodeQL ์ฟผ๋ฆฌ ์‹คํ–‰์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.