์์ค ์ฝ๋ ๋ถ์ํ๊ธฐ
SQ Official Doc Link:ย https://docs.sonarqube.org/display/SCAN
Table of Contents
SonarQube ํ๋ซํผ ์ค์น๋ฅผ ์๋ฃํ ๊ฒฝ์ฐ, Analyzer๋ฅผ ์ค์นํ๊ณ ์ฝ๋๋ฅผ ๋ถ์ํด ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ถ์์ ํ๊ธฐ ์ ์ SonarQube ํ๋ก์ ํธ ์ค์ ์ ๋จผ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ํ๋ก์ ํธ ์ค์ ์ ํ๊ณ ์ถ๋ค๋ฉด ํ๋ก๋น์ ธ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ์ ๋ฒ์: ํ์ผ ์ข ๋ฅ ๋ฐ ๋ฐ์ดํฐ
SonarQube๋ 20๊ฐ์ง ์ด์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ถ์ํด์ ํ์ง ๋ฉํธ๋ฆญ์ ์์ฑํ๊ณ ์ด์(์ฝ๋ฉ ํ์ค ์๋ฐ ํญ๋ชฉ)๋ฅผ ๊ฒ์ถํฉ๋๋ค. ๋ค๋ง ๋ถ์ ๊ฒฉ๊ณผ๋ ๋ถ์ ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐ๋ผ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- ๋ถ์์ ์ง์ํ๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํด, SonarQube๊ฐ ์ง์ํ๋ SCM ์ ๊ณต์๋ก๋ถํฐ "blame" ์ ๋ณด๋ฅผ ์๋ ์ถ์ถํฉ๋๋ค. Git, SVN์ ๊ธฐ๋ณธ ์ง์์ ๋๋ค. ๋ค๋ฅธ SCM ์ ๊ณต์ ์ฌ์ฉ์ ์ถ๊ฐ๋ก ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์ผ ํฉ๋๋ค.
- ๋ถ์์ ์ง์ํ๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํด, ์์ค ์ฝ๋์ ์ ์ ๋ถ์์ ์ํํฉ๋๋ค(Java ํ์ผ, COBOL ํ๋ก๊ทธ๋จ ๋ฑ).
- ๋ถ์์ ์ง์ํ๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํํด, ์ปดํ์ผ ๋ ์ฝ๋์ ์ ์ ๋ถ์์ ์ํํฉ๋๋ค(Java์ .class ํ์ผ, C#์ .dll ํ์ผ ๋ฑ).
- ๋ถ์์ ์ง์ํ๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํํด, ๋์ ๋ถ์์ ์ํํฉ๋๋ค.
์ธ์ํ์ง ๋ชปํ๋ ํ์ผ๋ค
SonarQube๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ๋ฌ๊ทธ์ธ(์ฆ, ์ฝ๋ ๋ถ์ ์์ง)์ด ์ธ์ํ๋ ํ์ผ๋ง์ ๋ถ์ ๊ณผ์ ์์ ํ๋ก์ ํธ๋ก ๋ก๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, SonarQube ์ธ์คํด์ค์ Java์ JavaScript ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋์ด ์๋ค๋ฉด .java ํ์ผ๊ณผ .jsp ํ์ผ์ ๋ก๋ํ์ง๋ง .xml ํ์ผ์ ๋ฌด์ํฉ๋๋ค. ๋ค๋ฅธ ํ ์คํธ ํ์ผ์ ๋ก๋ํด์ผ ํ๋ ๊ฒฝ์ฐ, SonarQube์์ Settings > Exclusions > FIles > Import unknown files๋ฅผ true๋ก ์ค์ ํฉ๋๋ค..
๋ถ์์ ์งํํ๋ ๊ณผ์ ์์
SonarQube ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ๋ถ์ ์์ง์ ์ ๊ณต๋ ํ์ผ์ ๋ถ์ํ๋ฉฐ, ๋ถ์ ๊ฒฐ๊ณผ ์ ๋ณด๋ ๋ณด๊ณ ์์ ํํ๋ก ์๋ฒ์ ๋ค์ ์ ์ก๋ฉ๋๋ค.๋ ๋ณด๊ณ ์์ ํํ๋ก ์๋ฒ๋ก ๋ค์ ์ ์ก๋ฉ๋๋ค. ์๋ฒ๋ ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ถ์ํฉ๋๋ค. ๋ถ์ ๋ณด๊ณ ์๋ ํ์ ๋ด๊ฒจ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก, SonarQube ์๋ฒ์ ๋ก๊ทธ์ ๋ถ์์ด ์๋ฃ๋ ๊ฒ์ผ๋ก ํ์๋๋๋ผ๋ ์ค์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ SonarQube์ ํ์๋๊ธฐ๊น์ง๋ ์ฝ๊ฐ์ ์๊ฐ์ด ์์๋ฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ ์์ ๋ณ๋์ ์์ด์ฝ์ด์ผ๋ก ํ์ฌ ์ด๋ค ๊ณผ์ ์ด ์ํ๋๊ณ ์๋์ง ํ์ํฉ๋๋ค. ํด๋น ์์ด์ฝ์ ๋ง์ฐ์ค ์ปค์๋ฅผ ์ฌ๋ฆฌ๋ฉด ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค(์ ์ ํ ๊ถํ์ ๊ฐ์ง ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ, ์์ด์ฝ์ ํด๋ฆญํด ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค)
ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ ๋ค ์์ด์ฝ์ ์ฌ๋ผ์ง๋๋ค. ๋ค๋ง ๋ถ์์ด ์คํจํ๋ ๊ฒฝ์ฐ ์์ด์ฝ์ ์๋์ ๊ฐ์ด ํ์๋ฉ๋๋ค:
๋ถ์ ๊ณผ์ ์ค ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ธ๋ถ ๋ด์ฉ์ Background Tasks๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
๋ถ์ ์ํํ๊ธฐ
๊ฐ์ฅ ๋จผ์ , ๋ถ์ ๋์ ์์ค ์ฝ๋์ ๊ด๋ จ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์ผ ํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ง์ ๋ค์ด๋ก๋ ํ ์ค์นํ๊ฑฐ๋ ๋ง์ผํ๋ ์ด์ค๋ฅผ ํตํด ์ค์นํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค:
- SonarQube Scanner: ์ปค๋งจ๋ ๋ผ์ธ์์ ๋ถ์์ ์ํํฉ๋๋ค.
- SonarQube Scanner for MSBuild: .Net ํ๋ก์ ํธ ๋ถ์์ ์ํํฉ๋๋ค.
- SonarQube Scanner for Ant: Ant ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ ๋ถ์์ ์ํํฉ๋๋ค.
- SonarQube Scanner for Maven: Maven ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ๋ถ์ํฉ๋๋ค
- SonarQube Scanner for Gradle: Gradle ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ๋ถ์ํฉ๋๋ค.
- SonarQube Scanner For Jenkins: Jenkins์์ ๋ถ์์ ์ํํฉ๋๋ค.
SonarQube๊ฐ ๋ถ์์ ์ํํ๋ ๋์ ์ํฐ ๋ฐ์ด๋ฌ์ค ์ค์บ๋๋ฅผ ์คํํ์ง ์์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ํฐ ๋ฐ์ด๋ฌ์ค ์ค์บ๋๋ก ์ธํด ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
SonarCloud ์ฌ์ฉ์์ด์ญ๋๊น?
SonarCloud ๋ฐย TravisCIย ์ฌ์ฉ์๋ Travis Add-On์ ํ์ฉํด ์ต์ํ์ ์ค์ ๋ง์ผ๋ก SonarCould๋ก ์์ค ์ฝ๋ ๋ถ์๊ฒฐ๊ณผ๋ฅผ ํผ๋ํ ์ ์์ต๋๋ค.ย https://docs.travis-ci.com/user/sonarqube/๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋ ๋ง์ ์ ๋ณด
์๋ ๋ด์ฉ์ ์ฐธ์กฐํ์ญ์์ค.:
ยฉ 2017-2018 Moses Kim.
๋ณ๋์ ์ธ๊ธ์ด ์๋ ํ, ์ด ์คํ์ด์ค์ ์ปจํ
์ธ ๋ ํฌ๋ฆฌ์์ดํฐ๋ธ ์ปค๋จผ์ฆ ์ ์์ํ์-๋น์๋ฆฌ-๋์ผ์กฐ๊ฑด๋ณ๊ฒฝํ๋ฝ 4.0 ๊ตญ์ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์ด์ฉํ ์ ์์ต๋๋ค.
SONARQUBE๋ SonarSource SA์ ํธ๋ ์ด๋ ๋งํฌ์
๋๋ค. ๋ชจ๋ ํธ๋ ์ดํธ ๋งํฌ ๋ฐ ์ ์๊ถ์ ๊ฐ ์์ ์์ ์์ ๋ฌผ์
๋๋ค.
::: SonarQube ๊ด๋ จ ๋ฌธ์ : ์ด๋ฉ์ผ :::