Skip to main content

์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ธฐ

ํ…œํ”Œ๋ฆฟ์—์„œ ์ž‘์—…ํ•˜์—ฌ ๊ณ ์œ ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ํŠน์ • ์–ธ์–ด๋ฅผ ๋ถ„์„ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ์ •๋ณด

์ฐธ๊ณ  ํ•ญ๋ชฉ

์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, github/codeql ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋Š” ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์˜ˆ์ œ ์ฟผ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์ •๋œ ์–ธ์–ด์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟ์—์„œ ์ƒˆ ์ฟผ๋ฆฌ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํ•ด๋‹น ์–ธ์–ด๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ CodeQL ์„ค๋ช…์„œ์—์„œ CodeQL ์ฟผ๋ฆฌ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ธฐ

  1. ์ต์Šคํ…์…˜ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ "์ฟผ๋ฆฌ" ๋ณด๊ธฐ๋ฅผ ์—ฐ ๋‹ค์Œ ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ธฐ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. VS Code Command Palette์—์„œ ์ฟผ๋ฆฌ์˜ ๋Œ€์ƒ ์–ธ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ์„ ํƒํ•œ ๊ฒฝ์šฐ ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๋ฉด codeql-custom-queries-LANGUAGE ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ LANGUAGE๋Š” ์„ ํƒํ•œ ์–ธ์–ด์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด example.ql ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ์ฟผ๋ฆฌ ํ…œํ”Œ๋ฆฟ์ด ๊ธฐ์กด ๋˜๋Š” ์ž๋™ ์ƒ์„ฑ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

  3. ํ…œํ”Œ๋ฆฟ์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด "์ฟผ๋ฆฌ" ๋ณด๊ธฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฐธ๊ณ  ์ž๋ฃŒ

CodeQL ์„ค๋ช…์„œ์—์„œ ์ง€์›๋˜๋Š” ์–ธ์–ด์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.