Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Бид Үндэсний төлбөр тооцооны хадгаламжийн төвийн DPO системийг (Аламеда хадгаламжийн болон клирингийн нягтлан бодох бүртгэлийн системд нэмэлт) хөгжүүлэх үйл явцад SonarQube кодын чанарыг тасралтгүй дүн шинжилгээ хийх, хэмжих платформыг хэрэгжүүлэх туршлагаа хуваалцахыг хүсч байна.

Үндэсний төлбөр тооцооны хадгаламжийн төв (Москвагийн биржийн компаниудын групп) нь 50 их наяд гаруй рублийн үнэ бүхий Орос, гадаадын үнэт цаас гаргагчдын үнэт цаасыг хадгалж, бүртгэдэг санхүүгийн дэд бүтцийн гол компаниудын нэг юм. Системийн гүйцэтгэсэн үйл ажиллагааны хэмжээ нэмэгдэж, үйл ажиллагааны тасралтгүй өсөлт нь системийн эх кодын өндөр чанарыг хадгалахыг шаарддаг. Энэ зорилгод хүрэх хэрэгслүүдийн нэг нь SonarQube статик анализатор юм. Энэ нийтлэлд бид SonarQube статик анализаторыг манай хэлтсийн одоо байгаа хөгжүүлэлтийн процесст саадгүй нэвтрүүлсэн амжилттай туршлагыг тайлбарлах болно.

Тус хэлтсийн тухай товчхон

Бидний чадварт дараахь модулиуд багтдаг: NSD үйлчлүүлэгчдэд төлөх төлбөр, цахим баримт бичгийн менежмент (EDF), худалдааны репозиторын мессежийг боловсруулах (биржээс гадуурх гүйлгээний бүртгэл), үйлчлүүлэгч болон NSD хоорондын цахим харилцааны суваг болон бусад. Ерөнхийдөө үйл ажиллагааны техникийн тал дээр ажлын том давхарга. Бид өргөдлийн үндсэн дээр ажилладаг. Теллерүүдийн өргөдлийг шинжээчид боловсруулдаг: тэд хэрэглэгчийн шаардлагыг цуглуулж, хөтөлбөрт хэрхэн нийцэх талаар өөрсдийн төсөөллийг бидэнд танилцуулдаг. Цаашилбал, стандарт схем: код боловсруулах - туршилт - туршилтын ажиллагаа - кодыг бүтээмжийн хэлхээнд шууд хэрэглэгчдэд хүргэх.

Яагаад SonarQube гэж?

Энэ бол манай хэлтсийн кодын чанарын хяналтын платформыг хэрэгжүүлсэн анхны туршлага юм - өмнө нь бид үүнийг гараар хийдэг, зөвхөн кодыг хянадаг. Гэвч өсөн нэмэгдэж буй ажлын хэмжээ нь энэ үйл явцыг автоматжуулахыг шаарддаг. Нэмж дурдахад, багт дотоод хөгжлийн зохицуулалтыг бүрэн мэддэггүй, илүү их алдаа гаргадаг туршлагагүй ажилтнууд байдаг. Кодын чанарыг хянахын тулд статик анализаторыг хэрэгжүүлэхээр шийдсэн. SonarQube нь зарим NSD системд аль хэдийн ашиглагдаж байсан тул сонгоход удаан хугацаа шаардагдахгүй. Өмнө нь бусад хэлтсийн хамт олон үүнийг Аламеда систем (NSD-ийн өөрийн хадгаламж, клирингийн нягтлан бодох бүртгэлийн систем), CFT (нягтлан бодох бүртгэл, тэнцэл, зайлшгүй болон дотоод тайлан бэлтгэх мэдээллийн систем) дахь бичил үйлчилгээний кодыг шинжлэхэд ашигладаг байсан. системүүд. Туршилтын хувьд бид SonarQube-ийн үнэгүй хувилбараас эхлэхээр шийдсэн. Тиймээс бидний хэрэг рүү шилжье.

Хэрэгжүүлэх үйл явц

Бидэнд байгаа:

  • TeamCity дахь системийг автоматаар угсрах;
  • GitLab дахь үндсэн салбар руу функцийн салбараас MergeRequest-ээр код оруулах процессыг тохируулах (GitHub Flow-ийн дагуу боловсруулах процесс);
  • SonarQube нь хуваарийн дагуу DPO системийн кодыг шинжлэхээр тохируулсан.

Бидний зорилго: AVE-ийн CI/CD процесст автомат кодын дүн шинжилгээ хийх.

Тохируулах хэрэгтэй: үндсэн салбар руу MergeRequest бүрээр статик анализатороор кодыг автоматаар шалгах үйл явц.

Тэдгээр. Зорилтот зураг нь дараах байдалтай байна: хөгжүүлэгч нь функцийн салбар руу өөрчлөлт оруулмагц кодын шинэ алдааг автоматаар шалгаж эхэлнэ. Хэрэв алдаа байхгүй бол өөрчлөлтийг хүлээн авахыг зөвшөөрнө, эс тэгвээс алдааг засах шаардлагатай болно. Эхний шатанд бид кодын тодорхой тооны алдааг тодорхойлж чадсан. Систем нь маш уян хатан тохиргоотой: үүнийг хөгжүүлэгчид, систем, програмчлалын хэв маяг тус бүрийн хувьд тодорхой даалгаварт зориулж тохируулах боломжтой.

SonarQube дээр QualityGate-г тохируулж байна

QualityGate шинжилгээ бол бидний интернетээс уншдаг зүйл юм. Эхэндээ бид арай өөр, илүү төвөгтэй, зарим талаараа бүрэн зөв биш арга барилыг ашигласан. Эхлээд бид хоёр удаа SonarQube-ээр сканнердсан: бид функцийн салбар болон функцийн салбарыг нэгтгэх гэж буй салбарыг сканнердаж, дараа нь алдааны тоог харьцуулсан. Энэ арга нь тогтвортой биш байсан бөгөөд үргэлж зөв үр дүнг өгдөггүй байв. Тэгээд дараа нь бид SonarQube-г хоёр удаа ажиллуулахын оронд гаргасан алдааны тоонд (QualityGate) хязгаарлалт тавьж, зөвхөн байршуулж, харьцуулсан салбараа шинжлэх боломжтой гэдгийг олж мэдсэн.

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Одоогоор бид маш энгийн код шалгах аргыг ашигладаг хэвээр байна. SonarQube нь Delphi зэрэг зарим програмчлалын хэлтэй нийцдэггүй гэдгийг тэмдэглэх нь зүйтэй. Одоогоор манай системийн хувьд бид зөвхөн PLSql кодыг шинжилдэг.

Энэ нь дараах байдлаар ажилладаг.

  • Бид төслийнхөө зөвхөн PL/SQL кодыг шинжилдэг.
  • QualityGate нь SonarQube-д тохируулагдсан бөгөөд ингэснээр алдааны тоо үүрэг даалгавраар нэмэгдэхгүй.
  • Эхний ээлжинд гарсан алдааны тоо 229 байсан. Хэрэв гүйцэтгэх явцад илүү олон алдаа гарсан бол нэгтгэхийг зөвшөөрөхгүй.
  • Цаашилбал, алдааг зассан тохиолдолд QualityGate-ийг дахин тохируулах боломжтой болно.
  • Та мөн шинжилгээнд зориулж шинэ зүйл нэмж болно, жишээлбэл, тест бүхий кодын хамрах хүрээ гэх мэт.

Ажлын схем:

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Скриптийн тайлбараас та функцийн салбар дахь алдааны тоо нэмэгдээгүй байгааг харж болно. Тэгэхээр бүх зүйл зүгээр.

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Нэгтгэх товч боломжтой болно.

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Скриптийн тайлбараас та функцийн салбар дахь алдааны тоо зөвшөөрөгдөх хэмжээнээс их болсныг харж болно. Тэгэхээр бүх зүйл МУУ.

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Нэгтгэх товч нь улаан өнгөтэй байна. Одоогийн байдлаар алдаатай кодонд өөрчлөлт оруулахыг хориглоогүй боловч үүнийг хариуцлагатай хөгжүүлэгчийн үзэмжээр хийдэг. Цаашид та үндсэн салбар руу ийм амлалт өгөхөөс сэргийлж чадна.

Бид SonarQube-г хэрхэн хэрэгжүүлж, түүний агуу боломжуудыг олж мэдсэн

Алдаатай өөрийгөө зохицуулах

Дараа нь SonarQube нь хатуу стандартын дагуу дүн шинжилгээ хийдэг тул системээс илрүүлсэн бүх алдааг шалгах хэрэгтэй. Түүний алдаа гэж үзсэн зүйл нь үнэндээ бидний кодонд байхгүй байж магадгүй юм. Тиймээс энэ нь үнэхээр алдаа мөн үү, эсвэл манай нөхцөлд засварлах шаардлагагүй эсэхийг шалгаж, анхаарах хэрэгтэй. Тиймээс бид алдааны тоог багасгадаг. Цаг хугацаа өнгөрөхөд систем эдгээр нюансуудыг ойлгож сурах болно.

Бид юунд хүрэв

Бидний зорилго бол кодын баталгаажуулалтыг автоматжуулалт руу шилжүүлэх нь зүйтэй эсэхийг ойлгох явдал байв. Мөн үр дүн нь хүлээлтийг хангасан. SonarQube нь бидэнд хэрэгтэй хэлүүдтэй ажиллах боломжийг олгодог, нэлээд чадварлаг дүн шинжилгээ хийдэг бөгөөд хөгжүүлэгчийн зөвлөмжүүдээс суралцах боломжтой. Ерөнхийдөө бид SonarQube-тэй хийсэн анхны туршлагадаа сэтгэл хангалуун байгаа бөгөөд цаашид энэ чиглэлээр хөгжүүлэхээр төлөвлөж байна. Ирээдүйд бид кодыг хянахад илүү их цаг хугацаа, хүчин чармайлтыг хэмнэж, хүний ​​хүчин зүйлийг арилгах замаар сайжруулна гэж найдаж байна. Магадгүй энэ явцад бид платформын дутагдалтай талуудыг олж мэдэх болно, эсвэл эсрэгээрээ энэ нь асар их боломжит гайхалтай зүйл гэдгийг дахин нэг удаа батлах болно.

Энэхүү тойм нийтлэлд бид SonarQube статик анализатортой танилцсан тухай ярилцсан. Хэрэв танд асуулт байвал сэтгэгдэл дээр бичнэ үү. Хэрэв та энэ сэдвийг сонирхож байгаа бол шинэ хэвлэлд бид бүх зүйлийг хэрхэн зөв тохируулах, ийм шалгалт хийх код бичих талаар илүү дэлгэрэнгүй тайлбарлах болно.

Текст зохиогч: атаня

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх