Skip to main content

์ฝ”๋“œ ๊ฒ€์‚ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ

code scanning์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ์ฝ”๋“œ์—์„œ ๋ฐœ๊ฒฌ๋œ ๊ฒฝ๊ณ 

code scanning์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ๋ถ„์„ํ•˜๋ ค๋Š” ์ฝ”๋“œ๋งŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๊ฒ€์‚ฌ ๋ถ„์„ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค

code scanning ๊ตฌ์„ฑ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜์—ฌ ๋ถ„์„ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋œ ์–ธ์–ด์— ๋Œ€ํ•œ ์ž๋™ ๋นŒ๋“œ ์‹คํŒจ

์ž๋™ ๋นŒ๋“œ์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์— ๋Œ€ํ•œ ํŠน์ • ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก code scanning์„(๋ฅผ) ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C# ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‹คํŒจ

MSBuild C# ์ปดํŒŒ์ผ์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ CodeQL์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋น— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ code scanning์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด GitHub Code Security๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

๊ธฐ๋ณธ ์„ค์ • ์‚ฌ์šฉ์ด ์ค‘๋‹จ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ถ”์ถœ ์˜ค๋ฅ˜

์ƒ์„ฑ๋œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ์— ์ถ”์ถœ ์˜ค๋ฅ˜๊ฐ€ ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CodeQL์ด ์˜ˆ์ƒ๋ณด๋‹ค ์ ์€ ์ค„์„ ์Šค์บ”ํ–ˆ์Šต๋‹ˆ๋‹ค.

CodeQL์ด(๊ฐ€) ์˜ˆ์ƒ๋ณด๋‹ค ์ ์€ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ๋นŒ๋“œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ž์„ธํžˆ ์„ค๋ช…๋˜์ง€ ์•Š์Œ

๋กœ๊ทธ์˜ ์„ธ๋ถ€ ์ˆ˜์ค€์„ ๋†’์ด๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: โ€œ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œโ€

CodeQL์ด(๊ฐ€) ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ code scanning ๋ถ„์„์„ ์ฐจ๋‹จ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: โ€œ.ql ํŒŒ์ผ, .qls ํŒŒ์ผ, ๋””๋ ‰ํ„ฐ๋ฆฌ ๋˜๋Š” ์ฟผ๋ฆฌ ํŒฉ ์‚ฌ์–‘์ด ์•„๋‹™๋‹ˆ๋‹ค.โ€

CodeQL์—์„œ ๋ถ„์„์„ ์œ„ํ•ด ์ง€์ •๋œ ์ฟผ๋ฆฌ ๋˜๋Š” ์ฟผ๋ฆฌ ์ง‘ํ•ฉ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: "๋””์Šคํฌ ๋ถ€์กฑ" ๋˜๋Š” ์˜ค๋ฅ˜: "๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ"

GitHub Actions์—์„œ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋Œ€์ฒด ์‹คํ–‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: 403 "ํ†ตํ•ฉ์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ"

์ด ์˜ค๋ฅ˜๋Š” Dependabot์—์„œ ๋งŒ๋“  ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์—์„œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

code scanning ๊ฒฐ๊ณผ๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์–ด๋–ค ๊ตฌ์„ฑ์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: "์„œ๋ฒ„ ์˜ค๋ฅ˜"

When analyzing your code with code scanning, you may need to troubleshoot unexpected issues.

์ผ๋ถ€ ์–ธ์–ด๋Š” CodeQL ๊ณ ๊ธ‰ ์„ค์ •์œผ๋กœ ๋ถ„์„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์–ธ์–ด๊ฐ€ ๋ถ„์„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ code scanning ์›Œํฌํ”Œ๋กœ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ถ„์„ํ•  ์–ธ์–ด๋ฅผ ์ง€์ •ํ•˜๋Š” ํ–‰๋ ฌ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ CodeQL ์›Œํฌํ”Œ๋กœ

"CodeQL"๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์›Œํฌํ”Œ๋กœ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ํ•œ ์›Œํฌํ”Œ๋กœ๋Š” ๊ธฐ๋ณธ ์„ค์ •์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •๋œ ๊ธฐ์กด CodeQL ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ ์‹คํ–‰์„ ํŠธ๋ฆฌ๊ฑฐํ•œ ๋‚ด์šฉ์ด ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์„์„ ํŠธ๋ฆฌ๊ฑฐํ•œ ์›์ธ์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ๋„๊ตฌ ์ƒํƒœ ํŽ˜์ด์ง€์„(๋ฅผ) ์กฐ์‚ฌํ•˜๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰ ๊ฒ€์‚ฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : "์ด ์›Œํฌํ”Œ๋กœ์—์„œ 1๊ฐœ์˜ ๋ฌธ์ œ๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. git ๊ฒ€์‚ฌ HEAD^2๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

์ด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋„๋ก ์›Œํฌํ”Œ๋กœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ๋นŒ๋“œ ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ์—์„œ X Kotlin ํŒŒ์ผ์ด ๊ฒ€์ƒ‰๋จ

CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ Java์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, Kotlin ํŒŒ์ผ์€ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š์œผ๋ฉด ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.