Skip to main content

CodeQL ์ฟผ๋ฆฌ ํŒฉ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒฉ ๊ด€๋ฆฌ

CodeQL ์ต์Šคํ…์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Visual Studio Code์—์„œ CodeQL ์ฟผ๋ฆฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒฉ์„ ๋ณด๊ณ , ์“ฐ๊ณ , ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒฉ ์ž‘์—…์— Visual Studio Code์šฉ CodeQL ์ต์Šคํ…์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ด์ 

Visual Studio Code ์ต์Šคํ…์…˜์šฉ CodeQL์„(๋ฅผ) ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž‘์—… ์˜์—ญ์—์„œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™•์ธํ•  ํ•„์š” ์—†์ด CodeQL ์ฟผ๋ฆฌ ํŒฉ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • CodeQL ์ฟผ๋ฆฌ ํŒฉ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ VS Code ์ž‘์—… ์˜์—ญ ๋‚ด์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

  • CodeQL ์ฟผ๋ฆฌ ํŒฉ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

  • CodeQL ์ฟผ๋ฆฌ ํŒฉ ๋ฐ ๋ชจ๋“  ์ข…์†์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

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

CodeQL ์ฟผ๋ฆฌ ํŒฉ์— ์ข…์†์„ฑ ์„ค์น˜

  1. VS Code์—์„œ VS Code Command Palette์„(๋ฅผ) ์—ด๊ณ  CodeQL: ํŒฉ ์ข…์†์„ฑ ์„ค์น˜๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ข…์†์„ฑ์„ ์„ค์น˜ํ•  ํŒฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

CodeQL ์ฟผ๋ฆฌ ํŒฉ ๋‹ค์šด๋กœ๋“œ

  1. VS Code์—์„œ VS Code Command Palette์„(๋ฅผ) ์—ด๊ณ  CodeQL: ํŒฉ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ชจ๋“  ํ•ต์‹ฌ ์ฟผ๋ฆฌ ํŒฉ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•  ํŠน์ • ํŒฉ์˜ ์ „์ฒด ์ด๋ฆ„์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ์ฟผ๋ฆฌ ํŒฉ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CodeQL ์ฟผ๋ฆฌ ํŒฉ ๋ฐ ํ•ด๋‹น ์ข…์†์„ฑ ํ™•์ธ

  1. VS Code์˜ CodeQL ํŒฉ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฃจํŠธ์—์„œ qlpack.yml ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.

  2. qlpack.yml ํŒŒ์ผ์˜ dependencies ์„น์…˜์—์„œ ํŒฉ์ด ์ข…์†ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ํ•„์š”์— ๋”ฐ๋ผ VS Code์˜ Intellisense ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์š”์†Œ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ๊ฐ€๋ฆฌํ‚ค๋ฉด Visual Studio Code์ด(๊ฐ€) ํ•ด๊ฒฐ๋˜๋ฏ€๋กœ ์š”์†Œ์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์ฟผ๋ฆฌ ์š”์†Œ์˜ ์ „์ฒด ์ •์˜๋ฅผ ๋ณด๋ ค๋ฉด ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ •์˜๋กœ ์ด๋™์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒฉ์ด ๋™์ผํ•œ Visual Studio Code ์ž‘์—… ์˜์—ญ ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ž‘์—… ์˜์—ญ ๋‚ด์˜ ์ •์˜๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์šด๋กœ๋“œํ•œ ์ข…์†์„ฑ์ด ์ €์žฅ๋˜๋Š” ํŒจํ‚ค์ง€ ์บ์‹œ์— ์ €์žฅ๋œ ์ •์˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์บ์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๊ณต์œ  ์œ„์น˜์ž…๋‹ˆ๋‹ค.

CodeQL ๋ชจ๋ธ ํŒฉ ์ž‘์—…

์ฐธ๊ณ  ํ•ญ๋ชฉ

CodeQL ๋ชจ๋ธ ํŒฉ์€ ํ˜„์žฌ ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ƒํƒœ์ด๋ฉฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŒฉ์€ C/C++, C#, Java/Kotlin, Python, Ruby ๋ถ„์„์„ ์œ„ํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

Visual Studio Code์— ๋Œ€ํ•œ CodeQL ํ™•์žฅ์˜ CodeQL ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ์—์„œ C#, Java/Kotlin, Python, Ruby์— ๋Œ€ํ•œ ๋ชจ๋ธ๋ง ์ข…์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

CodeQL ๋ชจ๋ธ ํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š” ์ข…์†์„ฑ์„ ํฌํ•จํ•˜๋„๋ก code scanning ๋ถ„์„์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Visual Studio Code์šฉ CodeQL ์ต์Šคํ…์…˜์—๋Š” ๋ชจ๋ธ ํŒฉ์„ ๋งŒ๋“ค๊ณ  ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ์ „์šฉ ํŽธ์ง‘๊ธฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” CodeQL ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ ์‚ฌ์šฉ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.