/
์ฝ”๋“œ ๋ทฐ์–ด

์ฝ”๋“œ ๋ทฐ์–ด

Table of Contents

์ฝ”๋“œ ๋ทฐ์–ด(code viewer)๋Š” SonarQube์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ์†Œ์Šค ์ฝ”๋“œ(์†Œ์Šค ๋ฐ ํ…Œ์ŠคํŠธ ํŒŒ์ผ) ๋ฐ ํ•ด๋‹น ํŒŒ์ผ์˜ ์ƒ์œ„ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:

  • ๋ผ์ธ(Lines)
  • ์ด์Šˆ(Issues): ํ’ˆ์งˆ ํ”„๋กœํŒŒ์ผ์— ํ™œ์„ฑํ™” ๋œ ๊ทœ์น™์— ๋Œ€ํ•œ ์œ„๋ฐ˜ ์‚ฌํ•ญ
  • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€(Test coverage)ย : ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ณ„ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€
  • ์ฝ”๋“œ ์ค‘๋ณต(Duplications): ๋™์ผ ํŒŒ์ผ ํ˜น์€ ๋‹ค๋ฅธ ํŒŒ์ผ ์‚ฌ์ด์˜ ์ฝ”๋“œ ์ค‘๋ณต
  • SCM ์ •๋ณด(SCM information): ํ•ด๋‹น ๋ผ์ธ์„ ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹ํ•œ ์‚ฌ๋žŒ๊ณผ ์ปค๋ฐ‹ํ•œ ๋‚ ์งœ
  • ํ…Œ์ŠคํŠธ ํŒŒ์ผ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(tests)ย ๋ฐ ํ•ด๋‹น ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์‹คํ–‰ ์‹œ๊ฐ„, ์‹คํ–‰ ์ƒํƒœ

์ฝ”๋“œ ๋ทฐ์–ด ํ™”๋ฉด์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • Measures ๋ฐ Code ํŽ˜์ด์ง€๋กœ๋ถ€ํ„ฐ ๋“ค๋ฆด ๋‹ค์šด
  • Issues page ์—์„œ ์ด์Šˆ ํด๋ฆญ
  • ์›น ์ธํ„ฐํŽ˜์ด์Šค ์ตœ์ƒ๋‹จ ์˜ค๋ฅธ์ชฝ์˜ ๊ฒ€์ƒ‰ ์ฐฝ์—์„œ ํŠน์ •ํ•œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰

์ฝ”๋“œ ๋ทฐ์–ด๋Š” ํ˜„์žฌ ํŒŒ์ผ(current file)๊ณผ ๊ณ ์ • ํŒŒ์ผ(pinned file)์˜ ๋‘ ๊ฐ€์ง€ ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํŒŒ์ผ

๋ ˆ์ด์•„์›ƒ

์ฝ”๋“œ ๋ทฐ์–ด๋Š” 2๊ฐœ ํŒŒํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ—ค๋”(header)๋Š” ํŒŒ์ผ ๋งจ ์œ— ๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๋ฉฐ, ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ๋ฐ์ฝ”๋ ˆ์ด์…˜(decoration) ๋ฐ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œ์Šค ์ฝ”๋“œ(source code)๋Š” ์ค‘์•™์— ์œ„์น˜ํ•˜๋ฉฐ, ํ—ค๋”์—์„œ ์„ค์ •ํ•œ ๋ฐ์ฝ”๋ ˆ์ด์…˜์— ๋”ฐ๋ผ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋“ค์„ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํ—ค๋”

ํ—ค๋”(header)๋Š” ์ตœ๋Œ€ 4๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ผ์ธ(Lines), ์ด์Šˆ(Issues), ์ปค๋ฒ„๋ฆฌ์ง€ ํ™•์ธํ•˜๊ธฐ(์†Œ์Šค ํŒŒ์ผ์˜ ๊ฒฝ์šฐ) ํ˜น์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ…Œ์ŠคํŠธ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ), ์ฝ”๋“œ ์ค‘๋ณต์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํŒŒ์ผ๊ณผ ๊ด€๊ณ„ ์—†๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ”„๋กœ์ ํŠธ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฐ์ดํ„ฐ๋Š” ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ”๋“œ ์ค‘๋ณต์ด ์—†๋Š” ๊ฒฝ์šฐ, ์ฝ”๋“œ ์ค‘๋ณต ๋ธ”๋Ÿญ๋„ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ

์ฝ”๋“œ ๋ทฐ์–ด์˜ ์ฃผ ๋ชฉ์ ์€ ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ํ•ด๋‹น ์ด์Šˆ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ๊ณต์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์Šˆ, ์ฝ”๋“œ ์ค‘๋ณต ๋ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฐ์ฝ”๋ ˆ์ด์…˜์€ ํ•ญ์ƒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์Šˆ์˜ ๊ฒฝ์šฐ Issue ํŽ˜์ด์ง€์—์„œ ์ฝ”๋“œ ๋ทฐ์–ด๋กœ ์ ‘๊ทผํ•ด์•ผ๋งŒ ํŽผ์ณ์ง„ ์ƒํƒœ๋กœ ๋ณด์—ฌ์ง€๋ฉฐ, ์‹ ๊ทœ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ์ฐจ์ด(differential) ๊ธฐ๋Šฅ์ด ์ ์šฉ๋œ ๊ฒฝ์šฐ์—๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

์ถ”๊ฐ€ ์•ก์…˜

์ฝ”๋“œ ๋ทฐ์–ด ํ—ค๋”์˜ ์šฐ์ธก ์ƒ์žฅ์— ์œ„์น˜ํ•œ ์•ก์…˜ ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ ์˜ต์…˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:ย 

"Shot Details" ๋ฉ”๋‰ด๊ฐ€ ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ, ํ•ด๋‹น ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์„ ํƒํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ชจ๋‹ฌ ํŒ์—…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

๊ณ ์ • ํŒŒ์ผ(Pinned Files)

์†Œ์Šค ํŒŒ์ผ ๋ฐ ๊ทœ์น™ ์„ค๋ช…์„ ์ง์ ‘ ๊ณ ์ •ํ•˜๊ฑฐ๋‚˜(pin):


ํ˜น์€ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ์ฝ”๋“œ ์ค‘๋ณต ์ƒ์„ธ ํŒ์—…์—์„œ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย 

ํ˜„์žฌ ์•กํ‹ฐ๋ธŒ ์ƒํƒœ๋กœ ๊ณ ์ •๋œ ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ์ถ•์†Œ/ํ™•๋Œ€ํ•˜๊ฑฐ๋‚˜ ์œˆ๋„์šฐ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์•กํ‹ฐ๋ธŒ ์ƒํƒœ์ธ ์œˆ๋„์šฐ๋Š” ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๊ณ ์ •ํ•˜๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์ •๋ณด

์ฝ”๋“œ ๋ทฐ์–ด์™€ ๊ด€๋ จํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋Š” ์•„๋ž˜ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค:

Related content

ยฉ 2017-2018 Moses Kim.

๋ณ„๋„์˜ ์–ธ๊ธ‰์ด ์—†๋Š” ํ•œ, ์ด ์ŠคํŽ˜์ด์Šค์˜ ์ปจํ…์ธ ๋Š” ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒ ์ปค๋จผ์ฆˆ ์ €์ž‘์žํ‘œ์‹œ-๋น„์˜๋ฆฌ-๋™์ผ์กฐ๊ฑด๋ณ€๊ฒฝํ—ˆ๋ฝ 4.0 ๊ตญ์ œ ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
SONARQUBE๋Š” SonarSource SA์˜ ํŠธ๋ ˆ์ด๋“œ ๋งˆํฌ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŠธ๋ ˆ์ดํŠธ ๋งˆํฌ ๋ฐ ์ €์ž‘๊ถŒ์€ ๊ฐ ์†Œ์œ ์ž์˜ ์†Œ์œ ๋ฌผ์ž…๋‹ˆ๋‹ค.

::: SonarQube ๊ด€๋ จ ๋ฌธ์˜ : ์ด๋ฉ”์ผ :::