μ€λμ SonarLintλ₯Ό μ 리ν΄λ³ΌκΉ ν©λλ€.
Intellij ν΄ μ€ νλμΈ SonarLintλ‘ μ½λ κ²ν λ₯Ό νλκΉ μ€λ₯λ μ€μ΄λ€κ³ μ’λ΅λλ€.
λ μ μ¬μ©νκΈ° μν΄ λ μμ보기 μν΄ μ 리νκ³ μ ν©λλ€ π¦
SonarLintλ μλνλΈ(SonarQube)μ ν΅ν©νμ¬ μ½λ νμ§μ λΆμνκ³ κ°μ νλ λꡬμ λλ€.
μ£Όλ‘ ν΅ν© κ°λ° νκ²½(IDE)μμ μ¬μ©λλ©°, μ½λλ₯Ό μμ±νλ λμ μ€μκ°μΌλ‘ μ μ μ½λ λΆμμ μννμ¬ μ μ¬μ μΈ λ²κ·Έ, μ·¨μ½μ±, μ½λ μ€λ©, 볡μ‘μ± λ±μ μλ³ν©λλ€.
SonarLintλ λ€μν IDEμμ μ¬μ© κ°λ₯νλ©°, IntelliJ IDEA, Eclipse, Visual Studio λ±μ μ§μν©λλ€.
π‘ SonarQubeμ SonarCloudλ λμ§?
λ³ν© μ μ pull requestλ₯Ό λΆμν΄μ μ½λ λ¬Έμ μ λν μΆκ°μ μΈ λ³΄νΈλ₯Ό μ 곡ν΄μ€λ€. κ° buildμμ μ½λλ₯Ό λΆμν΄μ, CI/CD μν¬ νλ‘μ°μ μΌλΆλ‘ μ¬μ©λλ€. λ¬Έμ κ° μλ μ½λκ° λ°°ν¬λλ κ²μ λ°©μ§ν΄μ€λ€.
π§π SonarLint μ΄λ¦ λ»?
SonarLintμ μ΄λ¦μ μλ (Sonar)μ λ¦°νΈ (Lint)μ κ²°ν©μΌλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
1. Sonar (μλ)
ν΄μνμμ μ¬μ©λλ μνλ₯Ό μ΄μ©νμ¬ μμ€μμ 물체μ μμΉλ₯Ό κ°μ§νλ κΈ°μ μ μλ―Έν©λλ€. μ΄λ μλκ° μ½λμ νμ§μ κ°μ§νκ³ λΆμνμ¬ λ¬Έμ μ μ μ°Ύμλ΄λ κ²κ³Ό μ μ¬ν μν μ μννλ€λ μλ―Έλ₯Ό ν©λλ€.
2. Lint (λ¦°νΈ)
μννΈμ¨μ΄ κ°λ°μμ μ½λμ μ€λ₯λ μ μ¬μ μΈ λ¬Έμ λ₯Ό μ°Ύμλ΄κΈ° μν΄ μ¬μ©λλ λꡬλ₯Ό κ°λ¦¬ν€λ μΌλ°μ μΈ μ©μ΄μ
λλ€. μ½λ λ¦°νΈλ μ½λμ μ€νμΌ, μ€λ₯, λ²κ·Έ, 보μ λ¬Έμ λ±μ μλ³νμ¬ κ°λ°μμκ² μλ €μ£Όλ μ’μ λ
μμ
λλ€.
λ°λΌμ μ΄λ¦μΌλ‘λ§ λ΄λ! SonarLintλ μ½λ νμ§μ ν₯μμν€κΈ° μν΄ μ½λλ₯Ό μν νμ§κΈ°μ²λΌ μ€μΊνκ³ λΆμνλ μ μ μ½λ λΆμ λꡬλ₯Ό λνλ
λλ€. SonarLintλ₯Ό ν΅ν΄ κ°λ°μκ° μ½λ μμ± μ€μ λ°μν μ μλ λ¬Έμ λ₯Ό κ°μ§νμ¬ λμ νμ§μ μννΈμ¨μ΄λ₯Ό κ°λ°ν μ μμ΅λλ€.
πSonarLintμ νΉμ§
SonarLintλ ν¬κ² 6κ°μ§ νΉμ§μ΄ μμ΅λλ€.
1. μ μ μ½λ λΆμ
μ½λλ₯Ό μ μ μΌλ‘ λΆμνμ¬ μΌλ°μ μΈ μ½λ© νμ€μ μ€μνκ³ μ½λ νμ§μ ν₯μμν¬ μ μλ μ μ¬μ μΈ λ¬Έμ λ₯Ό μλ³ν΄μ€λλΉ.
2. λ€μν μΈμ΄ μ§μ
java, JavaScript, C#, Python λ± λ€μν νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ§μν¨
3. μ€μκ° νΌλλ°±
μ½λλ₯Ό μμ±νλ λμ SonarLintλ IDEμμ μ€μκ°μΌλ‘ νΌλλ°±μ μ 곡νμ¬ μ½λ νμ§μ μ μ§νκ³ ν₯μμν¬ μ μλλ‘ λμμ€λλ€.
4. νμ§ νλ‘νμΌ
μ½λ νμ§μ μΈ‘μ νλ μ¬λ¬ νλ‘νμΌμ μ 곡νμ¬ νλ‘μ νΈμ μ ν©ν νλ‘νμΌμ μ νν μ μμ
5. SonarQube ν΅ν©
SonarLintλ SonarQube μλ²μ ν΅ν©λμ΄ νλ‘μ νΈλ₯Ό μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ λ λμ λ²μμ νμ§ κ΄λ¦¬λ₯Ό μ§μν¨
6. μλ μμ μ μ
μΌλΆ λ¬Έμ μ λν΄ SonarLintλ μλμΌλ‘ μ½λ μμ μ μ μνμ¬ ν₯ν λ°μν μ μλ λ²κ·Έλ μ·¨μ½μ±μ λ°©μ§ν¨
βοΈ SonarLint μ¬μ© λ°©λ² (κ°λ¨)
Intellij νλ¬κ·ΈμΈ μ€μ λ©λ΄λ‘ κ°λ³΄λ©΄! SonarLint νλ¬κ·ΈμΈμ μ€μΉν μ μμ΅λλ€.
κ·Έλ¦¬κ³ μ½λλ₯Ό μμ±νλ©΄, μ€μκ°μΌλ‘ SonarLintκ° νΌλλ°±μ ν΄μ€λλ€.
μλ κ·Έλ¦Όμ sonarlint ν μ€νΈλ₯Ό μν κ°λ¨ν JUnit μ½λμ λλ€.
λͺ» λ―Έλμ΄ μ΄νΌμΉ 머리 μλ₯Ό 보μλ©΄, λΉ¨κ°μ μμ΄μ½κ³Ό 3μ΄λΌλ μ«μ 보μ΄μ죡?
μ΄κ² Sonarlintκ° μ΄μλ‘ λ±λ‘ν κ°μ μ λλ€.
λλ₯΄λ©΄ μλμ CurrentFile νμμ μ΄μλ₯Ό νμΈν μ μλλ°μ,
μ΄λ€ κ·μΉμ μν΄μ μ΄μλ‘ μ‘μκ³ , μ΄λ»κ² κ³ μ³μΌνλμ§λ μΉμ νκ² λ¦¬λ·°λ₯Ό ν΄μ£Όκ³ μμ΅λλ€.
μ΄ μ΄μλ€μ Plugin μ€μ μμ νμΈν μ μλλ°, λ§μ½ λ³ΈμΈμκ²λ λΆνμν κ·μΉμ΄λΌλ©΄ μ΄μλ‘ μ‘νμ§ μκ² μ€μ ν μλ μμ΅λλ€.
μλ₯Ό λ€λ©΄, νμ¬μμ νλ‘μ νΈμμ μ¬μ©νλ ν¨ν€μ§ μ΄λ¦μ λν΄ μ΄μκ° μ‘νλλ° νμμ μ ν λ€μ΄λ° κ·μΉμ΄λΌ μ΄μλΌκ³ λ³Ό μλ μμμ΅λλ€.
μ€μ λ κ·μΉλ€μ Settings-Tools-SonarLint-Rulesμμ νμΈ κ°λ₯ν©λλ€.
μλ μ¬μ§μ²λΌ, κ³ μΉκ³ μΆμ§ μμ μ΄μκ° λ°κ²¬λλ©΄ κ·Έ λ κ·Έ λ disable μν¬ μλ μμ΅λλ€.
βοΈ SonarLintμ Clean Code
Sonar μΉκ΅¬λ Clean Code λ°©λ²λ‘ μ μ μ©ν΄μ νΌλλ°±μ μ 곡νλ€. 곡μ λ¬Έμμμ μ 곡νλ μ루μ μ μ 리ν΄λ³΄λ € νλ€.
1. SonarLintμ 컨μ
μλ 3κ°μ§ λ΄μ©μ λ§μ‘±νλ Clean Code μνλ₯Ό λ¬μ±νλλ° λͺ©νλ₯Ό λκ³ μμ΅λλ€.
1) Clean Code Attributes: Clean Code νΉμ±μ λ§μ‘±νλκ°
consistent, intentional, adaptable, responsible μ£Όλ‘ 4κ°μ§λ‘ μΉ΄ν κ³ λ¦¬λ₯Ό λλλλ€. μ΄λ₯Ό λ§μ‘±νλ©΄ ν΄λ¦° μ½λκ° λ©λλ€.
2) Software quality: μννΈμ¨μ΄ νμ§μ κΈ°μ¬νλμ§
security, reliability, maintainabilityλ₯Ό λ§μ‘±νλ μννΈμ¨μ΄μΈμ§.
3) Issue: μ½λ λ΄ μ΄μκ° μλμ§
2. SonarLint λμ λ°©μ
λ§μ½ μ΄μκ° μλ€λ©΄, κ·Έ μ½λλ μμμ μ 리ν SonarLintμ 컨μ μ λ§μ§ μλ μ½λμΈ κ²μ΄λ€. μλ₯Ό λ€μ΄, μλκ° μμ΄ λ³΄μΈλ€κ±°λ μΌκ΄μ±μ΄ μκ±°λ.
3. Clean Code Attributes
Clean codeμ νΉμ±μ μ£Όμ μΉ΄ν κ³ λ¦¬λ₯Ό μ‘°κΈ λ λ΄λ³΄μ.
1) Consistent(μΌκ΄μ±)
μ½λλ uniform, conventionalμ μΈ λ°©λ²μΌλ‘ μμ±λλ€. λͺ¨λ μ½λλ λΉμ·νκ² λ³΄μ΄κ³ , μ κ·μ μΈ ν¨ν΄μ λ°λ₯΄κ³ μ¬λ¬ κ°λ°μκ° μ½λμ κΈ°μ¬ν΄λ κ·Έ μ½λλ μΌκ΄λμ΄μΌ νλ€.
- formatted: κ°κ²©, λ€μ¬μ°κΈ° λ±λ± μ½λλ² μ΄μ€μμ μΌκ΄λκ² μ μ§ν΄μ, νμΌκ³Ό μ¬λ¬ μμ±μκ° ν΅μΌμ±μ μ μ§νμ.
- conventinal: μ½λλ₯Ό μμ κ°λ₯νκ² μ§ννλλ‘ νμ. μΈμ€ν΄μ€λ λ¨μΌ μ νμ κ³ μνκ³ , μ μ ν νλ‘κ·Έλλ° μΈν°νμ΄μ€μ μΈμ΄ κΈ°λ₯μ μ¬μ©νμ.
- Identifiable: λ€μ΄λ° κ·μΉμ κΈ°λ°μΌλ‘ μΌλ°μ μΈ κ΅¬μ‘°λ₯Ό λ°λ₯΄κ² νμ. λ/μλ¬Έμ, μ λ―Έμ¬, μ λμ¬ λ±λ±
2) Intentional (μλμ )
μ½λλ λͺ ννκ³ λͺ©μ μ κ°μ§λ€. μλ―Έκ° μκ³ μ μ νκ² κ΅¬μ±λκ² νμ. μλμ μΈ μ½λλ λͺ ννκ³ ν¨μ¨μ μΈ μ½λμΈ κ²μ΄λ€.
- Clear
- Logical
- Complete
- Efficient
3) Adaptable
μ½λλ νμ₯ λ° κ°λ°μ΄ μ½λλ‘ κ΅¬μ‘°ν λμ΄μκ² λ§λ€μ. νμ₯/μ¬μ¬μ©μ΄ μ½λλ‘ λ§λλ κ²μ΄ μ’λ€. μ¦, λͺ¨λνκ° λμ΄μμ΄μΌνκ³ ν μ€νΈκ° λμ΄μμ΄μΌνλ€.
- Focused
- Distinct
- Modular
- Tested
4) Responsible
λ°μ΄ν°μ λν΄ μ± μμ μ§μ.
- Lawful
- Trustworthy
- Respectful
4. Software qualities
secure, reliable, maintainable μ΄ 3κ°μ§ μΈ‘λ©΄μ Sonar μ루μ μμ Software qualitiesλΌκ³ λΆλ¦ λλ€. μ½λμμ μ΄μκ° κ°μ§λλ©΄ μννΈμ¨μ΄ νμ§μ μν₯μ΄ μλ€κ³ νλ¨νμ¬ μ΄μμ μ¬κ°λλ₯Ό κ²°μ νλ€.
μ΄λ₯Ό IDEμμ μ΄μλ‘ λ±λ‘λμ΄ μ°λ¦¬κ° νμΈν μ μλ κ²μ΄λ€.
βοΈ Clean as You Code
'Clean as You Code'μ μ ν΅μ μΈ λ°©λ²λ‘ μμ λ°μνλ λ§μ λμ κ³Όμ λ₯Ό μ κ±°νλ μ½λ νμ§μ λν μ κ·Ό λ°©μμ λλ€. κ°λ°μλ‘μ, λΉμ μ λμ κΈ°μ€μ μ μ§νκ³ νΉν μμ μ€μΈ μλ‘μ΄ μ½λμ λν΄ μ± μμ μ ΈμΌνλ€.
Focus on new code
μ½λλ₯Ό μμ±ν λ νμ new codeλ₯Ό μ κ²½μ°λλ‘ νμ. ν΄λ¦°~νκ³ μμ νκ² μλ‘μ΄ μ½λλ₯Ό μμ±νμ.
Sonarμμ Clean as You Code μ κ·Ό λ°©μμ λν νμΌμ μ 곡νλλΌκ΅¬μ. -> λ§ν¬
μΈμ κΉκ² λ³Έ λ΄μ©λ§ κ°λ¨ν μ 리ν΄λ΄€μ΅λλ€.
What is Clean as You Code?
μ½λλ² μ΄μ€κ° λ¬Έμ μλ μνλ‘ λμ΄, κ°λ° λ° μ ννμ μ ν©ν μνλ₯Ό μλ―Ένλ€. μ½λ νμ§μ μ μ°¨μ μΌλ‘ ν₯μμν€λλ° κΈ°μ¬νλ€.
Why is Clean as You Code important?
κ°λ°μλ€μ΄ clean codeλ₯Ό κ΄νμΌλ‘ μ¬μ©νλ©΄, νμ΄ μμ λ¬Έμ λ₯Ό ν΄κ²°νκ±°λ μλ‘κ² λ§λ λ¬Έμ λ₯Ό λ€μ μμ νλ λ° μ μ μκ°μ μ¬μ©νλ©΄ μλ‘μ΄ κΈ°λ₯μ λ§λ€ λ λΆνμν μ¬μμ λΉμ©μ νΌν μ μλ€.
μλ‘μ΄ μ½λλ₯Ό λ§λ€λ©΄μ, κΈ°μ‘΄ μ½λλ κ°μ ν΄λκ°λ€λ©΄ μ 체 νλ‘μ νΈλ κ²°κ³Όμ μΌλ‘ μΈμ λ κΉ¨λνκ² μ μ§λ μ μλ€.
What you acieve with Clean as You Code (μ₯μ )
- The state of clean code
- developer ownership of the codebase
- organization-wide standard for clean code
- reduced effor on rework
What makes Clean as You Code different? (νΉμ§)
- μλ‘μ΄ λ¬Έμ λ₯Ό μΆκ°νμ§ μμΌλ©΄μ μκ°μ΄ μ§λ¨μ λ°λΌ μ΄μ λ¬Έμ λ₯Ό μμ ν¨μΌλ‘μ¨ μ½λλ² μ΄μ€ μ λ°μ νμ§μ λμ
- μ½λλ₯Ό μ΄ν΄νκΈ° μ½κ³ μΈμ λ μ§ μ΄λ€ κ°λ°μλ μ리νκ³ ν₯μμν¬ μ μλλ‘ μ μ§ κ°λ₯νκ² λ§λ¦
- λΉμ¦λμ€μ λΉμ©μ΄ λ§μ΄ λ€μ§ μλλ‘ κ³μν΄μ κ°λ κ°λ₯νκ² μ μ§νκ³ μ₯κΈ°μ μΈ μ λ’°μ±μ 보μ₯ν¨
SonarQubeλ SonarCloudλ₯Ό μ°λνμ¬ κ°μ΄ μ¬μ©νλ©΄ μ½λ νμ§μ νμΈνλ UIλ μλκ°λ΄ λλ€.
SonarLintλ₯Ό μ¬μ©ν΄μ Quality gateλ₯Ό ν΅κ³Όν΄λ³΄λλ‘ λ Έλ ₯ν΄μΌκ² μ΅λλ€.
Rules
SonarLintμμ μΈμ΄λ³λ‘ λ€λ£¨λ κ·μΉλ€μ μλ μ¬μ΄νΈμμλ λ³Ό μ μμ΅λλ€.
https://rules.sonarsource.com/java/
μ°Έκ³ μλ£
https://docs.sonarsource.com/sonarlint/intellij/concepts/clean-code/
'π‘ Tool μ¬μ©κΏν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Intellij) 쿼리 λ³Ό λ λμ΄ μνμ κ°μ? highlight λκΈ° (0) | 2023.06.30 |
---|---|
Intellij μμ£Ό μ¬μ©νλ λ¨μΆν€ (4) | 2023.02.02 |
Intellij HTTP Client Plugins (0) | 2023.01.20 |
Wireshar filter & Date format λ°κΎΈκΈ° (0) | 2022.07.11 |
Visual Studio Code λ¨μΆν€ (0) | 2021.12.31 |