ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๐Ÿ“ฐ | ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ๋ฐฉ๋ฒ•, ์ •์ &๋™์  ๋ถ„์„, Sonar Cloud
    ๐Ÿ“ฐ ์•—ํ‹ฐ๋Œ ์Šคํ„ฐ๋”” 2024. 8. 8. 19:19

     

    Sonarํด๋ผ์šฐ๋“œ์™€ ๋ฏธํŒ…ํ•  ๋•Œ ์ฒ˜์Œ ์ ‘ํ•ด๋ณด๋Š” ๊ฐœ๋ฐœ ์ƒ์‹๋“ค์ด ์žˆ์—ˆ๋‹ค. ๋ฏธํŒ…์ด ๋๋‚˜์ž๋งˆ์ž ๊ฒ€์ƒ‰โ™พ๏ธ์˜ ์—ฐ์†..๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๋ฉฐ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด์„œ ํ†บ์•„๋ดค๋‹ค.

     

     

    ๐Ÿคท๐Ÿป‍โ™€๏ธ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

     ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ํ†ต์šฉ๋˜๋Š” ์ปจ๋ฒค์…˜, ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ, ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ์ฑ„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค. ๋”์šฑ์ด ๊ฐœ๋ฐœ์ž ๊ฐœ๊ฐœ์ธ์ด ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šด๋‹ค ํ•˜๋”๋ผ๋„ ๋ณธ์ธ์—๊ฒŒ ์ต์ˆ™ํ•œ ์–ธ์–ด์Šคํƒ€์ผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์‚ฌ๋‚ด์—์„œ ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์˜ ๋ฐฉ์‹๊ณผ ๋ณธ์ธ์˜ ์Šคํƒ€์ผ์ด ๋‹ค๋ฅด๋ฉด ๊ทธ ๊ฐ„๊ทน์€ ์ปค์ง„๋‹ค. ๋งˆ์น˜ Java๋ฅผ C์–ธ์–ด ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค๊ฑฐ๋‚˜ Go์–ธ์–ด๋ฅผ JS์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ฒŒ ๋œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ’ˆ์งˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

     ๋˜ํ•œ ์ฝ”๋“œ ํ’ˆ์งˆ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉด ์ž‘์—… ํšจ์œจ์ด ๋†’์•„์ง€๋Š”๋ฐ, ์•„๋ž˜์˜ ์ด์œ ๋“ค๋กœ ์ธํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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

     

    ๐Ÿ’๐Ÿป‍โ™€๏ธ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ(Code Review) : ํŒ€์›๋“ค์ด ์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ๋ฒ„๊ทธ, ์Šคํƒ€์ผ ๋ฌธ์ œ, ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜ ๋“ฑ์„ ๋ฐœ๊ฒฌํ•œ๋‹ค.
    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Testing) : ๊ฐœ๋ณ„ ํ•จ์ˆ˜๋‚˜ ๋ชจ๋“ˆ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋ถ„์ด ์ œ๋Œ€๋กœ ํ†ตํ•ฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
    • CI/CD ํŒŒ์ดํ”„๋ผ์ธ(CI/CD Pipeline) : Jenkins, Travis CI, GitHub Actions ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์†์  ํ†ตํ•ฉ(Continuous Integration)๊ณผ ์ง€์†์  ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋˜๊ณ  ๋ฐฐํฌ๋˜๋„๋ก ํ•œ๋‹ค.
    •  ์ฝ”๋”ฉ ํ‘œ์ค€ ๋ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ(Code Standards and Style Guides) : ํŒ€ ์•ˆ์—์„œ ์Šคํƒ ๋‹ค๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ , ์ค€์ˆ˜ํ•œ๋‹ค.
    • ๋ฆฌํŒฉํ† ๋ง(Refactoring) : ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ธ๋‹ค.
    • ๋ฌธ์„œํ™”(Documentation) : READMEํŒŒ์ผ ๋“ฑ์„ ์ž‘์„ฑํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ชฉ์ ๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ๋ช…ํ™•ํžˆ ํ•˜์—ฌ ์ฝ”๋“œ ์ž์ฒด์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๊ณ , ํ•จ์ˆ˜๋‚˜ ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ๋ฒ•์„ ๋ฌธ์„œํ™” ํ•œ๋‹ค.

     

    ๐Ÿ’๐Ÿป‍โ™€๏ธ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•-์ •์  ๋ถ„์„ ๋„๊ตฌ

    ์ •์  ๋ถ„์„ ๋„๊ตฌ(Static Analysis Tools) :  ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•œ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋‚˜ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    • ๋ถ„์„ ์‹œ์  : ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„, ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ˆ˜ํ–‰๋œ๋‹ค.
    • ์ดˆ์  : ์ฝ”๋“œ ์Šคํƒ€์ผ, ๋ฌธ๋ฒ• ์˜ค๋ฅ˜, ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ, ๋ณด์•ˆ ์ทจ์•ฝ์ , ์ฝ”๋“œ ๋ณต์žก๋„, ์ค‘๋ณต ์ฝ”๋“œ, ํ˜•์‹ ์˜ค๋ฅ˜ ๋“ฑ์„ ์‹๋ณ„ํ•œ๋‹ค.
    • ๋ถ„์„ ๋„๊ตฌ : SonarQube, ESLint, Pylint
    • ์žฅ์  :
      • ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์  ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์ž๋™ํ™”๋œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ณ  ๊ด‘๋ฒ”์œ„ํ•œ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋‹จ์  : (→ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ ๋ถ„์„ํ•˜๋Š” ๋™์ ๋ถ„์„Dynamic Analysis์œผ๋กœ ๋ณด์™„ํ•ด์•ผํ•œ๋‹ค.)
      • ์‹คํ–‰ ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋‚ด์ง€ ๋ชปํ•œ๋‹ค.
      • ์‹ค์ œ ๋™์ž‘๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค.

    *์ฐธ๊ณ ! ์ •์  ๋ถ„์„์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ณ , ๋™์  ๋ถ„์„์€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„์„ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜, ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ, ์„ฑ๋Šฅ ๋ฌธ์ œ ๋“ฑ์„ ๋ฐœ๊ฒฌํ•œ๋‹ค. ์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋ถ„์„ ์‹œ์ ์ด ๋‹ฌ๋ผ ์ƒํ˜ธ๋ณด์™„์ ์ด๋‹ค. ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ์ฝ”๋“œ ์ž‘์„ฑ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ , ๋™์  ๋ถ„์„์„ ํ†ตํ•ด ์‹ค์ œ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ „์ฒด์ ์ธ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

     

     

    ๐Ÿ’๐Ÿป‍โ™€๏ธ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•-์ •์  ๋ถ„์„ ๋„๊ตฌ-Sonar Cloud

    ์ถœ์ฒ˜ : sonarcloud.com

    SonarCloud is a cloud-based code analysis service designed to detect code quality issues in 25 different programming languages, continuously ensuring the maintainability, reliability and security of your code.

    SonarCloud๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ •์  ์ฝ”๋“œ ๋ถ„์„์ด๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐœ๋ฐœ ์–ธ์–ด์—์„œ ์ง€์ •๋œ ์ฝ”๋“œ ํ’ˆ์งˆ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ถ„์„ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์•ˆ์ •์„ฑ ๋ฐ ๋ณด์•ˆ ๋“ฑ์„ ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์—…๋ฌดํˆด์ด๋‹ค.

     

    Sonar๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Automatic Analysis๋ฐฉ์‹์„ ๋””ํดํŠธ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

    SonarCloud์˜ ์ž๋™ ๋ถ„์„ ๊ธฐ๋Šฅ์€ ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ๋ณด์•ˆ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ํ†ตํ•ฉ๋˜์–ด ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๊ฐ€ ๋ฐฐํฌ๋˜๊ธฐ ์ „์— ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ์ง๊ด€์ ์ธ ๋Œ€์‹œ๋ณด๋“œ์™€ ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

     

     

     

     

    ๐Ÿ™‹๐Ÿป‍โ™€๏ธ์ •๋ฆฌ

     Sonar๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜๋„๋ฅผ ๋‚ฎ์ถฐ์ฃผ๊ณ  ์‹ ๋ขฐ์„ฑ์„ ๋†’์—ฌ์ฃผ๋ฉฐ, ๊ด€๋ฆฌ์ž๋Š” ๋Œ€์‰ฌ๋ณด๋“œ์—์„œ ์ •๋Ÿ‰์ ์ธ ์ฝ”๋“œ ์ง€ํ‘œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด ํ•ฉ๋ฆฌ์ ์ธ ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํˆด์ด๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ ์ •์  ๋ถ„์„์ด ์—๋Ÿฌ๋‚˜ ๋ฒ„๊ทธ ์ฒ˜๋ฆฌ์— ์ ˆ๋Œ€์ ์ด์ง€๋Š” ์•Š๋‹ค. (๋™์ ๋ถ„์„์„ ํ•จ๊ป˜ ํ•ด์ฃผ๋ฉฐ ์ƒํ˜ธ๋ณด์™„์„ ํ•ด์•ผํ•œ๋‹ค.) ํ•˜์ง€๋งŒ ์ •ํ™•ํ•œ ํŒŒ์•…์„ ํ•˜๋ฉฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ์œ ์šฉํ•œ ํˆด์ธ ๊ฒƒ ๊ฐ™๋‹ค.

     

Designed by Tistory.