การสแกนรหัสแบบคงที่เป็นวิธีการตรวจจับรหัสโครงการ มันสามารถสแกนรหัสโดยไม่ต้องเรียกใช้รหัส มันสามารถสแกนข้อบกพร่องของรหัส (เช่นพอยน์เตอร์โมฆะ), ช่องโหว่, รสชาติที่ไม่ดี (เช่นรหัสมากเกินไปในวิธีการ) ฯลฯ นอกจากนี้ยังสามารถตรวจจับอัตราการทำซ้ำอัตราความคิดเห็นบรรทัดความคิดเห็นจำนวนบรรทัดของรหัสความซับซ้อนและข้อมูลอื่น ๆ ในคลังสินค้า การสแกนรหัสแบบคงที่สามารถดำเนินการได้ก่อนที่รหัสจะออนไลน์และมีลักษณะของต้นทุนการดำเนินการต่ำและใช้กันอย่างแพร่หลายในท่อ CI
Sonarqube เป็นบริการสแกนรหัสแบบคงที่ https://www.sonarqube.org/ ซึ่งรองรับการสแกนรหัสในภาษากระแสหลัก เวอร์ชันชุมชนเป็นโอเพ่นซอร์สบน GitHub ที่อยู่: https://github.com/sonarsource/sonarqube อย่างไรก็ตามสำหรับบางภาษาเวอร์ชันชุมชนไม่สนับสนุนเช่น Objective-C และ Swift สิ่งที่ที่เก็บนี้หวังที่จะแก้ไขคือการวิเคราะห์การสแกนรหัสแบบคงที่ของทั้งสองภาษานี้
ในฐานะบริการสแกนรหัสผู้ใหญ่ Sonarqube ให้ฟังก์ชั่นปลั๊กอินแก่โลกภายนอกโดยสนับสนุนการนำเข้าเครื่องมือสแกนของบุคคลที่สามเข้าสู่ Sonarqube เพื่อแสดงผล ที่เก็บนี้ขึ้นอยู่กับการพัฒนารองของ https://github.com/idean/sonar-swift มันได้เพิ่มการนำเข้า Facebook ของผลลัพธ์การสแกนตามฟังก์ชั่นดั้งเดิม
ที่เก็บนี้เป็นปลั๊กอินการสแกนรหัส iOS สำหรับ SonarQube รองรับภาษา Objective-C และ Swift และสนับสนุนการนำเข้าสแกนและการวิเคราะห์ผลการวิเคราะห์ของ Swiftlint, Infer, Oclint, Lizard และ Fauxpas Tools



ข้อกำหนดขั้นต่ำสำหรับ Sonarqube 7.9 หลังจากเวอร์ชัน 1.6
เราเชิญเพื่อนร่วมงานคนอื่น ๆ เพื่อตรวจสอบกฎการอนุมานที่มีอยู่ภายใน บริษัท และกรองกฎบางอย่างสำหรับการสแกนสำหรับการอ้างอิงของคุณ
Infer เป็นเครื่องมือสแกนรหัสแบบคงที่ที่เปิดตัวโดย Facebook ซึ่งรองรับการสแกนในภาษา C/C ++/Java/Objective-C
ลิงค์: https://github.com/facebook/infer
Swiftlint เป็นเครื่องมือวิเคราะห์รหัสแบบคงที่ที่ตรวจสอบรูปแบบและกฎระเบียบของรหัส Swift โดยทั่วไปขึ้นอยู่กับคู่มือสไตล์ Swift Code ของ GitHub ปัญหาที่รายงานได้รับการสนับสนุนใน XCode และสามารถสร้างไฟล์รายงานได้ เราจะอ่านไฟล์รายงานที่สร้างขึ้นและอัปโหลดไปยัง Sonarqube
ลิงค์: https://github.com/realm/swiftlint
จิ้งจกสามารถวิเคราะห์ความซับซ้อนของวงกลมของภาษา Objective-C สร้างไฟล์ XML และนำเข้าสู่ผลลัพธ์ของ Sonarqube
ลิงค์: https://github.com/terryyin/lizard
Oclint เป็นเครื่องมือวิเคราะห์รหัสแบบคงที่สำหรับภาษา C/C ++/Objective-C ซึ่งแตกต่างจากการอนุมานมันชอบที่จะสแกนปัญหาเช่นข้อกำหนดของรหัสดังนั้นเราจึงจำแนกปัญหาในส่วน oclint ให้เป็น坏味道
ลิงค์: https://github.com/oclint/oclint
Faux PAS เป็นซอฟต์แวร์เชิงพาณิชย์ที่รองรับการสแกนและการวิเคราะห์ภาษา Objective-C
ลิงค์: http://fauxpasapp.com/
https://github.com/tal-tech/sonar-swift/releases
วางไฟล์ jar ใน extensions/plugins/ ไดเรกทอรีของไดเรกทอรีการติดตั้ง Sonarqube แล้วรีสตาร์ท Sonarqube
อ้างถึงสคริปต์ต่อไปนี้เพื่อใช้
xcodebuild และบันทึกเอาต์พุตไปยังไฟล์xcodebuild clean build -workspace app.xcworkspace -scheme scheme -destination ' generic/platform=iOS ' COMPILER_INDEX_STORE_ENABLE=NO | tee xcodebuild.log > /dev/null
xcpretty -r json-compilation-database -o compile_commands.json < xcodebuild.log > /dev/null
# --skip-analysis-in-path 是忽略扫描目录
infer run --skip-analysis-in-path Pods --compilation-database compile_commands.json
# 可选,如果有 swift 语言使用
# swiftlint lint > swiftlint.txt
# 可选,Java 语言
# infer run -- ./gradlew build
# 在命令后添加 -Dsonar.java.infer.report=infer-out/report.json
# 可选,如果想计算 复杂度 使用
# lizard --xml > lizard-report.xml
# 在命令后添加 -Dsonar.swift.lizard.report=lizard-report.xml
sonar-scanner -Dsonar.host.url=http://sonarqube -Dsonar.projectKey=app -Dsonar.sources=. -Dsonar.swift.swiftlint.report=swiftlint.txt -Dsonar.swift.infer.report=infer-out/report.json
# oclint example
-Dsonar.swift.oclint.report=oclint_report.xmlมันจะต้องทำงานบนระบบปฏิบัติการ MacOS ในขณะที่สแกน
คุณสามารถป้อนกลุ่ม WeChat ได้โดยการสแกนรหัส
ผู้ใช้สามารถลงทะเบียนชื่อ บริษัท ของพวกเขาใน #9 (สำหรับการอ้างอิงผู้ใช้เท่านั้น)