Skip to main content

Visual Studio Code์—์„œ CodeQL ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ

Visual Studio Code ์ต์Šคํ…์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ CodeQL ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VS Code์˜ ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ ์ •๋ณด

CodeQL ์ฟผ๋ฆฌ๊ฐ€ ์˜ˆ์ƒ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ์˜ˆ์ƒ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ ๊ฒฐ๊ณผ์™€ ๋น„๊ตํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

CodeQL ์ต์Šคํ…์…˜์€ ์ž๋™์œผ๋กœ "ํ…Œ์ŠคํŠธ" ๋ณด๊ธฐ์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด ๋ณด๊ธฐ๋Š” ํ˜„์žฌ ์ž‘์—… ์˜์—ญ์—์„œ ์ฐพ์€ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์ž‘์—… ์˜์—ญ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ UI๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

CodeQL ํ…Œ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰์˜ ์ž์„ธํ•œ ์ถœ๋ ฅ์„ ๋ณด๋ ค๋ฉด CodeQL ํ…Œ์ŠคํŠธ ๋กœ๊ทธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋กœ๊ทธ ์•ก์„ธ์Šค์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ…Œ์ŠคํŠธ

  1. Visual Studio Code์˜ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ โ€œํ…Œ์ŠคํŠธโ€ ๋ณด๊ธฐ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  2. ํŠน์ • ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํŒŒ์ผ ๋˜๋Š” ํด๋” ์ด๋ฆ„์„ ๋งˆ์šฐ์Šค๋กœ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žฌ์ƒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์˜์—ญ์—์„œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ณด๊ธฐ ์ƒ๋‹จ์— ์žˆ๋Š” ์žฌ์ƒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ๋ณด๊ธฐ ์ƒ๋‹จ์— ์žˆ๋Š” ์ค‘์ง€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    "ํ…Œ์ŠคํŠธ ์‹คํ–‰" ๋ฒ„ํŠผ(๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰)๊ฐ€ ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ "ํ…Œ์ŠคํŠธ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท

  3. ์ด ์•„์ด์ฝ˜์€ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ๋˜๋Š” ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ๊ฒฝ์šฐ "ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ"์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์˜ˆ์ƒ ์ถœ๋ ฅ๊ณผ ์‹ค์ œ ์ถœ๋ ฅ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    ํ…Œ์ŠคํŠธ์˜ ์˜ˆ์ƒ ์ถœ๋ ฅ๊ณผ ์‹ค์ œ ์ถœ๋ ฅ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ‘œ์‹œํ•˜๋Š” "ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท

  4. ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ถœ๋ ฅ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด "ํ…Œ์ŠคํŠธ" ๋ณด๊ธฐ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ˆ˜๋ฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง

์ฟผ๋ฆฌ ์„ฑ๋Šฅ์€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ์—ฐ์† ํ†ตํ•ฉ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋กœ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฒ€์‚ฌํ•˜๋ ค๋ฉด ํƒ€์ด๋ฐ ๋ฐ ํŠœํ”Œ ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋„๋ก "์ฟผ๋ฆฌ ์‹คํ–‰: ๋””๋ฒ„๊ทธ" ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด "์ถœ๋ ฅ" ๋ณด๊ธฐ์˜ CodeQL "์ฟผ๋ฆฌ ์„œ๋ฒ„" ํƒญ์˜ ๋กœ๊ทธ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŠœํ”Œ ์ˆ˜๋Š” ์ฟผ๋ฆฌ์—์„œ ๊ณ„์‚ฐํ•œ ์กฐ๊ฑด์ž์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ •์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ๊ฐ€ ํ‰๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ์„œ๋ฒ„๋Š” ๊ณ„์‚ฐํ•˜๋Š” ์กฐ๊ฑด์ž๋ฅผ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ํ‰๊ฐ€์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๋ ค๋ฉด CodeQL: ์บ์‹œ ์ง€์šฐ๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ ์‹คํ–‰ ์ „์— ์ฟผ๋ฆฌ ์„œ๋ฒ„์˜ ์บ์‹œ๋ฅผ ์ง€์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋™๋“ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CodeQL ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ CodeQL ์„ค๋ช…์„œ์˜ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ QL ํ”„๋กœ๊ทธ๋žจ ํ‰๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ฟผ๋ฆฌ์—์„œ ์‹๋ณ„ํ•˜๋ ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ๋ณ€ํ˜• ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ CodeQL๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋Œ€๊ทœ๋ชจ๋กœ ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์ค‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณ€ํ˜• ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ CodeQL ์ฟผ๋ฆฌ ์‹คํ–‰์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.