μλνλΈλ μ μ μ½λ λΆμ λꡬ μ€ νλλ‘ μ°μ μ μ λΆμμ λν΄ κ°λ¨νκ² μμλ³΄κ² μ΅λλ€.
μ μ λΆμμ΄λ?
μ μ λΆμμ νλ‘κ·Έλ¨μ μ€ννμ§ μκ³ μμ€ μ½λλ₯Ό μλμΌλ‘ κ²μ¬ν¨μ¬ μννλ λΆμ λ°©λ²μ λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μ½λ λ² μ΄μ€μ λν μ΄ν΄λ₯Ό μ 곡νκ³ μ½λ λ² μ΄μ€κ° κ·μ μ μ€μνκ³ μμ νλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
μ μ λΆμ μ£Όμ νΉμ§
κ΅¬λΆ | λ΄μ© |
μ½λ κ²μ¬ | μ½λμ λ¬Έλ², μ€νμΌ, μ μ¬μ λ²κ·Έ, 보μ μ·¨μ½μ λ±μ μ°ΎκΈ° μν΄ μ¬μ©λ©λλ€. μ΄λ μ½λμ λμμ μ΄ν΄νμ§ μκ³ λ κ°λ₯ν μΌμ λλ€. |
λꡬ μ¬μ© | μ μ λΆμμ μννλ λꡬλ€μ΄ μμ΅λλ€. |
μλν | μ μ λΆμ λꡬλ μ§μμ ν΅ν©(CI) μμ€ν μ ν΅ν©λμ΄ μλμΌλ‘ μ½λ νμ§μ κ²μ¬ν μ μμ΅λλ€. |
μ΄κΈ° λ°κ²¬ | μ½λ μμ± μ΄κΈ° λ¨κ³μμ λ²κ·Έμ 보μ μ·¨μ½μ μ λ°κ²¬ν μ μμ΄, κ°λ° λΉμ© μ κ°κ³Ό μ½λ νμ§ ν₯μμ κΈ°μ¬ν©λλ€. |
μλ°© | μ μ¬μ λ¬Έμ λ₯Ό 미리 μλ°©ν μ μμ΄, μ€μ μννΈμ¨μ΄ λ¦΄λ¦¬μ€ μ μ μ¬κ°ν λ¬Έμ λ₯Ό μ€μΌ μ μμ΅λλ€. |
SonarQubeλ?
μλνλΈλ μ€ν μμ€ κΈ°λ°μ μ μ μ½λ λΆμ λꡬλ‘, μ½λ νμ§κ³Ό 보μμ±μ κ΄λ¦¬νκ³ κ°μ νλ λ° μ¬μ©λ©λλ€. μ΄ λꡬλ Java, JavaScript, Python, C, C++ λ± 20κ° μ΄μμ μΈμ΄ μ§μνλ©°, κ°λ° μ€ λ°μν μ μλ μ½λ κ²°ν¨, 보μ μ·¨μ½μ , μ μ§λ³΄μμ±μ μ ν΄νλ λ¬Έμ λ₯Ό μλ³ν©λλ€. μ΄λ₯Ό ν΅ν΄ νμ λμ± μ λ’°μ± μκ³ νμ§ λμ μννΈμ¨μ΄λ₯Ό κ°λ°ν μ μμ΅λλ€.
μλνλΈλ Continuous Inspectionμ μ 곡νλ©°, μ½λκ° λ³κ²½λ λ λ§λ€ μ€μκ°μΌλ‘ νμ§μ μ κ²νκ³ λΆμ λ³΄κ³ μλ₯Ό μμ±ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ½λ νμ§μ μ§μμ μΌλ‘ μ μ§νκ³ , νλ‘μ νΈ κΈ°μ λΆμ±λ₯Ό μ€μ΄λ λ° κΈ°μ¬ν©λλ€.
SonarQube μ£Όμ νΉμ§
- μ μ μ½λ λΆμ μ§μ
- λ€μν μΈμ΄ μ§μ
- λμ 보λ λ° λ³΄κ³ μ μ§μ
- μ§μμ μΈ ν΅ν© μ§μ
- νμ₯μ±κ³Ό 컀μ€ν°λ§μ΄μ§
SonarQube ꡬμ±μμ
1. νμ§ κ²μ΄νΈ(Quality Gate)
μννΈμ¨μ΄μ νμ§μ νκ°νκ³ κ΄λ¦¬νκΈ° μν κΈ°μ€μ μ€μ νλ λ° μ¬μ©λ©λλ€. μ½λκ° λ¦΄λ¦¬μ¦ λ μ μλμ§μ λν΄ μ§ν/λΆκ°λ₯Ό μ 곡νλ κΈ°μ€μ΄ λλ 'μ½λ νμ§ μ§ν'λ₯Ό μλ―Έν©λλ€.
μ¬λ¬ κ°μ§ κΈ°μ€μΌλ‘ ꡬμ±λλλ°, μΌλ°μ μΌλ‘ μ½λ 컀λ²λ¦¬μ§, μ½λ 볡μ‘μ±, λ²κ·Έ λ° μ·¨μ½μ μ μ, μ½λ μ€νμΌ λ±μ΄ ν¬ν¨λ©λλ€. μ΄λ¬ν κΈ°μ€μ νλ‘μ νΈμ μꡬ μ¬νκ³Ό νμ€μ μΆ©μ‘±μν€κΈ° μν΄ μ‘°μ λ μ μμ΅λλ€.
2. SonarScanner
μμ€ μ½λ νμ§μ λΆμνκ³ μ μ λΆμ λ³΄κ³ μλ₯Ό μμ±νλ λꡬμ λλ€. μ½λ μ€λ³΅, μ½λ© κ·μΉ μ€μ, μ±λ₯ λ¬Έμ , 보μ μ·¨μ½μ λ±μ μλ³νμ¬ κ°λ°μμκ² μ½λ νμ§μ κ°μ νλ λ° λμμ μ€λλ€. λ€μν νλ‘κ·Έλλ° μΈμ΄μ ν΅ν©λμ΄ μ¬μ©ν μ μμΌλ©°, μλνλ μ μ λΆμμ μννμ¬ μ½λ νμ§μ μ§μμ μΌλ‘ λͺ¨λν°λ§ν μ μμ΅λλ€.
SonarScannerλ₯Ό μ΄μ©νκΈ° μν΄μλ SonarQube λλ SonarCloudμ κ°μ SonarSourceμ μ μ λΆμ νλ«νΌμ΄ νμν©λλ€. μμ€ μ½λλ₯Ό κ²μνκ³ λΆμν ν, κ²°κ³Όλ₯Ό SonarQube λλ SonarCloudλ‘ μ μ‘νμ¬ λΆμ λ³΄κ³ μλ₯Ό μμ±ν©λλ€.
3. κ·μΉ(Rules)
SonarQubeλ μ½λ νμ§ λ¬Έμ (μ½λ μ€λ©, λ²κ·Έ, μ·¨μ½μ , 보μ μ·¨μ½μ λ±)μ νμΈνλ 미리 μ μλ λ€μν κ·μΉμ κ°κ³ μμ΅λλ€. μ΄λ¬ν κ·μΉμ μμ κ°λ₯νμ¬ νμ΄ νΉμ μꡬμ λ§κ² λ§μΆ€ μ€μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄ AλΌλ μ½λ λ²κ·ΈλΌκ³ μΆλ ₯μ΄ λκ³ μμ§λ§ μ°λ¦¬ νμμλ AλΌλ λ²κ·Έλ νμ©νκΈ°λ‘ νλ€λ©΄, ν΄λΉ Ruleμμ μμ μ΄ κ°λ₯ν©λλ€.
4. μ½λ κ·μΉ μ ν
SonarQubeλ₯Ό μννμ¬ λ¦¬ν¬νΈλ₯Ό μ»μ κ²½μ° μ½λ κ·μΉ μ νμ λν΄ μΆλ ₯μ΄ λ©λλ€. μ΄μ λν΄ κ°κ°μ λν΄ μ΄λ€ λ¬Έμ μΈμ§ νμΈν΄λ³΄μμΌ ν©λλ€.
5. μ΄μ(Issue)
SonarQubeμμ λ°κ²¬λ μ½λμ λ¬Έμ λλ κ°μ μ¬νμ λνλ λλ€. μ΄μλ λ€μν μ νμ΄ μμ μ μμΌλ©°, μλ₯Ό λ€μ΄ μ½λ μ€λ³΅, μ½λ© κ·μΉ μλ°, 보μ μ·¨μ½μ λ±μ΄ μμ΅λλ€. SonarQubeμμ μ΄μλ₯Ό μλ³νκ³ νμνμ¬ κ°λ°μλ€μ΄ μ½λμ λ¬Έμ λ₯Ό νμ νκ³ μμ ν μ μλλ‘ λμμ€λλ€.
μΆμ²
μ μ λΆμ
- https://www.perforce.com/blog/sca/what-static-analysis#static
- https://digitalbourgeois.tistory.com/238
SonarQube
'CICD' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[CI/CD] CI/CDλ? (1) | 2025.01.16 |
---|---|
[CI/CD] Dockerλ‘ Jenkins μ€μΉνκΈ° (0) | 2025.01.11 |