使用雲效Flow做質量檢測,保障高質量的交付速度,雲效「Flow」 提供程式碼掃描、 安全掃描和各種自動化測試能力,支援人工測試卡點、自動化驗證卡點等多種質量紅線,確保業務質量。雲效流水線 Flow 流水線是持續交付的載體,通過構建自動化、整合自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢。
 
更多「雲效」產品,檢視:雲效快速入門
 
「Flow」 提供程式碼掃描、 安全掃描和各種自動化測試能力,支援人工測試卡點、自動化驗證卡點等多種質量紅線,確保業務質量。如何使用質量檢測能力,下面這篇內容告訴你一章
 

一、程式碼掃描

 
1、程式碼掃描能力
 
雲效Flow 為主流語言提供了開箱即用的程式碼掃描能力,為使用者提供了快速檢測程式碼質量的能力。
 
支援語言和規則
 
目前飛流支援掃描的語言和規則,如下表所示: 檢視詳情點選程式碼掃描能力 (aliyun.com)
 
 
掃描場景支援
  • 程式碼全量掃描
  • 程式碼增量掃描 全量掃描和增量掃描
  • 特定的程式碼目錄掃描 指定或排除目錄掃描
  • 指定規則集掃描 指定掃描規則集
2、使用程式碼掃描
 
雲效Flow 提供了開箱即用的程式碼掃描能力,在流水線中新增「程式碼掃描」任務,即可啟用。使用者可以通過以下方式新增程式碼掃描任務。
  • 使用模板新建流水線,選擇包含 「程式碼掃描」 任務的模板
  • 在已有的流水線中,新增新的階段,並選擇「程式碼掃描」任務
流水線模版建立
 
新建流水線時,選擇對應的開發語言,可以檢視當前語言下的預設流水線模版,選擇帶有“程式碼掃描”節點的流水線模版,即可快速使用程式碼掃描能力 。
 
 
編排流水線,新增程式碼掃描任務
 
在流水線編排中,可以通過新增任務,在任務型別分類“程式碼掃描”的任務,可以快速的新增程式碼掃描任務 。
 
 
3、全量掃描和增量掃描
 
雲效Flow 支援程式碼全量掃描和增量掃描,可以根據需要,選擇合適的掃描方式進行使用。
 
1) 程式碼規約全量掃描,通過飛流的掃描任務對指定的程式碼工程進行編碼規約全量檢測。
 
優點: 支援跨檔案引用, 程式碼掃描全面。
缺點: 但掃描速度較慢,問題量會比較多,難以修復
 
2) 程式碼規約增量掃描,是基於 Gitlab 的一次 push ,自動獲取 diff 內容,對 diff 檔案用編碼規約規則進行掃描,並過濾出此次提交產生 diff 規約問題功能。
 
優點: 只掃描 diff 檔案,掃描速度很快,增量問題直接關聯到人,能有效防止程式碼提交引進新問題數。
缺點: 因只掃描 diff 檔案,不能發現跨檔案引用出現的規約問題。
 
 
4、P3C程式碼掃描
 
Java 規約掃描是阿里巴巴多年經驗提煉的 Java規範- 包含7大類 Java 程式碼規則
  • 命名規約
  • 註釋規範
  • 集合
  • OOP 規約
  • 併發處理
  • 控制語句
  • 其他。如果未做掃描配置,預設會對所有規則進行掃描,也可以在規約掃描元件配置。
指定掃描規則集
 
配置指定規則集,配置規則集如下圖所示: 1)在流水線編輯狀態,點選相應的規約掃描卡片 2)在展開的卡片抽屜上,點選任務列表 - 如圖中:Java 程式碼掃描 3)在規約集合處,配置相應的規則集
 
 
 
指定或排除目錄掃描
 
配置目錄掃描:
 
1)在流水線編輯狀態,點選相應的規約掃描卡片,
2)在展開的卡片抽屜上,點選任務列表 - 如圖中:Java 程式碼掃描
3)子目錄:配置掃描的相應目錄;排除子目錄:配置排除在掃描範圍內的相應目錄。
 
 
5、使用自定義程式碼掃描規則
 
目前雲效Flow 已經內建了支援 Java,JavaScript,Python,Go,TypeScript,PHP 等語言的程式碼質量掃描能力,並提供了預設的程式碼掃描規則。對於需要對掃描規則進行調整的使用者可以使用自定義程式碼掃描規則。
 
ps:更多規則請參考ESLint官方文件
 
目前支援自定義程式碼掃描規則如下:
 
1)、ESLint自定義規則
 
新增程式碼掃描任務
 
新增流水線任務並選擇JavaScript程式碼掃描,如下所示:
 
 
使用自定義規則
 
預設情況下Flow使用內建的eslint檢查規則,如果需要使用自定義規則,需要在任務配置中勾選“使用本地ESLint配置”,勾選後需要確保專案根路徑下包含.eslintrc.*檔案即可。
 
 
2)、TypeScript自定義規則
 
新增TS程式碼掃描任務
 
新增任務並選擇TypeScript程式碼掃描任務,如下所示:
 
 
使用自定義規則
 
預設情況下,Flow會使用TS Lint預設的程式碼掃描規則。為了使用自定義的程式碼掃描規則使用者需要在專案根路徑下提供tslint.json檔案。
 
初次使用可以使用如下命令生成該檔案:
 
tslint --init
 
儲存並執行流水線,TSLint任務會自動檢查程式碼專案根路徑下是否包含該檔案,如果包含則使用使用者定義的tslint.json檔案。
 
 
3)、Java P3C自定義規則
 
自定義規則集
 
使用者可以從Github獲取預設的規則集合檔案,並提交到程式碼倉庫中。新增 Java 程式碼掃描如下所示:
 
 
在任務配置中,勾選“使用自定義規則目錄”選項,並制定自定義規則檔案所在目錄,如下圖所示:
 
 
儲存並執行流水線即可使用程式碼庫中定義的自定義規則集。
 

二、單元測試

雲效Flow 為主流語言提供了開箱即用的單元測試能力,可以方便的對程式碼進行單元檢測。
 
支援語言
 
目前飛流支援單元測試的語言如下表所示:
  • Java Maven
  • Java Gradle
  • Nodejs
  • Python
  • PHP Codeception
  • PHP Unittest
  • Golang
如何使用單元測試
 
在飛流中可以通過流水線任務快速的使用單元測試。
 
新建流水線時,通過流水線模版建立單元測試任務
 
新建流水線時,選擇對應的開發語言,可以檢視當前語言下的預設流水線模版,選擇帶有“測試”節點的流水線模版,即可快速使用單元測試能力
 
 
編輯流水線時,通過任務模版建立單元測試任務
 
在流水線編排中,可以通過新增任務,選擇分類在“測試”下的任務,對應使用的語言來建立單元測試。
 
 
三、質量紅線
 
質量紅線是雲效Flow 流水線提供的質量卡點能力, 用於標準化質量標準,當階段中存在質量項尚未達標的情況下,阻止釋出流程進入到下一階段(環節)。
 
配置質量紅線
 
質量紅線當前支援在測試相關的任務中進行設定,包含:
  • 程式碼掃描能力
  • 單元測試
在流水線編輯狀態,點選測試相關的任務, 點選“新增紅線”,即可出現紅線資訊,用於指定當前測試任務必須達到的標準。
 
以掃描任務為例,可以設定紅線如下圖:
  • Blocker的問題為0
  • Major的問題為0
  • Critial的問題為0
 
 
質量紅線生效
 
在流水線執行狀態, 會根據對應的質量紅線對測試任務進行判斷,是否能夠通過紅線,如果未通過紅線,對應的任務將失敗。
 
 
質量紅線跳過
 
考慮在一些特殊的情況下,未通過質量紅線的流程也需要繼續往下執行,飛流也提供了“跳過”的能力,可以由管理員將紅線跳過。
 
 
雲效流水線 Flow 流水線是持續交付的載體。雲效Flow做質量檢測,能夠保障高質量的交付速度,為你和團隊提供程式碼掃描、 安全掃描和各種自動化測試能力,支援人工測試卡點、自動化驗證卡點等多種質量紅線,確保業務質量。通過持續向團隊提供及時反饋,讓交付過程高效順暢。