--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Static Code Analysis]] last_updated: 2026-05-02 --- # [[Static Code Analysis]] ## ๐Ÿ“Œ Brief Summary ์ •์  ์ฝ”๋“œ ๋ถ„์„(Static Code Analysis)์€ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ์˜๋„์™€ ์‹ค์ œ ๊ตฌํ˜„ ์‚ฌ์ด์˜ ๊ฒฉ์ฐจ๊ฐ€ ๋ฒŒ์–ด์ง€๋Š” '์•„ํ‚คํ…์ฒ˜ ์นจ์‹(Architecture Erosion)' ํ˜„์ƒ์„ ์กฐ๊ธฐ์— ์‹๋ณ„ํ•˜๊ณ  ์™„ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๋„๊ตฌ ๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค [1, 2]. ๋˜ํ•œ, ์‹œ์Šคํ…œ ๋ฌธ์„œ๊ฐ€ ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ๋ถ€์žฌํ•œ ์ƒํ™ฉ์—์„œ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณต๊ตฌ(Recovery)ํ•˜๊ธฐ ์œ„ํ•œ ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„(Static program analysis) ๊ด€ํ–‰์œผ๋กœ๋„ ํ™œ์šฉ๋œ๋‹ค [3]. --- ์ •์  ์ฝ”๋“œ ๋ถ„์„(Static Code Analysis)์€ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ (at rest) ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ๊ตฌ๋ฌธ์„ ์ž๋™์œผ๋กœ ์Šค์บ”ํ•˜์—ฌ ์ฝ”๋”ฉ ์˜ค๋ฅ˜, ํ‘œ์ค€ ์œ„๋ฐ˜ ๋ฐ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค [1-3]. ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ํ•ด๋…ํ•  ๋•Œ ์‹œ์Šคํ…œ์˜ ๋…ผ๋ฆฌ์™€ ์˜์กด์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉฐ, ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋‚ด๊ณ  ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•ด์ค€๋‹ค [4]. ์ตœ๊ทผ์—๋Š” ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST)๋‚˜ ์ฝ”๋“œ ์†์„ฑ ๊ทธ๋ž˜ํ”„(CPG)๋ฅผ AI์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‹จ์ˆœ ๊ตฌ๋ฌธ ๊ฒ€์‚ฌ๋ฅผ ๋„˜์–ด ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋“ˆํ™” ์ƒํƒœ๋ฅผ ์‹ฌ์ธต์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ๊ฐ€์ด๋“œํ•˜๋Š” ๋„๊ตฌ๋กœ ์ง„ํ™”ํ•˜๊ณ  ์žˆ๋‹ค [5-7]. ## ๐Ÿ“– Core Content * **์•„ํ‚คํ…์ฒ˜ ์นจ์‹(Architecture Erosion) ์กฐ๊ธฐ ํƒ์ง€ ๋ฐ ์™„ํ™”** ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์˜๋„๋œ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์™€ ์‹ค์ œ ๊ตฌํ˜„๋œ ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์ด์— ์ ์ง„์ ์ธ ๊ฒฉ์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค [1]. ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ์ž๋™ํ™”๋œ ์•„ํ‚คํ…์ฒ˜ ์ค€์ˆ˜ ๊ฒ€์‚ฌ(automated architecture conformance checks) ๋ฐ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ์ˆ ๊ณผ ํ•จ๊ป˜ ์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์„ ์ดˆ๊ธฐ์— ํŒŒ์•…ํ•˜๊ณ  ์™„ํ™”ํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜ ์œ„๋ฐ˜์ด๋‚˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„์˜ ์ถ•์ ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [2]. * **์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ณต๊ตฌ(Architecture Recovery)** ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ณต๊ตฌ(๋˜๋Š” ์—ญ๊ณตํ•™)๋Š” ๊ตฌํ˜„ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ๊ฒฐ์ •์ด ์ดˆ๊ธฐ ์„ค๊ณ„์—์„œ ๋ฒ—์–ด๋‚ฌ๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ๋ฌธ์„œ๊ฐ€ ๊ตฌ์‹์ด ๋œ ๊ฒฝ์šฐ, ์ •๋ณด์— ์ž…๊ฐํ•œ ์˜์‚ฌ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ๋‹ค [3]. ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์€ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ…”๋ฆฌ์ „์Šค(Software intelligence) ๊ด€ํ–‰์˜ ์ผ๋ถ€๋กœ์„œ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„ ์ฝ”๋“œ ๋“ฑ์˜ ์ •๋ณด๋กœ๋ถ€ํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต๊ตฌํ•ด ๋‚ด๋Š” ๊ธฐ์ˆ ์  ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉ๋œ๋‹ค [3]. --- * **์ž‘๋™ ์›๋ฆฌ ๋ฐ ์ฃผ์š” ๋ชฉ์ ** ์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฝ์–ด ๋“ค์—ฌ ๋…ผ๋ฆฌ์  ๊ฒฐํ•จ, ์ทจ์•ฝ์ (SAST), ๋น„ํšจ์œจ์ ์ธ ํŒจํ„ด์„ ์‹๋ณ„ํ•œ๋‹ค [1]. ์ฃผ๋œ ๋ชฉ์ ์€ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ํƒ์ง€ํ•ด ์ˆ˜์ • ๋น„์šฉ์„ ๋‚ฎ์ถ”๊ณ , ์ผ๊ด€๋œ ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด๋‹ค [4, 8]. * **์ฃผ์š” ๋ถ„์„ ๊ธฐ๋ฒ• ๋ฐ ๊ธฐ๋Šฅ** ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ถ„์„ ๋„๊ตฌ๋“ค์€ ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST) [5, 7], ์ฝ”๋“œ ์†์„ฑ ๊ทธ๋ž˜ํ”„(CPG) [6], ๋ฐ์ดํ„ฐ ํ๋ฆ„(Data-flow) ๋ฐ ๊ธฐํ˜ธ ์‹คํ–‰(Symbolic execution) [9] ๋“ฑ์˜ ๊ธฐ๋ฒ•์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ดํ•ดํ•œ๋‹ค. ์ตœ์ƒ์œ„ ๋„๊ตฌ๋“ค์€ ๋‹ค๊ตญ์–ด ์ง€์›, ์ปค์Šคํ…€ ๊ทœ์น™ ์ž‘์„ฑ, CI/CD ๋ฐ IDE์™€์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋”ฉ ํ๋ฆ„์„ ๋Š์ง€ ์•Š๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•œ๋‹ค [10-12]. * **์ฝ”๋“œ๋ฒ ์ด์Šค ๋…ํ•ด ๋ฐ ์ดํ•ด์—์„œ์˜ ์—ญํ• ** ์ƒˆ๋กญ๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฝ์„ ๋•Œ, ์ •์  ๋ถ„์„์€ ๊ฐ์ฒด์™€ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ(Tight coupling)์ด๋‚˜ ๋ˆ„์ˆ˜๋œ ์ถ”์ƒํ™”(Leaky abstractions)์™€ ๊ฐ™์€ ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ํ”Œ๋ž˜๊ทธ ์ง€์ •ํ•ด ์ค€๋‹ค [13]. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ƒํ–ฅ์‹(Bottom-up)์ด๋‚˜ ํ•˜ํ–ฅ์‹(Top-down)์œผ๋กœ ํƒ์ƒ‰ํ•  ๋•Œ ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ ์ฝ”๋“œ ์ด๋ฉด์— ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฌผ๋ฆฌ์  ์ œ์•ฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ์‹œ๊ฐํ™”ํ•˜๊ณ  ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ต์‹ฌ ์ง€์‹ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค [4, 7]. * **AI์™€์˜ ๊ฒฐํ•ฉ ๋ฐ ๋ฐœ์ „** ์ตœ๊ทผ์˜ AI ๊ธฐ๋ฐ˜ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ(์˜ˆ: Qodo, CodeRabbit, Kodesage, Cycode)๋Š” ์ปจํ…์ŠคํŠธ ์ธํ…”๋ฆฌ์ „์Šค๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ณต์žกํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์˜ํ–ฅ์„ ํŒŒ์•…ํ•œ๋‹ค [7, 14]. ์ด๋Š” ์˜คํƒ๋ฅ (False positive rate)์„ ์ค„์ด๊ณ , ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(PR) ๋ฆฌ๋ทฐ ๋‹จ๊ณ„์—์„œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž๋™ ์ˆ˜์ •(Auto-remediation) ์ œ์•ˆ ๋ฐ ๋งฅ๋ฝ์— ๋งž๋Š” ์„ค๋ช…์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋“œ ๋…ํ•ด๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋ณด์กฐํ•œ๋‹ค [15, 16]. ## โš–๏ธ Trade-offs & Caveats ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. --- * **์˜คํƒ(False Positives)์œผ๋กœ ์ธํ•œ ๊ฒฝ๊ณ  ํ”ผ๋กœ**: ์ •์  ๋ถ„์„ ๋„๊ตฌ์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์‹ค์ œ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ทจ์•ฝ์ ์ด๋‚˜ ์˜ค๋ฅ˜๋กœ ์ž˜๋ชป ์‹๋ณ„ํ•˜๋Š” ๋†’์€ ์˜คํƒ๋ฅ ์ด๋‹ค. ์˜คํƒ์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒฝ๊ณ  ํ”ผ๋กœ(Alert fatigue)๋ฅผ ์œ ๋ฐœํ•˜์—ฌ ๋„๊ตฌ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‹ค์ œ ๋ณด์•ˆ ๋ฆฌ์Šคํฌ ํ•ด๊ฒฐ์„ ๋Šฆ์ถ”๊ฒŒ ๋œ๋‹ค [17, 18]. * **์„ฑ๋Šฅ ๋ฐ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ**: ์ผ๋ถ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ SAST ๋„๊ตฌ๋‚˜ ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฌด๊ฑฐ์šด ์—”์ง„์€ ์Šค์บ” ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ  ์ƒ๋‹นํ•œ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•œ๋‹ค [19]. ์ด๋Š” ์• ์ž์ผ ํ™˜๊ฒฝ์—์„œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ง€์—ฐ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฆด๋ฆฌ์Šค ์†๋„๋ฅผ ๋Šฆ์ถ”๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ๋‹ค [18]. * **ํ•™์Šต ๊ณก์„  ๋ฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋น„์šฉ**: ๋„๊ตฌ๋ฅผ ํŠน์ • ํŒ€์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ปค์Šคํ…€ ๋ถ„์„ ๊ทœ์น™(Custom rules)์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ CPG(์ฝ”๋“œ ์†์„ฑ ๊ทธ๋ž˜ํ”„) ๋ชจ๋ธ์„ ํŠœ๋‹ํ•˜๋Š” ์ž‘์—…์€ ๋ณต์žกํ•˜๊ณ  ๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ ์„ ์š”๊ตฌํ•œ๋‹ค [20, 21]. * **๋™์  ํŠน์„ฑ ํŒŒ์•…์˜ ๊ทผ๋ณธ์  ํ•œ๊ณ„**: ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ •์ ์ธ ์ƒํƒœ์—์„œ๋งŒ ๋ถ„์„์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ํŠน์ • ํ™˜๊ฒฝ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋Š” ์‹๋ณ„ํ•  ์ˆ˜ ์—†๋‹ค. ์™„๋ฒฝํ•œ ๋ถ„์„์„ ์œ„ํ•ด์„œ๋Š” ๋™์  ๋ถ„์„(Dynamic analysis)๊ณผ์˜ ๋ณ‘ํ–‰์ด ํ•„์ˆ˜์ ์ด๋‹ค [1, 3]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ] - [[Architecture Erosion]] (์•„ํ‚คํ…์ฒ˜ ์นจ์‹) - ์—ฐ๊ฒฐ ์ด์œ : ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์„ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ์™„ํ™”ํ•˜๋Š” ํ•ต์‹ฌ ์˜ˆ๋ฐฉ ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •์  ๋ถ„์„์ด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ €ํ•˜, ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ ์ฆ๊ฐ€, ํ’ˆ์งˆ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๊ฐ„์˜ ๋ถˆ์ผ์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฉ์ง€ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค [1, 2]. #### [์•„ํ‚คํ…์ฒ˜ ์—ญ๊ณตํ•™ ๋ฐ ์ง€์‹ ๊ด€๋ฆฌ] - [[Architecture Recovery]] (์•„ํ‚คํ…์ฒ˜ ๋ณต๊ตฌ) - ์—ฐ๊ฒฐ ์ด์œ : ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„ ์ฝ”๋“œ๋งŒ์œผ๋กœ ์›๋ž˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [3]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •์  ๋ถ„์„์„ ํ†ตํ•œ ์ฝ”๋“œ ๋ ˆ๋ฒจ์˜ ์ถ”์ ์ด ์–ด๋–ป๊ฒŒ ๊ฑฐ์‹œ์ ์ธ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ์„ค๊ณ„(์•„ํ‚คํ…์ฒ˜)๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์˜์‚ฌ๊ฒฐ์ •์„ ์ง€์›ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค [3]. ### Deeper Research Questions - ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋Š” ์˜๋„๋œ ์•„ํ‚คํ…์ฒ˜์™€ ๊ตฌํ˜„๋œ ์•„ํ‚คํ…์ฒ˜ ๊ฐ„์˜ ๊ฒฉ์ฐจ(์•„ํ‚คํ…์ฒ˜ ์นจ์‹)๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์ฝ”๋“œ ์ˆ˜์ค€์˜ ์ง€ํ‘œ๋ฅผ ํ†ตํ•ด ์‹๋ณ„ํ•˜๋Š”๊ฐ€? - ์ž๋™ํ™”๋œ ์•„ํ‚คํ…์ฒ˜ ์ค€์ˆ˜ ๊ฒ€์‚ฌ(Automated architecture conformance checks)๋Š” ์ •์  ์ฝ”๋“œ ๋ถ„์„๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ์œ„๋ฐ˜์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š”๊ฐ€? - ๋…ธํ›„ํ™”๋œ ๋ฌธ์„œ๋งŒ ์กด์žฌํ•˜๋Š” ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์—์„œ ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์„ ํ™œ์šฉํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณต๊ตฌํ•  ๋•Œ ์ง๋ฉดํ•˜๋Š” ๊ธฐ์ˆ ์  ํ•œ๊ณ„๋‚˜ ๋ถ„์„์˜ ์‚ฌ๊ฐ์ง€๋Œ€๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ์ •์  ์ฝ”๋“œ ๋ถ„์„์„ ํ†ตํ•ด ์‹๋ณ„๋œ ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋ง ๊ธฐ์ˆ (Refactoring techniques)์€ ์–ด๋–ค ์ ˆ์ฐจ๋กœ ์ ์šฉ๋˜๋Š”๊ฐ€? - ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์œผ๋กœ ๋ณต๊ตฌ๋œ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ์ด ์‹œ์Šคํ…œ์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ ๋™์ (Dynamic) ํŠน์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ์—๋Š” ์–ด๋–ค ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง€๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋“ฑ์— ํ†ตํ•ฉํ•˜์—ฌ, ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ์ ๋ถ€ํ„ฐ ์•„ํ‚คํ…์ฒ˜ ๊ทœ์น™ ์œ„๋ฐ˜ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์„ ์กฐ๊ธฐ์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค [2]. - **System Design:** ๋ฌธ์„œ๊ฐ€ ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ธฐ์กด ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์„ค๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๋•Œ, ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์„ ํ†ตํ•ด ๊ธฐ์กด ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค [3]. - **Operation / Maintenance:** ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„์—์„œ ์ฝ”๋“œ๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์˜๋„์น˜ ์•Š์€ ์•„ํ‚คํ…์ฒ˜ ๋ณ€ํ˜•(Erosion)์„ ์ •๊ธฐ์ ์ธ ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋ง์˜ ๊ทผ๊ฑฐ๋กœ ํ™œ์šฉํ•œ๋‹ค [1, 2]. - **Learning Path:** ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์ง€์‹์„ ์‹ค๋ฌด์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•  ๋•Œ, ์„ค๊ณ„๋œ ํŒจํ„ด์ด ์‹ค์ œ ์ฝ”๋“œ ๋ฒ ์ด์Šค์—์„œ ์–ด๋–ป๊ฒŒ ๊ฐ•์ œ๋˜๊ณ  ๊ฒ€์ฆ๋˜๋Š”์ง€(์ •์  ๋ถ„์„ ๋„๊ตฌ ํ™œ์šฉ)๋ฅผ ์ดํ•ดํ•˜๋Š” ๋‹จ๊ณ„๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. - **My Project Relevance:** ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๋ณธ๋ž˜ ์˜๋„ํ–ˆ๋˜ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๊ตฌ์กฐ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ํ†ต์ œํ•˜๋Š” ๊ตฌ์กฐ์  ํ’ˆ์งˆ ๊ฒ€์ฆ ๋„๊ตฌ๋กœ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค [2]. ### Adjacent Topics - [[Software Intelligence]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„์„ ํ™œ์šฉํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ณต๊ตฌ๊ฐ€ ํฌํ•จ๋˜๋Š” ์ƒ์œ„ ๊ด€ํ–‰์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ‰๊ฐ€ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๋ถ„์•ผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค [3]. - [[Automated Architecture Conformance Checks]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์„ ์กฐ๊ธฐ์— ์™„ํ™”ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ•ต์‹ฌ ์˜ˆ๋ฐฉ ์กฐ์น˜ ๊ธฐ์ˆ ๋กœ์„œ, ์ž๋™ํ™”๋œ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€์ฆ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค [2]. --- *Last updated: 2026-05-02* --- - [[SAST_Fundamentals]]: ๋ณด์•ˆ์— ํŠนํ™”๋œ ์ •์  ๋ถ„์„ ๊ธฐ๋ฒ•. - [[SCA_Fundamentals]]: ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์ข…์†์„ฑ)์— ๋Œ€ํ•œ ๋ถ„์„ ๊ธฐ๋ฒ•. - [[SonarQube]]: ๋Œ€ํ‘œ์ ์ธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ •์  ๋ถ„์„ ํ”Œ๋žซํผ. --- ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜• A (์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ )] - [[์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ (AST)]] - ์—ฐ๊ฒฐ ์ด์œ : ์ •์  ๋ถ„์„๊ธฐ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ตฌ๋ฌธ๊ณผ ๊ตฌ์กฐ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ž๋™ํ™” ๋„๊ตฌ๊ฐ€ ๊ธฐ๊ณ„์ ์ธ ๋ ˆ๋ฒจ์—์„œ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๊ณ , ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๋‚˜ ํŒจํ„ด ๊ทœ์น™ ์œ„๋ฐ˜์„ ์ฐพ์•„๋‚ด๋Š”์ง€ ๊ทธ ๊ตฌ๋™ ์›๋ฆฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค [5, 7]. - [[์ฝ”๋“œ ์†์„ฑ ๊ทธ๋ž˜ํ”„ (CPG)]] - ์—ฐ๊ฒฐ ์ด์œ : ์ฝ”๋“œ์˜ ๊ตฌ๋ฌธ, ์ œ์–ด ํ๋ฆ„, ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋‹ค์ฐจ์›์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ์‹ฌ์ธต ๋ถ„์„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •์  ๋ถ„์„์ด ์ทจ์•ฝ์ ์˜ ์‹ค์ œ ์•…์šฉ ๊ฐ€๋Šฅ์„ฑ(Exploitability)์„ ์ถ”์ ํ•˜๊ณ  ์˜คํƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ปจํ…์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค [6]. #### [๊ด€๊ณ„ ์œ ํ˜• B (๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ)] - [[๋™์  ์ฝ”๋“œ ๋ถ„์„ (Dynamic Code Analysis)]] - ์—ฐ๊ฒฐ ์ด์œ : ์ •์  ๋ถ„์„๊ณผ ๋Œ€๋น„๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ์‹œ์Šคํ…œ์ด ์‹คํ–‰ ์ค‘์ธ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•œ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •์  ๋ถ„์„๋งŒ์œผ๋กœ๋Š” ํŒŒ์•…ํ•  ์ˆ˜ ์—†๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ์ ๋“ค์„ ์‹๋ณ„ํ•˜์—ฌ ์ฝ”๋“œ ๋ถ„์„ ์ „๋žต์„ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ๋ณด์™„์ ์œผ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค [1, 3]. - [[CI/CD ํŒŒ์ดํ”„๋ผ์ธ]] - ์—ฐ๊ฒฐ ์ด์œ : ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” CI/CD ํ™˜๊ฒฝ์— ํ†ตํ•ฉ๋˜์–ด ๋ฐฐํฌ ์ „ ์ž๋™ํ™”๋œ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ ์—ญํ• ์„ ํ•œ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ •์  ๋ถ„์„์ด ์‹ค์ œ ๊ฐœ๋ฐœ ๋ผ์ดํ”„์‚ฌ์ดํด(SDLC)๊ณผ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ์— ์–ด๋–ป๊ฒŒ ๋งค๋„๋Ÿฝ๊ฒŒ ์‚ฝ์ž…๋˜์–ด ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ ์—†์ด ์ฝ”๋“œ ๋…ํ•ด ๋ฐ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค [11, 22, 23]. ### Deeper Research Questions - ์ •์  ๋ถ„์„ ๋„๊ตฌ์˜ ์˜คํƒ(False Positive)์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ๊ณ  ํ”ผ๋กœ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ตœ์‹  AI ๋ชจ๋ธ๋“ค์€ ์–ด๋–ค ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋Š”๊ฐ€? [16, 18] - ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST) ๊ธฐ๋ฐ˜ ์Šค์บ”๊ณผ ์ฝ”๋“œ ์†์„ฑ ๊ทธ๋ž˜ํ”„(CPG) ๊ธฐ๋ฐ˜ ์Šค์บ”์€ ๋ณต์žก๋„ ์ฒ˜๋ฆฌ์™€ ๋ถ„์„ ์ •ํ™•์„ฑ ์ธก๋ฉด์—์„œ ์–ด๋–ค ๊ธฐ์ˆ ์  ์ฐจ์ด๋ฅผ ๋ณด์ด๋Š”๊ฐ€? [5-7] - ๋Œ€๊ทœ๋ชจ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ƒํ™˜ํ•  ๋•Œ, ์ •์  ๋ถ„์„ ๋„๊ตฌ์˜ ์ž๋™ํ™”๋œ ์ˆ˜์ •(Autofix) ๊ธฐ๋Šฅ์€ ์–ด๋А ์ˆ˜์ค€์˜ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง๊นŒ์ง€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? [15, 24] - ์ •์  ๋ถ„์„(SAST)๊ณผ ๋™์  ๋ถ„์„(DAST)์„ ๊ฒฐํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ๋ฒ•์€ ๋ชจ๋˜ DevSecOps ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”๊ฐ€? [1, 9] - ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•  ๋•Œ, ๋ฆด๋ฆฌ์Šค ์†๋„(์„ฑ๋Šฅ)์™€ ๋ณด์•ˆ ์Šค์บ”์˜ ๊นŠ์ด ๊ฐ„์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€? [18, 19] ### Practical Application Contexts - **Implementation:** ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ IDE์— ์—ฐ๋™๋œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋”ฉ ์˜ค๋ฅ˜, ์•ˆํ‹ฐํŒจํ„ด, ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ฆ‰๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ  ์ˆ˜์ • ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค [25]. - **System Design:** ๋„๊ตฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ ์˜์กด์„ฑ ๋ถ„์„๊ณผ ๋ชจ๋“ˆํ™” ์ ์ˆ˜๋ฅผ ํ†ตํ•ด, ์„ค๊ณ„๋œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ(Tight coupling)์ด๋‚˜ ๋ˆ„์ˆ˜๋œ ์ถ”์ƒํ™”๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€์ง€ ๊ฒ€์ฆํ•œ๋‹ค [7, 13, 26]. - **Operation / Maintenance:** CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์— ๊ตฌ์ถ•๋˜์–ด, PR ์‹œ์ ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๊ฐ€ ์šด์˜ ํ™˜๊ฒฝ์œผ๋กœ ์œ ์ž…๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์–ดํ•œ๋‹ค [11, 22, 23]. - **Learning Path:** ๋‚ฏ์„  ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์˜จ๋ณด๋”ฉํ•  ๋•Œ, ์ •์  ๋ถ„์„์ด ์ถ”์ถœํ•œ ๊ตฌ์กฐ์  ๋งต๊ณผ ๋ณต์žก์„ฑ ํ•ซ์ŠคํŒŸ(Hotspot)์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ํ•ต์‹ฌ ์ง„์ž…์ ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ์ง€์นจ์„œ๋กœ ๊ธฐ๋Šฅํ•œ๋‹ค [4, 27]. - **My Project Relevance:** ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ํ•ด๋…ํ•˜๊ณ  ๊ตฌ์กฐ์  ๊ฒฐํ•จ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋™ํ™”๋œ '์ฝ”๋“œ ์ฝ๊ธฐ' ์—ญ๋Ÿ‰๊ณผ, ์ด๋ฅผ ๋’ท๋ฐ›์นจํ•˜๋Š” ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •๋ฆฝํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค [7, 28]. ### Adjacent Topics - [[์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ๋ถ„์„ (SCA)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ •์  ์ฝ”๋“œ ๋ถ„์„์ด ํŒ€ ๋‚ด๋ถ€์—์„œ ์ž‘์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค๋ฉด, SCA๋Š” ์™ธ๋ถ€ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€ ์˜์กด์„ฑ์— ์กด์žฌํ•˜๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ๋ผ์ด์„ ์Šค ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๋ฏ€๋กœ ํ•จ๊ป˜ ์Šค์บ” ์ฒด๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ™•์žฅ๋œ๋‹ค [9, 16, 29]. - [[ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ฆฌ๋ทฐ (Pull Request Review)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ž๋™ํ™”๋œ ์ •์  ๋ถ„์„ ํ”ผ๋“œ๋ฐฑ์ด ์‹ค์ œ ์ธ๊ฐ„ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค, ๊ทธ๋ฆฌ๊ณ  GitHub ๋“ฑ์˜ ํ”Œ๋žซํผ๊ณผ ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉํ•˜์—ฌ ๋” ๋‚˜์€ ํ˜‘์—… ๋งฅ๋ฝ์„ ํ˜•์„ฑํ•˜๋Š”์ง€ ํƒ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค [7, 30]. --- *Last updated: 2026-05-02* ## 1. ๊ฐœ์š” ์ •์  ์ฝ”๋“œ ๋ถ„์„(Static Code Analysis)์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ ์ž์ฒด์˜ ๊ตฌ์กฐ, ๊ตฌ๋ฌธ, ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋ถ„์„ํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๊ฒฐํ•จ, ๋ณด์•ˆ ์ทจ์•ฝ์ , ์ฝ”๋”ฉ ํ‘œ์ค€ ์œ„๋ฐ˜ ๋“ฑ์„ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„(Shift-left)์—์„œ ๋ฒ„๊ทธ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜์—ฌ ์ˆ˜์ • ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ณ  ์ผ๊ด€๋œ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค. ## 2. ์ฃผ์š” ๋ถ„์„ ๋Œ€์ƒ ๋ฐ ๊ธฐ๋ฒ• - **๊ตฌ๋ฌธ ๋ถ„์„ (Syntax Analysis)**: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ• ๊ทœ์น™ ์ค€์ˆ˜ ์—ฌ๋ถ€ ํ™•์ธ (Linter). - **๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ถ„์„ (Data Flow Analysis)**: ๋ณ€์ˆ˜์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์œ„ํ—˜ ์‹๋ณ„. - **์ œ์–ด ํ๋ฆ„ ๋ถ„์„ (Control Flow Analysis)**: ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ(Dead Code)๋‚˜ ๋ณต์žก๋„๊ฐ€ ๋†’์€ ๋…ผ๋ฆฌ ๊ตฌ์กฐ ํƒ์ง€. - **๋ณด์•ˆ ์ทจ์•ฝ์  ์Šค์บ” (SAST)**: SQL ์ธ์ ์…˜, ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…(XSS) ๋“ฑ ์ž˜ ์•Œ๋ ค์ง„ ๋ณด์•ˆ ์•ฝ์  ํŒจํ„ด ๊ฒ€์ƒ‰. ## 3. ์‹ค์ „ ์ ์šฉ ๊ฐ€์น˜ - **ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ (Quality Gate)**: CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉ๋˜์–ด ํŠน์ • ์ˆ˜์ค€ ์ด์ƒ์˜ ํ’ˆ์งˆ๊ณผ ๋ณด์•ˆ ์ ์ˆ˜๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ ์ฝ”๋“œ๊ฐ€ ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฒƒ์„ ์ž๋™ ์ฐจ๋‹จ. - **๊ธฐ์ˆ ์  ๋ถ€์ฑ„ ์‹œ๊ฐํ™”**: ๋ณต์žก๋„(Cyclomatic Complexity), ์ค‘๋ณต ์ฝ”๋“œ ๋น„์œจ ๋“ฑ์„ ์ •๋Ÿ‰ํ™”ํ•˜์—ฌ ์šฐ์„ ์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ 'ํ•ซ์ŠคํŒŸ' ์‹๋ณ„. - **์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ๊ฐ•์ œ**: ํŒ€ ๋‚ด ์•ฝ์†๋œ ๋ช…๋ช… ๊ทœ์น™๊ณผ ์Šคํƒ€์ผ์„ ์ž๋™ํ™”๋œ ๋„๊ตฌ๋กœ ๊ฒ€์ฆํ•˜์—ฌ ๋ฆฌ๋ทฐ์–ด์˜ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ค„์ž„. ## 4. ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ - **์˜คํƒ (False Positives)**: ๋„๊ตฌ๊ฐ€ ์ •์ƒ์ ์ธ ์ฝ”๋“œ๋ฅผ ์˜ค๋ฅ˜๋กœ ์ž˜๋ชป ํŒ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋ฏ€๋กœ, ํŒ€์˜ ์ƒํ™ฉ์— ๋งž๋Š” ์ •๊ตํ•œ ๋ฃฐ์…‹ ํŠœ๋‹์ด ํ•„์ˆ˜์ ์ž„. - **๋ถ„์„ ์„ฑ๋Šฅ**: ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์ „์ฒด ๋ถ„์„์— ๊ธด ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ๋ถ„์„ํ•˜๋Š” ์ฆ๋ถ„ ๋ถ„์„(Incremental Analysis) ๋„์ž… ๊ฒ€ํ† . - **AI์˜ ๋ณด์™„**: ์ตœ๊ทผ์—๋Š” AI๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋” ์ •ํ™•ํ•œ ์ˆ˜์ •์•ˆ(Autofix)์„ ์ œ์•ˆํ•˜์ง€๋งŒ, ํ™˜๊ฐ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ์ตœ์ข… ์Šน์ธ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ. ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ**: ๊ฒ€์ฆ ์™„๋ฃŒ (Verified) - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„**: A - **๊ฒ€ํ†  ์ด์œ **: ์†Œํ”„ํŠธ์›จ์–ด์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ฑ์„ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋‹ด๋ณดํ•˜๊ธฐ ์œ„ํ•œ ์ž๋™ํ™”๋œ ํ’ˆ์งˆ ๋ณด์ฆ ํ‘œ์ค€ ์ •๋ฆฝ. ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** draft - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** Datacollector์—์„œ ์ž๋™ ์ถ”์ถœ๋œ ์œ„ํ‚ค ๋ฐ์ดํ„ฐ์˜ ์ดˆ๊ธฐ ํ†ตํ•ฉ. ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** None - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** CREATE - **์ฒ˜๋ฆฌ ์ด์œ :** ์‹ ๊ทœ ์ง€์‹ ์ฒด๊ณ„ ๋„์ž