วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

เราต้องการแบ่งปันประสบการณ์ของเราในการใช้งานแพลตฟอร์ม SonarQube สำหรับการวิเคราะห์และการวัดคุณภาพรหัสอย่างต่อเนื่องในกระบวนการพัฒนาที่มีอยู่ของระบบ DPO (นอกเหนือจากระบบบัญชีรับฝาก Alameda และระบบบัญชีการหักบัญชี) ของ National Settlement Depository

National Settlement Depository (กลุ่มบริษัท Moscow Exchange) เป็นหนึ่งในบริษัทสำคัญในโครงสร้างพื้นฐานทางการเงิน การจัดเก็บและการบัญชีสำหรับหลักทรัพย์ของผู้ออกรัสเซียและต่างประเทศที่มีมูลค่ามากกว่า 50 ล้านล้านรูเบิล ปริมาณการดำเนินงานที่เพิ่มขึ้นโดยระบบ เช่นเดียวกับการขยายฟังก์ชันการทำงานอย่างต่อเนื่อง จำเป็นต้องรักษาซอร์สโค้ดคุณภาพสูงของระบบ เครื่องมือหนึ่งที่ช่วยให้บรรลุเป้าหมายนี้คือเครื่องวิเคราะห์แบบคงที่ SonarQube ในบทความนี้ เราจะอธิบายประสบการณ์ที่ประสบความสำเร็จในการใช้เครื่องวิเคราะห์แบบคงที่ SonarQube ในกระบวนการพัฒนาที่มีอยู่ในแผนกของเราอย่างราบรื่น

สั้น ๆ เกี่ยวกับแผนก

ความสามารถของเราประกอบด้วยโมดูลต่อไปนี้: การชำระเงินให้กับลูกค้า NSD การจัดการเอกสารอิเล็กทรอนิกส์ (EDF) การประมวลผลข้อความที่เก็บการค้า (การลงทะเบียนธุรกรรมที่ไม่ต้องสั่งโดยแพทย์) ช่องทางการโต้ตอบทางอิเล็กทรอนิกส์ระหว่างลูกค้าและ NSD และอีกมากมาย โดยทั่วไปแล้ว มีงานอีกมากที่ต้องทำในด้านเทคนิคของกิจกรรมการปฏิบัติงาน เราทำงานบนพื้นฐานของการร้องขอ การสมัครจากเจ้าหน้าที่ปฏิบัติการจะได้รับการประมวลผลโดยนักวิเคราะห์ โดยจะรวบรวมความต้องการของลูกค้าและนำเสนอวิสัยทัศน์ว่าควรเข้ากับโปรแกรมอย่างไร ถัดมาเป็นโครงร่างมาตรฐาน: การพัฒนาโค้ด – การทดสอบ – การทดลองใช้งาน – การส่งมอบโค้ดไปยังวงจรการผลิตให้กับลูกค้าโดยตรง

ทำไมต้อง SonarQube?

นี่เป็นประสบการณ์ครั้งแรกของแผนกของเราในการใช้แพลตฟอร์มสำหรับการควบคุมคุณภาพโค้ด - ก่อนหน้านี้เราทำด้วยตนเอง โดยดำเนินการตรวจสอบโค้ดเท่านั้น แต่ปริมาณงานที่เพิ่มขึ้นจำเป็นต้องมีกระบวนการอัตโนมัติ นอกจากนี้ทีมงานยังรวมถึงพนักงานที่ไม่มีประสบการณ์ซึ่งไม่คุ้นเคยกับกฎระเบียบด้านการพัฒนาภายในเลยและมีแนวโน้มที่จะทำผิดพลาดมากขึ้น เพื่อควบคุมคุณภาพของโค้ด จึงตัดสินใจใช้เครื่องวิเคราะห์แบบคงที่ เนื่องจากมีการใช้ SonarQube ในระบบ NSD บางระบบแล้ว จึงไม่มีทางเลือกอีกต่อไป ก่อนหน้านี้เพื่อนร่วมงานจากแผนกอื่น ๆ ใช้เพื่อวิเคราะห์รหัสของไมโครเซอร์วิสในระบบ Alameda (ระบบบัญชีรับฝากและการหักบัญชีของ NSD) ใน CFT (ระบบข้อมูลสำหรับการบำรุงรักษาการบัญชี งบดุล การจัดเตรียมการรายงานบังคับและการรายงานภายใน) ในบาง ระบบอื่นๆ สำหรับการทดลอง เราตัดสินใจเริ่มต้นด้วย SonarQube เวอร์ชันฟรี มาดูกรณีของเรากันดีกว่า

กระบวนการดำเนินการ

เรามี:

  • การประกอบระบบอัตโนมัติใน TeamCity
  • กระบวนการอัพโหลดโค้ดผ่าน MergeRequest จาก Feature Branch ไปยัง Master Branch ใน GitLab ได้รับการกำหนดค่าแล้ว (กระบวนการพัฒนาตาม GitHub Flow)
  • SonarQube กำหนดค่าให้วิเคราะห์โค้ดสำหรับระบบ DPO ตามกำหนดเวลา

เป้าหมายของพวกเรา: ใช้การวิเคราะห์โค้ดอัตโนมัติในกระบวนการ CI/CD ของ DPO

จำเป็นต้องกำหนดค่า: กระบวนการตรวจสอบโค้ดอัตโนมัติด้วย Static Analyzer โดยแต่ละ MergeRequest ไปยังสาขาหลัก

เหล่านั้น. รูปภาพเป้าหมายมีดังนี้: ทันทีที่นักพัฒนาอัปโหลดการเปลี่ยนแปลงไปยังสาขาฟีเจอร์ จะมีการเปิดตัวการตรวจสอบข้อผิดพลาดใหม่ในโค้ดโดยอัตโนมัติ หากไม่มีข้อผิดพลาด การเปลี่ยนแปลงจะได้รับการยอมรับ มิฉะนั้นข้อผิดพลาดจะต้องได้รับการแก้ไข ในระยะเริ่มแรกเราสามารถระบุข้อผิดพลาดจำนวนหนึ่งในโค้ดได้ ระบบมีการตั้งค่าที่ยืดหยุ่นมาก: สามารถกำหนดค่าในลักษณะที่เหมาะกับงานเฉพาะของนักพัฒนา สำหรับแต่ละระบบและรูปแบบการเขียนโปรแกรม

การตั้งค่า QualityGate ใน SonarQube

การวิเคราะห์ QualityGate เป็นสิ่งที่เราอ่านอย่างลึกซึ้งในอินเทอร์เน็ต ในตอนแรก เราใช้แนวทางที่แตกต่างออกไป ซึ่งซับซ้อนกว่า และในบางวิธีก็ไม่ถูกต้องทั้งหมด ขั้นแรก เราทำการสแกนสองครั้งผ่าน SonarQube: เราสแกนสาขาฟีเจอร์และสาขาที่เราจะรวมสาขาฟีเจอร์ จากนั้นจึงเปรียบเทียบจำนวนข้อผิดพลาด วิธีนี้ไม่เสถียรและไม่ได้ผลลัพธ์ที่ถูกต้องเสมอไป จากนั้นเราพบว่าแทนที่จะเรียกใช้ SonarQube สองครั้ง เราสามารถจำกัดจำนวนข้อผิดพลาดที่เกิดขึ้น (QualityGate) และวิเคราะห์เฉพาะสาขาที่คุณอัปโหลดและเปรียบเทียบได้

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

สำหรับตอนนี้เรายังคงใช้การตรวจสอบโค้ดที่ค่อนข้างพื้นฐาน เป็นที่น่าสังเกตว่า SonarQube เข้ากันไม่ได้กับภาษาการเขียนโปรแกรมบางภาษา รวมถึง Delphi ในขณะนี้ เราวิเคราะห์เฉพาะโค้ด PLSql สำหรับระบบของเรา

มันทำงานดังนี้:

  • เราวิเคราะห์เฉพาะโค้ด PL/SQL สำหรับโครงการของเรา
  • SonarQube มีการกำหนดค่า QualityGate เพื่อไม่ให้จำนวนข้อผิดพลาดเพิ่มขึ้นเมื่อมีการคอมมิต
  • จำนวนข้อผิดพลาดในการเปิดตัวครั้งแรกคือ 229 หากมีข้อผิดพลาดเพิ่มเติมในระหว่างการคอมมิต จะไม่อนุญาตให้ทำการรวม
  • นอกจากนี้ หากข้อผิดพลาดได้รับการแก้ไข จะสามารถกำหนดค่า QualityGate ใหม่ได้
  • คุณยังสามารถเพิ่มจุดใหม่ๆ สำหรับการวิเคราะห์ได้ เช่น การครอบคลุมโค้ดพร้อมการทดสอบ เป็นต้น

โครงงาน:

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

ความคิดเห็นของสคริปต์แสดงว่าจำนวนข้อผิดพลาดในสาขาคุณลักษณะไม่ได้เพิ่มขึ้น ดังนั้นทุกอย่างก็โอเค

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

ปุ่มผสานจะพร้อมใช้งาน

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

ในความคิดเห็นของสคริปต์ คุณจะเห็นว่าจำนวนข้อผิดพลาดในสาขาคุณลักษณะมีมากกว่าที่ยอมรับได้ ดังนั้นทุกอย่างจึงแย่

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

ปุ่มผสานจะเป็นสีแดง ในขณะนี้ ยังไม่มีข้อห้ามในการอัปโหลดการเปลี่ยนแปลงตามโค้ดที่ผิดพลาด แต่การดำเนินการนี้ขึ้นอยู่กับดุลยพินิจของนักพัฒนาที่รับผิดชอบ ในอนาคต คุณสามารถป้องกันไม่ให้มีการเพิ่มการคอมมิตดังกล่าวในสาขาหลักได้

วิธีที่เราใช้ SonarQube และตระหนักถึงศักยภาพที่ยอดเยี่ยมของมัน

ทำงานอิสระกับข้อผิดพลาด

ถัดไป คุณต้องตรวจสอบข้อผิดพลาดทั้งหมดที่ระบบตรวจพบ เนื่องจาก SonarQube วิเคราะห์ตามมาตรฐานที่เข้มงวด สิ่งที่เขาพิจารณาว่ามีข้อผิดพลาดอาจไม่ใช่ข้อผิดพลาดในโค้ดของเรา ดังนั้นคุณต้องตรวจสอบและสังเกตว่านี่เป็นข้อผิดพลาดจริง ๆ หรือไม่จำเป็นต้องแก้ไขในเงื่อนไขของเรา วิธีนี้ทำให้เราลดจำนวนข้อผิดพลาดได้ เมื่อเวลาผ่านไป ระบบจะเรียนรู้ที่จะเข้าใจความแตกต่างเหล่านี้

เราไปเจออะไรมา

เป้าหมายของเราคือการทำความเข้าใจว่าในกรณีของเราแนะนำให้โอนการตรวจสอบโค้ดไปเป็นระบบอัตโนมัติหรือไม่ และผลลัพธ์ก็เป็นไปตามความคาดหวัง SonarQube ช่วยให้เราทำงานกับภาษาที่เราต้องการ ทำการวิเคราะห์ที่มีความสามารถพอสมควร และมีศักยภาพในการเรียนรู้จากเคล็ดลับของนักพัฒนา โดยรวมแล้ว เราพอใจกับประสบการณ์ครั้งแรกในการใช้ SonarQube และวางแผนที่จะพัฒนาต่อไปในทิศทางนี้ เราคาดหวังว่าในอนาคตเราจะสามารถประหยัดเวลาและความพยายามในการตรวจสอบโค้ดได้มากขึ้น และทำให้ดีขึ้นโดยการกำจัดปัจจัยด้านมนุษย์ บางทีในกระบวนการนี้ เราจะค้นพบข้อบกพร่องของแพลตฟอร์ม หรือในทางกลับกัน เราจะมั่นใจอีกครั้งว่านี่คือสิ่งที่ยอดเยี่ยมและมีศักยภาพที่ยอดเยี่ยม

ในบทความรีวิวนี้ เราได้พูดคุยเกี่ยวกับความคุ้นเคยของเรากับเครื่องวิเคราะห์แบบคงที่ SonarQube หากคุณมีคำถามโปรดเขียนในความคิดเห็น หากคุณสนใจหัวข้อนี้ เราจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวิธีตั้งค่าทุกอย่างอย่างถูกต้องและเขียนโค้ดเพื่อตรวจสอบดังกล่าวในสิ่งพิมพ์ฉบับใหม่

ผู้เขียนข้อความ: อทันย่า

ที่มา: will.com

เพิ่มความคิดเห็น