مسح الرمز الثابت هو وسيلة للكشف عن رمز المشروع. يمكنه مسح الرمز دون تشغيل الرمز. يمكنه فحص أخطاء التعليمات البرمجية (مثل المؤشرات الخالية) ، والثغراتية ، والذوق السيئ (مثل العديد من خطوط التعليمات البرمجية في الطريقة) ، وما إلى ذلك ، بالإضافة إلى ذلك ، يمكنها اكتشاف معدل التكرار ، ومعدل التعليق ، وخطوط التعليق ، وعدد خطوط التعليمات البرمجية ، والتعقيد ، والمعلومات الأخرى في المستودع. يمكن تنفيذ مسح الكود الثابت قبل أن يتم الاتصال عبر الإنترنت ، ويحتوي على خصائص تكلفة التنفيذ المنخفضة ، ويستخدم على نطاق واسع في خطوط أنابيب 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. وهو يدعم اللغات الهدف-C و Swift ، ويدعم استيراد نتائج المسح الضوئي والتحليل من أدوات Swiftlint ، والاستدلال ، و Oclint ، و lizard ، و fauxpas.



الحد الأدنى لمتطلبات Sonarqube 7.9 بعد الإصدار 1.6
لقد قمنا بدعوة زملاء آخرين لمراجعة قواعد الاستنتاج الحالية داخل الشركة وتصفية بعض القواعد للمسح للمرجع الخاص بك.
استنتاج هو أداة مسح الكود الثابت التي تم إطلاقها بواسطة Facebook ، والتي تدعم المسح في لغة C/C ++/Java/Objective-C.
الرابط: https://github.com/facebook/infer
SwiftLint هي أداة تحليل رمز ثابتة تتحقق من نمط وأنظمة رمز Swift. بناءً على دليل نمط رمز Swift الخاص بـ Github ، يتم دعم المشكلات المبلغ عنها على XCode ويمكنها إنشاء ملف تقرير. سوف نقرأ ملف التقرير الذي تم إنشاؤه وتحميله إلى Sonarqube.
الرابط: https://github.com/realm/swiftlint
يمكن للسحلية تحليل تعقيد الدائرة للغة الهدف-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/release
ضع ملف الجرة في 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 (لمرجع المستخدم فقط)