Skip to main content

์†Œ์Šค ์ฝ”๋“œ์˜ ๊ตฌ์กฐ ํƒ์ƒ‰

AST ๋ทฐ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ ์ •๋ณด

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

Visual Studio Code์šฉ CodeQL์—๋Š” AST ๋ทฐ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ์–ด๋Š” CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŒŒ์ผ์˜ AST๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™” ๋ณด๊ธฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›๋ณธ ํŒŒ์ผ์˜ ์–ด๋А ๋ถ€๋ถ„์— ํ•ด๋‹นํ•˜๋Š” CodeQL ํด๋ž˜์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›๋ณธ ํŒŒ์ผ์˜ ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ ๋ณด๊ธฐ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ž‘์—… ์˜์—ญ์— ์ ์ ˆํ•œ ์ฟผ๋ฆฌ(์ผ๋ฐ˜์ ์œผ๋กœ printAST.ql)๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ CodeQL: AST ๋ณด๊ธฐ ๋ช…๋ น์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด main ๋ถ„๊ธฐ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ github/codeql ๋ณต์‚ฌ๋ณธ์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ ์บ์‹œ๊ฐ€ ํ•ด์ œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ต์Šคํ…์…˜์—์„œ "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค" ๋ณด๊ธฐ๋ฅผ ์—ด๊ณ  ํƒ์ƒ‰ํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์˜์—ญ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์›๋ณธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ์—์„œ CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์›๋ณธ ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  3. VS Code Command Palette์—์„œ CodeQL: AST ๋ณด๊ธฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ™œ์„ฑ ํŒŒ์ผ์—์„œ CodeQL ์ฟผ๋ฆฌ(์ผ๋ฐ˜์ ์œผ๋กœ printAST.ql)๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ๋ช‡ ์ดˆ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด AST ๋ทฐ์–ด์— ์›๋ณธ ํŒŒ์ผ์˜ ๊ตฌ์กฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์›๋ณธ ํŒŒ์ผ์˜ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ ค๋ฉด ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋…ธ๋“œ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

AST ๋ทฐ์–ด์—์„œ ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํ•ด๋‹น ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์†Œ์Šค ์ฝ”๋“œ์˜ ์„น์…˜์„ ํด๋ฆญํ•˜๋ฉด AST ๋ทฐ์–ด์— ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.