Үндсэн ойлголт
SonarQube ашиглахад шаардлагатай үндсэн ойлголтууд.
Issues (Асуудлууд)
Кодын дотор илрүүлсэн бүх асуудлууд. Кодчлолын стандартыг зөрчсөн, алдаатай, аюулгүй байдлын эрсдэлтэй хэсгүүд.
Түвшин: Critical, Major, Minor, Info
Төрөл: Bug, Vulnerability, Code Smell
Статус: Open, Confirmed, Resolved, False Positive, Won't Fix
Удирдах:
- Projects → Issues цэсээр харах
- Төрөл, түвшингээр шүүх
- Issue дээр дарж дэлгэрэнгүй харах
- Кодыг засч "Resolved" болгох
Rules (Дүрмүүд)
Кодыг шинжилэхэд ашигладаг дүрмүүдийн сан. Кодчлолын стандарт, best practices, аюулгүй байдлын зөвлөмжүүдийг тодорхойлно.
Төрлүүд:
- Code Smell Rules: Кодын чанарыг сайжруулах
- Bug Rules: Алдаа илрүүлэх
- Vulnerability Rules: Аюулгүй байдлын сул талуудыг илрүүлэх
- Security Hotspot Rules: Аюулгүй байдлын боломжит асуудлууд
Удирдах:
- Quality → Rules цэсээр харах
- Quality Profiles дотор идэвхжүүлэх/хаах
Quality Profiles (Чанарын профайлууд)
Тодорхой хэл, платформын хувьд ямар дүрмүүдийг ашиглахыг тодорхойлдог тохиргоо.
Үүсгэх:
- Quality → Profiles цэсээр орно
- Create товчийг дарна
- Activate/Deactivate Rules хэсгээр дүрмүүдийг идэвхжүүлнэ
- Set as Default хэсгээр анхдагч болгоно
Project-д холбох: Project → Settings → Quality Profile
Quality Gates (Чанарын шалгуур)
Код production-д орох эсэхийг шийдэх шалгуур. Кодын чанарын түвшинг хэмжиж, стандартад хүрээгүй код merge хийхэд хориг тавьдаг.
Шалгадаг метрикүүд:
- Bugs: Кодын алдааны тоо
- Vulnerabilities: Аюулгүй байдлын сул талуудын тоо
- Code Smells: Кодын чанарын асуудлуудын тоо
- Security Hotspots: Боломжит асуудлууд
- Coverage: Code coverage-ийн хувь (жишээ: 80%+)
- Duplicated Lines: Давхардсан мөрүүдийн хувь
Статус:
- Passed: Бүх шалгуурыг давсан
- Failed: Шалгуурыг давсангүй, засах шаардлагатай
- Warning: Ойролцоогоор бүтэлгүйтэх нөхцөл байдал
Тохируулах:
- Quality → Quality Gates цэсээр орно
- Create товчийг дарна
- Метрик бүрийн хувьд шалгуур тогтооно
- Project → Settings → Quality Gate хэсгээр холбоно
Issue-ийн төрлүүд
1. Bugs (Алдаанууд)
Кодын алдаа буюу буруу ажиллах боломжтой хэсгүүд.
Жишээ: Null pointer exception, буруу логик, массивын хязгаарыг давсан индекс
Эрсдэл: Програм буруу ажиллах, уналт, мэдээлэл алдагдах
2. Vulnerabilities (Аюулгүй байдлын сул талууд)
Аюулгүй байдлын эрсдэл үүсгэх боломжтой кодын хэсгүүд.
Жишээ: SQL injection, баталгаажуулаагүй оролт, нууц үг кодонд бичсэн, XSS
Эрсдэл: Систем рүү нэвтрэлт, мэдээлэл алдагдах
3. Code Smells (Кодын муу хэв маяг)
Кодын чанарын асуудал. Одоогоор асуудал үүсгэхгүй ч ирээдүйд засвар үйлчилгээ хийхэд хэцүү болгоно.
Жишээ: Хэт урт функц, давхардсан код, тодорхой бус нэр томьёо, dead code
Эрсдэл: Код засах/ойлгоход хэцүү, техникийн өр төлбөр нэмэгдэх
Code Coverage
Тестүүд хэдэн хувийн кодыг шалгаж байгааг харуулдаг метрик.
Төрлүүд:
- Line Coverage: Хэдэн хувийн мөрийг тест шалгасан
- Branch Coverage: Хэдэн хувийн conditional statement-ийг тест шалгасан
- Function Coverage: Хэдэн хувийн функцүүдийг тест дуудаж байгаа
Утга:
- 0-50%: Бага coverage
- 50-80%: Дунд зэргийн coverage
- 80-100%: Өндөр coverage
Нэмэгдүүлэх: Юнит тест бичих, integration тест нэмэх, edge case-үүдийг тестлэх
Зорилго: 80%+
Code Duplication (Кодын давхардал)
Ижил эсвэл маш төстэй кодын хэсгүүд давтагдсан байдал.
Асуудал:
- Засвар үйлчилгээ хийхэд хэцүү
- Алдаа тараах эрсдэл
- Код хэмжээ нэмэгдэх
Бууруулах:
- Функц ашиглах
- Класс үүсгэх
- Helper functions бичих
- Refactoring хийх
Метрикүүд: Duplicated Lines, Duplicated Blocks, Duplicated Files
Зорилго: 3%-аас бага
Метрикүүдийн хамаарал
Rules → Quality Profiles → Code Analysis → Issues → Quality Gate
↓
Metrics
Ажиллах процесс:
- Quality Profile дотор Rules-ийг идэвхжүүлнэ
- SonarQube кодод дүрмүүдийг хэрэглэж Issues-ийг илрүүлнэ
- Issues-ийн дагуу Metrics тооцоологдоно
- Quality Gate метрикүүдийг шалгаж production-д орох эсэхийг шийднэ
Практик зөвлөмж
Issue удирдах:
- Critical, Major түвшний issue-үүдээс эхлэх
- Bugs ба Vulnerabilities-д анхаарах
- False Positive шалгах
Quality Profile:
- Project-ийн хэрэгцээнд тохируулах
- Чухал дүрмүүдээс эхлэх
Quality Gate:
- Бодитой зорилго тавих
- Аажмаар сайжруулах
- Төслийн хэмжээнд тохируулах
Кодын чанарыг сайжруулах нь тасралтгүй процесс. SonarQube-ийг байнгын хөгжүүлэлтийн процессын нэг хэсэг болгох.