CICD 基礎


代碼測試覆蓋率

最近在負責相關插件的集成,今天第一次接觸到“代碼覆蓋率”這個概念,那么,就做些簡單的筆記吧。

好文

nosetests

nosetests --with-coverage --cover-html --cover-erase --with-xunit --exe project_name\test\

代碼質量好文

代碼質量控制,常規三板斧:

  • 靜態檢查
  • 代碼review
  • 單元測試

靜態檢查工具

sonarqube

代碼質量平台

Python代碼質量

pylint

coverage

python檢查好文

Java代碼質量

  • Checkstyle
  • FindBugs
  • PMD
  • Jtest
Java靜態分析工具 分析對象 應用技術
Checkstyle Java 源文件 缺陷模式匹配
FindBugs 字節碼 缺陷模式匹配;數據流分析
PMD Java 源代碼 缺陷模式匹配
Jtest Java 源代碼 缺陷模式匹配;數據流分析

內置編程規范

Checkstyle:

  • Javadoc 注釋:檢查類及方法的 Javadoc 注釋
  • 命名約定:檢查命名是否符合命名規范
  • 標題:檢查文件是否以某些行開頭
  • Import 語句:檢查 Import 語句是否符合定義規范
  • 代碼塊大小,即檢查類、方法等代碼塊的行數
  • 空白:檢查空白符,如 tab,回車符等
  • 修飾符:修飾符號的檢查,如修飾符的定義順序
  • 塊:檢查是否有空塊或無效塊
  • 代碼問題:檢查重復代碼,條件判斷,魔數等問題
  • 類設計:檢查類的定義是否符合規范,如構造函數的定義等問題

FindBugs

  • Bad practice 壞的實踐:常見代碼錯誤,用於靜態代碼檢查時進行缺陷模式匹配
  • Correctness 可能導致錯誤的代碼,如空指針引用等
  • 國際化相關問題:如錯誤的字符串轉換
  • 可能受到的惡意攻擊,如訪問權限修飾符的定義等
  • 多線程的正確性:如多線程編程時常見的同步,線程調度問題。
  • 運行時性能問題:如由變量定義,方法調用導致的代碼低效問題。

PMD:

  • 可能的 Bugs:檢查潛在代碼錯誤,如空 try/catch/finally/switch 語句
  • 未使用代碼(Dead code):檢查未使用的變量,參數,方法
  • 復雜的表達式:檢查不必要的 if 語句,可被 while 替代的 for 循環
  • 重復的代碼:檢查重復的代碼
  • 循環體創建新對象:檢查在循環體內實例化新對象
  • 資源關閉:檢查 Connect,Result,Statement 等資源使用之后是否被關閉掉

Jtest

  • 可能的錯誤:如內存破壞、內存泄露、指針錯誤、庫錯誤、邏輯錯誤和算法錯誤等
  • 未使用代碼:檢查未使用的變量,參數,方法
  • 初始化錯誤:內存分配錯誤、變量初始化錯誤、變量定義沖突
  • 命名約定:檢查命名是否符合命名規范
  • Javadoc 注釋:檢查類及方法的 Javadoc 注釋
  • 線程和同步:檢驗多線程編程時常見的同步,線程調度問題
  • 國際化問題:
  • 垃圾回收:檢查變量及 JDBC 資源是否存在內存泄露隱患

Java靜態檢查參考

Python代碼圈復雜度檢查

基礎知識

radon

radon cc --total-average -s -o SCORE -j all\ > r.json
-s 顯示復雜度
-a 顯示平均值,受-n -m影響
-j 結果轉換為json
-o --order
    - SCORE: order by cyclomatic complexity (descending):
    - LINES: order by line numbers;
-i 指定忽略文件夾

json2html

from json2html import *

import json
    with open('r.json','r') as f:
    array = json.load(f)
    print(array)

randon_html=json2html.convert(array)

with open("index.html","wr") as f:
    f.write(randon_html)

業界 CI

工具鏈

工具鏈好文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM