Skip to main content

bqrs ๋””์ฝ”๋”ฉ

BQRS์—์„œ ๋‹ค๋ฅธ ์–‘์‹์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CodeQL์€(๋Š”) ๋‹ค์Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์œ ํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • GitHub.com์˜ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, GitHub CodeQL ์‚ฌ์šฉ ์•ฝ๊ด€ ์ฐธ์กฐ
  • GitHub Code Security๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋œ GitHub Team์˜ ์กฐ์ง ์†Œ์œ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

์ด ๋ฌธ์„œ์˜ ๋‚ด์šฉ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ์ฝ˜ํ…์ธ ๋Š” CodeQL CLI์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์š”์†Œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/github/codeql-cli-binaries/releases์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ ์ด ๋ช…๋ น์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ --help ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

Shell
codeql bqrs decode [--output=<file>] [--result-set=<name>] [--sort-key=<col>[,<col>...]] <options>... -- <file>

์„ค๋ช…

BQRS์—์„œ ๋‹ค๋ฅธ ์–‘์‹์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

--output ์˜ต์…˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋””์ฝ”๋”ฉ๋œ ์ถœ๋ ฅ์ด ํ‘œ์ค€ ์ถœ๋ ฅ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

์˜ต์…˜

๊ธฐ๋ณธ ์˜ต์…˜

<file>

[ํ•„์ˆ˜] ๋””์ฝ”๋”ฉํ•  BQRS ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

-o, --output=<file>

์›ํ•˜๋Š” ์ถœ๋ ฅ์„ ์“ธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

-r, --result-set=<name>

๋””์ฝ”๋”ฉํ•  BQRS ํŒŒ์ผ์—์„œ ํŠน์ • ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์€ codeql bqrs ์ •๋ณด๋กœ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ์„ ํƒํ•œ ์ถœ๋ ฅ ํ˜•์‹ ๋ฐ ์ฒ˜๋ฆฌ ์˜ต์…˜์ด ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ๋””์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

-k, --sort-key=<col>[,<col>...]

์„ ํƒํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ํ‘œ์‹œ๋œ ์—ด๋ณ„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

--sort-direction=<direction>[,<direction>...]

ํ‘œ์‹œ๋œ ์ •๋ ฌ ๋ฐฉํ–ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์—ด์— ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹ ์˜ต์…˜

--format=<fmt>

์ถœ๋ ฅ ํ˜•์‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

text(๊ธฐ๋ณธ๊ฐ’): ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

csv: ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’

json: JSON์„ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค.

bqrs: BQRS. ์ด ๊ฐ’์€ --output์™€(๊ณผ) ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --sort-key์™€(๊ณผ) ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

--no-titles

text ๋ฐ csv ํ˜•์‹์€ ์—ด ์ œ๋ชฉ์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

--entities=<fmt>[,<fmt>...]

[๊ณ ๊ธ‰] ์—”ํ„ฐํ‹ฐ ํ˜•์‹์˜ ๊ฒฐ๊ณผ ์—ด์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„ ํƒ ํ•ญ๋ชฉ์„ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

url: ์—”ํ„ฐํ‹ฐ ํ˜•์‹์— ๋Œ€ํ•ด ์ด๋Ÿฌํ•œ URL์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ฟผ๋ฆฌ๊ฐ€ ์ปดํŒŒ์ผ๋œ ๊ฒฝ์šฐ ์›๋ณธ ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” URL์ž…๋‹ˆ๋‹ค.

string: ์—ด์— ๋Œ€ํ•œ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๋„๋ก ์ฟผ๋ฆฌ๊ฐ€ ์ปดํŒŒ์ผ๋œ ๊ฒฝ์šฐ QL์˜ toString() ๋ฐฉ๋ฒ•์— ์˜ํ•ด ๊ณ„์‚ฐ๋œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

id: ์—”ํ„ฐํ‹ฐ์˜ ๋‚ด๋ถ€ ID๋กœ, ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

all: BQRS ํŒŒ์ผ์ด ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์—ด์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์„ ํƒํ•œ ๋ชจ๋“  ์˜ต์…˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ๋งค๊น€ ์˜ต์…˜(๋Œ€ํ™”ํ˜• ํ”„๋ŸฐํŠธ ์—”๋“œ์—์„œ ์‚ฌ์šฉ)

--rows=<num>

[๊ณ ๊ธ‰] ์„ ํƒํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์—์„œ ์œ„์ชฝ์—์„œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ --start-at์ด(๊ฐ€) ์ง€์ •ํ•œ ์œ„์น˜์—์„œ ์ด ๋งŽ์€ ํ–‰์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

--start-at=<offset>

[๊ณ ๊ธ‰] BQRS ํŒŒ์ผ์˜ ํŠน์ • ๋ฐ”์ดํŠธ ์˜คํ”„์…‹์— ์ •์˜๋œ ํ–‰ ์ธ์‡„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”„์…‹์€ codeql bqrs ์ •๋ณด ๋˜๋Š” --rows ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์ „ ํ˜ธ์ถœ์˜ JSON ์ถœ๋ ฅ์— ์žˆ๋Š” "๋‹ค์Œ" ํฌ์ธํ„ฐ์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜คํ”„์…‹์€ ์˜๋ฏธ์—†๋Š” ์ถœ๋ ฅ ๋ฐ/๋˜๋Š” ๋ช…์‹œ์  ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ --rows์™€(๊ณผ) ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ --sort-key์™€(๊ณผ) ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์˜ต์…˜

-h, --help

์ด ๋„์›€๋ง ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

-J=<opt>

[๊ณ ๊ธ‰] ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” JVM์— ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

(๊ณต๋ฐฑ์„ ํฌํ•จํ•˜๋Š” ์˜ต์…˜์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•˜์„ธ์š”.)

-v, --verbose

์ถœ๋ ฅ๋˜๋Š” ์ง„ํ–‰๋ฅ  ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

-q, --quiet

์ถœ๋ ฅ๋˜๋Š” ์ง„ํ–‰๋ฅ  ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ค„์ž…๋‹ˆ๋‹ค.

--verbosity=<level>

[๊ณ ๊ธ‰] ์„ธ๋ถ€ ์ •๋ณด ํ‘œ์‹œ ์ˆ˜์ค€์„ ์˜ค๋ฅ˜, ๊ฒฝ๊ณ , ์ง„ํ–‰๋ฅ , ์ง„ํ–‰๋ฅ +, ์ง„ํ–‰๋ฅ ++, ์ง„ํ–‰๋ฅ +++ ์ค‘ ํ•˜๋‚˜๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. -v ๋ฐ -q๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

--logdir=<dir>

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

(๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ด๋ฆ„์œผ๋กœ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด --log-to-stderr์„(๋ฅผ) ์ง€์ •ํ•˜๊ณ  stderr๋ฅผ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค.)

--common-caches=<dir>

[๊ณ ๊ธ‰] ๋‹ค์šด๋กœ๋“œํ•œ QL ํŒฉ ๋ฐ ์ปดํŒŒ์ผ๋œ ์ฟผ๋ฆฌ ๊ณ„ํš๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ CLI ์‹คํ–‰ ๊ฐ„์— ์œ ์ง€๋˜๋Š” ๋””์Šคํฌ์˜ ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๊ธฐ๋ณธ๊ฐ’์€ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ฆ„์ด ์ง€์ •๋œ .codeql ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์„ค์ •๋˜๋ฉฐ, ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

v2.15.2๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.