เราต้องการแบ่งปันประสบการณ์ของเราในการใช้งานแพลตฟอร์ม 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 เข้ากันไม่ได้กับภาษาการเขียนโปรแกรมบางภาษา รวมถึง Delphi ในขณะนี้ เราวิเคราะห์เฉพาะโค้ด PLSql สำหรับระบบของเรา
มันทำงานดังนี้:
- เราวิเคราะห์เฉพาะโค้ด PL/SQL สำหรับโครงการของเรา
- SonarQube มีการกำหนดค่า QualityGate เพื่อไม่ให้จำนวนข้อผิดพลาดเพิ่มขึ้นเมื่อมีการคอมมิต
- จำนวนข้อผิดพลาดในการเปิดตัวครั้งแรกคือ 229 หากมีข้อผิดพลาดเพิ่มเติมในระหว่างการคอมมิต จะไม่อนุญาตให้ทำการรวม
- นอกจากนี้ หากข้อผิดพลาดได้รับการแก้ไข จะสามารถกำหนดค่า QualityGate ใหม่ได้
- คุณยังสามารถเพิ่มจุดใหม่ๆ สำหรับการวิเคราะห์ได้ เช่น การครอบคลุมโค้ดพร้อมการทดสอบ เป็นต้น
โครงงาน:
ความคิดเห็นของสคริปต์แสดงว่าจำนวนข้อผิดพลาดในสาขาคุณลักษณะไม่ได้เพิ่มขึ้น ดังนั้นทุกอย่างก็โอเค
ปุ่มผสานจะพร้อมใช้งาน
ในความคิดเห็นของสคริปต์ คุณจะเห็นว่าจำนวนข้อผิดพลาดในสาขาคุณลักษณะมีมากกว่าที่ยอมรับได้ ดังนั้นทุกอย่างจึงแย่
ปุ่มผสานจะเป็นสีแดง ในขณะนี้ ยังไม่มีข้อห้ามในการอัปโหลดการเปลี่ยนแปลงตามโค้ดที่ผิดพลาด แต่การดำเนินการนี้ขึ้นอยู่กับดุลยพินิจของนักพัฒนาที่รับผิดชอบ ในอนาคต คุณสามารถป้องกันไม่ให้มีการเพิ่มการคอมมิตดังกล่าวในสาขาหลักได้
ทำงานอิสระกับข้อผิดพลาด
ถัดไป คุณต้องตรวจสอบข้อผิดพลาดทั้งหมดที่ระบบตรวจพบ เนื่องจาก SonarQube วิเคราะห์ตามมาตรฐานที่เข้มงวด สิ่งที่เขาพิจารณาว่ามีข้อผิดพลาดอาจไม่ใช่ข้อผิดพลาดในโค้ดของเรา ดังนั้นคุณต้องตรวจสอบและสังเกตว่านี่เป็นข้อผิดพลาดจริง ๆ หรือไม่จำเป็นต้องแก้ไขในเงื่อนไขของเรา วิธีนี้ทำให้เราลดจำนวนข้อผิดพลาดได้ เมื่อเวลาผ่านไป ระบบจะเรียนรู้ที่จะเข้าใจความแตกต่างเหล่านี้
เราไปเจออะไรมา
เป้าหมายของเราคือการทำความเข้าใจว่าในกรณีของเราแนะนำให้โอนการตรวจสอบโค้ดไปเป็นระบบอัตโนมัติหรือไม่ และผลลัพธ์ก็เป็นไปตามความคาดหวัง SonarQube ช่วยให้เราทำงานกับภาษาที่เราต้องการ ทำการวิเคราะห์ที่มีความสามารถพอสมควร และมีศักยภาพในการเรียนรู้จากเคล็ดลับของนักพัฒนา โดยรวมแล้ว เราพอใจกับประสบการณ์ครั้งแรกในการใช้ SonarQube และวางแผนที่จะพัฒนาต่อไปในทิศทางนี้ เราคาดหวังว่าในอนาคตเราจะสามารถประหยัดเวลาและความพยายามในการตรวจสอบโค้ดได้มากขึ้น และทำให้ดีขึ้นโดยการกำจัดปัจจัยด้านมนุษย์ บางทีในกระบวนการนี้ เราจะค้นพบข้อบกพร่องของแพลตฟอร์ม หรือในทางกลับกัน เราจะมั่นใจอีกครั้งว่านี่คือสิ่งที่ยอดเยี่ยมและมีศักยภาพที่ยอดเยี่ยม
ในบทความรีวิวนี้ เราได้พูดคุยเกี่ยวกับความคุ้นเคยของเรากับเครื่องวิเคราะห์แบบคงที่ SonarQube หากคุณมีคำถามโปรดเขียนในความคิดเห็น หากคุณสนใจหัวข้อนี้ เราจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวิธีตั้งค่าทุกอย่างอย่างถูกต้องและเขียนโค้ดเพื่อตรวจสอบดังกล่าวในสิ่งพิมพ์ฉบับใหม่
ผู้เขียนข้อความ:
ที่มา: will.com