165
軟體品質靜態分析 SonarQube 實務 授課講師:周彥江 上課日期:2017/04/10 1

軟體品質靜態分析 -SonarQube實務

Embed Size (px)

Citation preview

Page 1: 軟體品質靜態分析  -SonarQube實務

軟體品質靜態分析 –

SonarQube 實務

授課講師:周彥江

上課日期:2017/04/10

1

Page 2: 軟體品質靜態分析  -SonarQube實務

課程設計

2

https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html

版本控制與自動化持續整合實務3/27, 3/28

軟體變更衝擊分析實務 4/17軟體品質靜態分析-SonarQube實務 4/10

Page 3: 軟體品質靜態分析  -SonarQube實務

大綱

軟體品質 What & Why & When?

技術債與其管理策略

SonarQube 簡介

靜態程式碼掃描與改善

單元測試與涵蓋度

SonarQube 管理

3

Page 4: 軟體品質靜態分析  -SonarQube實務

軟體品質 WHAT &

WHY & WHEN?

4

Page 5: 軟體品質靜態分析  -SonarQube實務

什麼是「軟體品質」?

不易量化的質性指標

Reliability

Efficiency

Security

Maintainability

量化指標

Size

5

Page 6: 軟體品質靜態分析  -SonarQube實務

Reliability 可靠性

6

Page 7: 軟體品質靜態分析  -SonarQube實務

Efficiency 效率

7

Page 8: 軟體品質靜態分析  -SonarQube實務

Security 安全性

8

Page 9: 軟體品質靜態分析  -SonarQube實務

Maintainability 可維護性

9

http://www.nownews.com/n/2017/03/27/2458686

Page 10: 軟體品質靜態分析  -SonarQube實務

Size

雖然是量化指標,但明顯影響 Maintainability

不只是程式碼,連 Data Schema 也應納入

10

Page 11: 軟體品質靜態分析  -SonarQube實務

Measurable vs. Desirable

11

https://en.wikipedia.org/wiki/Software_quality#/media/File:SoftwareQualityCharacteristicAttributeRelationship.png

Page 12: 軟體品質靜態分析  -SonarQube實務

為何要「軟體品質」?

如果不想在上線期間沒日沒夜

如果不想進入保固後電話不停

如果不想以後被人笑話/抱怨

12

Page 13: 軟體品質靜態分析  -SonarQube實務

如何提升(確保)軟體品質?

Programmer Training

Code Review

每位 Reviewer 的程度不同

Reviewer 與 Programmer 的交情不同

Reviewer 每天的心情不同

13

人為因素削弱了軟體品質的穩定性

Page 14: 軟體品質靜態分析  -SonarQube實務

如何更好地提升(確保)軟體品質?

Coding Rule Checklist

Propose by Committee

Check by Reviewer

Feedback by Reviewer / Committee

14

Page 15: 軟體品質靜態分析  -SonarQube實務

有問題嗎?

人力成本過高

Committee

Reviewer

Programmer

各方角力結果

放棄品質

15

https://tensix.com/2014/10/management-and-the-triple-constraints/

Page 16: 軟體品質靜態分析  -SonarQube實務

何時應重視軟體品質?

16

Source: IBM Systems Sciences Institute

Page 17: 軟體品質靜態分析  -SonarQube實務

經驗談:近年來要求零中高資安風險

17

Page 18: 軟體品質靜態分析  -SonarQube實務

技術債與其管理策略

18

Page 19: 軟體品質靜態分析  -SonarQube實務

何謂 Technical Debt 技術債?

針對 Maintainability 而來

為了加速開發,捨棄最佳實務,留下 Code

Smells 程式異味。

短期得利,未來需附利息才能償還。

19

Page 20: 軟體品質靜態分析  -SonarQube實務

技術債象限

20

https://martinfowler.com/bliki/TechnicalDebtQuadrant.html

Page 21: 軟體品質靜態分析  -SonarQube實務

由成因看技術債管理策略

積極

不容許技術債二次存在

僅容許 Prudent + Deliberate

中庸

僅處理 Reckless + Inadvertent

無視技術債

消極

21

積極

消極

Page 22: 軟體品質靜態分析  -SonarQube實務

由後果看技術債管理策略

積極

不容許技術債二次存在

僅容許低風險

中庸

僅處理高風險

無視技術債

消極

22

積極

消極

Page 23: 軟體品質靜態分析  -SonarQube實務

近似的概念

Remediation Cost 矯正成本

Reliability

Security

23

Page 24: 軟體品質靜態分析  -SonarQube實務

更多客觀量化指標

Complexity 複雜度

Reliability

Maintainability

Coverage 涵蓋度

Reliability

Duplications 重複度 / Similarity 相似度

Maintainability

24

Page 25: 軟體品質靜態分析  -SonarQube實務

Efficiency?

不易找到量化指標

與 Reliability 正相關

25

Page 26: 軟體品質靜態分析  -SonarQube實務

空有策略是不夠的

如何落實?

Assign Owner

定期 Review + Threshold + 自己的 Bug 自己救

還是落空?

列入績效評比

不得 Release

26

Page 27: 軟體品質靜態分析  -SonarQube實務

SONARQUBE 簡介

27

Page 28: 軟體品質靜態分析  -SonarQube實務

SonarQube 網站有兩家

SonarQube.org

Official Site

自行安裝管理主機

SonarQube.com

Continuous Code Quality as a Service

雲端試用觀摩學習

28

Page 29: 軟體品質靜態分析  -SonarQube實務

SonarQube.org

29

Page 30: 軟體品質靜態分析  -SonarQube實務

SonarQube.com

30

Page 31: 軟體品質靜態分析  -SonarQube實務

由 SonarQube 上的 Project 開始

Project

(源自於軟體專案)一群檔案的集合

Rule

針對某種程式語言,判定品質好壞的規則

依性質可分三大類(詳次頁)

Project 會經許多 Rule 許多次的檢驗

是否含某種程式語言的檔案,由附檔名判斷

31

Page 32: 軟體品質靜態分析  -SonarQube實務

Issues 問題

在某專案的某時點(某次檢驗),可能有零到多個違反 Rule 之處,每處稱為一個 Issue。

依 Rule 所屬不同,有更精確的名稱:

Reliability – Bug

Security – Vulnerability

Maintainability – Code Smell

32

Page 33: 軟體品質靜態分析  -SonarQube實務

SonarQube 支援的程式語言

33

Page 34: 軟體品質靜態分析  -SonarQube實務

Dashboard – 跨專案比較

34

Page 35: 軟體品質靜態分析  -SonarQube實務

跨專案如何比較?

每次評分中,都有很多裁判在評量,最後再由裁判長彙總。

總評僅揭露通過/不通過,決定是否能 Release

,沒有高低分數的差別。

各專案最後一次總評的結果並列,可供比較。

也可僅針對某些評量比較。

35

Page 36: 軟體品質靜態分析  -SonarQube實務

各種評量有哪些?

Reliability Rating

Security Rating

Maintainability Rating

Coverage

Duplication

Size

36

Page 37: 軟體品質靜態分析  -SonarQube實務

裁判長 Quality Gates

裁判長不負實質評判之責,僅決定是否採計某裁判的評量,並忠實彙總。

採計何者的決策應保長期穩定。

為保持多裁判長以適用於不同類型專案的彈性,可為各裁判長命名以便識別。

預設唯一的裁判長名為 SonarQube way。

37

Page 38: 軟體品質靜態分析  -SonarQube實務

SonarQube way 採計四項 Conditions

38

Page 39: 軟體品質靜態分析  -SonarQube實務

彙總判定標準

39

Page 40: 軟體品質靜態分析  -SonarQube實務

Condition 的組成

40

Page 41: 軟體品質靜態分析  -SonarQube實務

Measure 評量

Issue

Reliability

Security

Maintainability

Complexity

Duplication

Documentation

Test

41

https://docs.sonarqube.org/display/SONAR/Metric+Definitions

Page 42: 軟體品質靜態分析  -SonarQube實務

Project Overview

42

Page 43: 軟體品質靜態分析  -SonarQube實務

各類 Rule 的精確度要求與估值

Violation False Positive Estimation

Reliability Bug Not Expected Remediation Cost

Security Vulnerability Not Expected Remediation Cost

Maintainability Code Smell Acceptable Technical Debt

43

Page 44: 軟體品質靜態分析  -SonarQube實務

矯正成本 Remediation Cost

以下三選一

Constant/issue

a = 0, y = b

Linear

隨 Issue 所在檔案大小線性變化

a > 0, b = 0, y = ax

Linear with offset

線性變化+偏移量

a > 0, b != 0, y = ax + b

Technical Debt 亦共用此算法

利率為 0%

44

Page 45: 軟體品質靜態分析  -SonarQube實務

技術債比率 Technical Debt Ratio, TDR

技術債比率 =

矯正成本 / 開發成本

開發成本 =

開發一行程式碼的時間 * 程式碼行數

開發一行程式碼的時間 =

0.06 日 (in SonarQube)

45

Page 46: 軟體品質靜態分析  -SonarQube實務

Rule Default Severity 嚴重度

錢要花在刀口上,刀口在這找…

46

Page 47: 軟體品質靜態分析  -SonarQube實務

Rating 分級

A B C D E

Reliability Bug = 0 Minor > 0 Major > 0 Critical > 0 Blocker > 0

Security Vulnerability

= 0

Minor > 0 Major > 0 Critical > 0 Blocker > 0

Maintaina-

bility

TDR <= 5% TDR <= 10% TDR <= 20% TDR <= 50% TDR > 50%

47

Page 48: 軟體品質靜態分析  -SonarQube實務

Leak 新問題

常見三種選擇

Diff(Latest, Previous Version)

與 Sprint 切齊

固定日期(Milestone)

48

Page 49: 軟體品質靜態分析  -SonarQube實務

Complexity

49

Page 50: 軟體品質靜態分析  -SonarQube實務

Duplication

50

Page 51: 軟體品質靜態分析  -SonarQube實務

共用環境上專案太多?左右護法來也

51

左有「我的最愛」

右有「搜尋條件」

Page 52: 軟體品質靜態分析  -SonarQube實務

靜態程式碼掃描與改善

52

Page 53: 軟體品質靜態分析  -SonarQube實務

靜態程式碼掃描與改善

專案原始碼

掃描

Console Mode

IDE

Continuous Integration

目標

改善

53

Page 54: 軟體品質靜態分析  -SonarQube實務

專案原始碼

dynaTrace easyTravel src 2.0.0.2542

Unzip to easytravel-src

54

Page 55: 軟體品質靜態分析  -SonarQube實務

dynaTrace easyTravel src 2.0.0.2542

https://community.dynatrace.com/community/display/DL/Demo

+Applications+-+easyTravel#DemoApplications-easyTravel-

Download(Installer+License)

https://s3.amazonaws.com/easytravel/dT65/dynatrace-

easytravel-src-2.0.0.2542.zip

55

Page 56: 軟體品質靜態分析  -SonarQube實務

easyTravel architecture

56

easyTravel - Architecture and Deployments.pptx

Page 57: 軟體品質靜態分析  -SonarQube實務

Console Mode

Setup

Java 8

SonarQube 6.x

Sonar Scanner

dynaTrace easyTravel src 2.0.0.2542

Scan

Result

57

Page 58: 軟體品質靜態分析  -SonarQube實務

Java 8

Download

https://java.com/download

Install

Set Path

C:\Program Files\Java\jdk1.8.0_111\bin

Verify

58

Page 59: 軟體品質靜態分析  -SonarQube實務

SonarQube 6.x

Download

https://www.sonarqube.org

Unzip

Run

Verify

Console

Browser

59

Page 60: 軟體品質靜態分析  -SonarQube實務

Run SonarQube

60

Page 61: 軟體品質靜態分析  -SonarQube實務

也可以變身「服務」

61

Page 62: 軟體品質靜態分析  -SonarQube實務

Verify SonarQube (Console)

62

Page 63: 軟體品質靜態分析  -SonarQube實務

Verify SonarQube (Browser)

http://localhost:9000

63

Page 64: 軟體品質靜態分析  -SonarQube實務

Sonar Scanner

Download

http://docs.sonarqube.org/display/SCAN/Analyzin

g+with+SonarQube+Scanner

Unzip to ScannerHome

Set Path

ScannerHome\bin

Verify

64

Page 65: 軟體品質靜態分析  -SonarQube實務

Unzip Sonar Scanner

65

Page 66: 軟體品質靜態分析  -SonarQube實務

Set Path for Sonar Scanner

66

Page 67: 軟體品質靜態分析  -SonarQube實務

Verify Sonar Scanner

67

Page 68: 軟體品質靜態分析  -SonarQube實務

Unzip & Scan

cd to easytravel-src\BusinessBackend

Scan arguments

-Dsonar.projectKey=BusinessBackend

-Dsonar.sources=.

68

Page 69: 軟體品質靜態分析  -SonarQube實務

Scan

69

Page 70: 軟體品質靜態分析  -SonarQube實務

Scan Successful

70

Page 71: 軟體品質靜態分析  -SonarQube實務

也試試 .NET Project

cd to easytravel-src\dotNET45

Scan arguments

-Dsonar.projectKey=dotNET45

-Dsonar.sources=.

71

Page 72: 軟體品質靜態分析  -SonarQube實務

比較不順利

72

Page 73: 軟體品質靜態分析  -SonarQube實務

.NET Framework 4.5.2

https://www.microsoft.com/en-

us/download/details.aspx?id=42643

僅在掃描 .NET 程式時需要

73

Page 74: 軟體品質靜態分析  -SonarQube實務

Result

74

Page 75: 軟體品質靜態分析  -SonarQube實務

版本未提供,長遠來看不太理想

75

Page 76: 軟體品質靜態分析  -SonarQube實務

登入 admin / admin 可事後修改

76

Page 77: 軟體品質靜態分析  -SonarQube實務

也可在掃描前指定

-Dsonar.projectVersion=2

77

Page 78: 軟體品質靜態分析  -SonarQube實務

與前次比較,有版號才清楚

78

Page 79: 軟體品質靜態分析  -SonarQube實務

IDE

Java + Spring Tool Suite / Eclipse

Download / Install SonarLint Plugin

Add SonarLint View

Scan On-The-Fly

Visual Studio Community

Download / Install SonarLint for Visual Studio

Add SonarLint View

Scan On-The-Fly

Calculate Code Metrics for Solution

79

Page 80: 軟體品質靜態分析  -SonarQube實務

Download / Install SonarLint Plugin

80

Page 81: 軟體品質靜態分析  -SonarQube實務

Add SonarLint View – SonarLint On-The-

Fly

81

Page 82: 軟體品質靜態分析  -SonarQube實務

程式右側標記與程式 Issues 清單

82

Page 83: 軟體品質靜態分析  -SonarQube實務

Download / Install SonarLint for Visual

Studio

83

Page 84: 軟體品質靜態分析  -SonarQube實務

Add SonarLint View – Code Metrics

Results

84

Page 85: 軟體品質靜態分析  -SonarQube實務

程式右側標記與方案 Issues 清單

85

Page 86: 軟體品質靜態分析  -SonarQube實務

IDE Scan 可為輔助,但不足夠

各開發人員的版本並不保證一致

各開發人員的自律並不保證一致

掃描僅限於 RuleSet (Quality Profile) 而不包含Duplication、Complexity、Coverage 等。

專案團隊無法掌握全貌

86

Page 87: 軟體品質靜態分析  -SonarQube實務

Continuous Integration

Setup

SonarQube 6.x

GitLab

dynaTrace easyTravel src 2.0.0.2542

Jenkins

BusinessBackend

dotNET45

Scan

View

87

Page 88: 軟體品質靜態分析  -SonarQube實務

Why CI? 實務上較完整的架構

88

https://lasithapetthawadu.wordpress.com/2014/05/03/configure-jenkins-with-sonarqube-for-static-code-analysis-and-integration/

Page 89: 軟體品質靜態分析  -SonarQube實務

Push source to GitLab

89

Page 90: 軟體品質靜態分析  -SonarQube實務

原始碼已上 GitLab

90

Page 91: 軟體品質靜態分析  -SonarQube實務

Jenkins New Project

Login

Create

Naming & Selection

Get Source Code from Git

Execute SonarQube Scanner

Scanning Details

91

Page 92: 軟體品質靜態分析  -SonarQube實務

Login Jenkins

帳密 root / password

92

Page 93: 軟體品質靜態分析  -SonarQube實務

Create Jenkins Project

93

Page 94: 軟體品質靜態分析  -SonarQube實務

Naming & Selection

94

Page 95: 軟體品質靜態分析  -SonarQube實務

Get Source Code from Git

95

Page 96: 軟體品質靜態分析  -SonarQube實務

Execute SonarQube Scanner

96

Page 97: 軟體品質靜態分析  -SonarQube實務

Scanning Details

97

Page 98: 軟體品質靜態分析  -SonarQube實務

Scan – Jenkins Build Now

98

Page 99: 軟體品質靜態分析  -SonarQube實務

View - Jenkins SonarQube 專案名、版號一致

99

Page 100: 軟體品質靜態分析  -SonarQube實務

一行 C# 程式都找不到?

100

Page 101: 軟體品質靜態分析  -SonarQube實務

Log 也沒什麼頭緒

101

Page 102: 軟體品質靜態分析  -SonarQube實務

-X 進入 Debug

102

Page 103: 軟體品質靜態分析  -SonarQube實務

終於找到線索

103

Page 104: 軟體品質靜態分析  -SonarQube實務

專案外移到 Windows Jenkins Node

104

Page 105: 軟體品質靜態分析  -SonarQube實務

似曾相識的錯誤訊息

105

Page 106: 軟體品質靜態分析  -SonarQube實務

Windows Jenkins Node + .NET 4.5.2 即可

106

Page 107: 軟體品質靜態分析  -SonarQube實務

偶爾可能面臨系統資源窘迫

107

Page 108: 軟體品質靜態分析  -SonarQube實務

在 SonarQube 處理

108

Page 109: 軟體品質靜態分析  -SonarQube實務

在 Jenkins 處理

109

Page 110: 軟體品質靜態分析  -SonarQube實務

總結 CI Static Code Scan 系統需求

GitLab

SonarQube

Jenkins

Java 8

GitLab Plugin

SonarQube Scanner Plugin

Windows +.NET Framework 4.5.2*

110

Page 111: 軟體品質靜態分析  -SonarQube實務

目標

幾個範例(可複選)

Quailty Gate: Pass

Leak Issues = 0

Bug = 0, Reliability Rating: A

Vulnerability = 0, Security Rating: A

Maintainability Rating: A

Blocker + Critical Issues = 0

Complexity / File < 20

Duplication < 10%

Coverage > 80%

111

Page 112: 軟體品質靜態分析  -SonarQube實務

改善

Issue

Duplication

Complexity

Coverage

112

Page 113: 軟體品質靜態分析  -SonarQube實務

未登入也可針對問題找參考解答

113

Page 114: 軟體品質靜態分析  -SonarQube實務

不一定要改程式

114

https://docs.sonarqube.org/display/SONAR/Issue+Lifecycle

Page 115: 軟體品質靜態分析  -SonarQube實務

Resolved 還可分三種

115

Page 116: 軟體品質靜態分析  -SonarQube實務

針對誤判或 won’t fix 提出說明

116

Page 117: 軟體品質靜態分析  -SonarQube實務

Won’t fix 可能是大宗

如果第三方元件有 Issues,要修嗎?

如果要修,要貢獻回去嗎? 如果貢獻回去,要等下次釋出嗎?

sonar.exclusions=**/jquery*.js,**/modernizr.js

117

Page 118: 軟體品質靜態分析  -SonarQube實務

看例子比較容易理解

118

Page 119: 軟體品質靜態分析  -SonarQube實務

若改程式就要驗證

驗證「藥效」

透過 SonarQube 重新 Scan -> Issues 數量減少

驗證軟體專案仍能建置

透過 Build Tool (Jenkins / Ant / Visual Studio…)

驗證原本功能仍在

透過單元測試

驗證其他功能未受破壞

透過單元測試

119

Page 120: 軟體品質靜態分析  -SonarQube實務

Refactoring 重構

To improve the design and quality of existing

source code without changing its external

behavior ~by Martin Fowler

Not a “value added” activity

透過 Unit test 來確保不會改變原先的行為

既然如此,為什麼要 refactoring?

需求會改變,程式必須跟著改

程式在一直改變的過程中品質也會跟著下降(如果沒有 refactor)

http://www.designsmells.com/resources

120

Page 121: 軟體品質靜態分析  -SonarQube實務

重複程式碼的改善

Refactoring methods

Extract method:將重複的程式碼抽離成獨立方法

Extract superclass:將多個相同性質的類別共通方法抽離成一個父類別

Extract class:將多個性質不同的類別共通方法抽離出一個獨立的共用類別 (utility class),透過委託(delegate)方式使用被前述類別使用

參考書

Martin Fowler, Refactoring: Improving the Design

of Existing Code, 1999

121

Page 122: 軟體品質靜態分析  -SonarQube實務

Cyclomatic Complexity

呈現程式判斷分支與迴圈的多寡,越高表示複雜度越高

122

Page 123: 軟體品質靜態分析  -SonarQube實務

Cyclomatic Complexity 指標

判斷分支、迴圈、Throw、提早的 return 等敘述會增加 complexity

範例

資料來源: G. Campbell and P. Papapetrou, SonarQube in Action, 2013

Page 124: 軟體品質靜態分析  -SonarQube實務

程式複雜度的改善

Refactoring-Extract Method

範例

124

資料來源: G. Campbell and P. Papapetrou, SonarQube in Action, 2013

Page 125: 軟體品質靜態分析  -SonarQube實務

單元測試與涵蓋度

125

Page 126: 軟體品質靜態分析  -SonarQube實務

單元測試與涵蓋度

正式程式

撰寫 -> 編譯 -> 產出 -> 執行

單元測試程式

撰寫 -> 編譯 -> 產出 -> 合併正式程式產出 -> 測試

涵蓋度

修改編譯腳本

植入涵蓋度計算工具

結合 SonarQube

測試

126

Page 127: 軟體品質靜態分析  -SonarQube實務

正式程式 3-1(JDK 與版控位址)

127

Page 128: 軟體品質靜態分析  -SonarQube實務

正式程式 3-2(稀疏簽出)

128

Page 129: 軟體品質靜態分析  -SonarQube實務

正式程式 3-3(編譯選項)

129

Page 130: 軟體品質靜態分析  -SonarQube實務

正式程式通過編譯

130

Page 131: 軟體品質靜態分析  -SonarQube實務

單元測試撰寫前先另開分支

131

Page 132: 軟體品質靜態分析  -SonarQube實務

單元測試程式

132

Page 133: 軟體品質靜態分析  -SonarQube實務

單元測試編譯腳本

133

Page 134: 軟體品質靜態分析  -SonarQube實務

改抓 Test Branch

134

Page 135: 軟體品質靜態分析  -SonarQube實務

改跑新的 test Target

135

Page 136: 軟體品質靜態分析  -SonarQube實務

測試通過

136

Page 137: 軟體品質靜態分析  -SonarQube實務

副產品:單元測試報表 – 設定

137

Page 138: 軟體品質靜態分析  -SonarQube實務

副產品:單元測試報表 – 呈現

138

Page 139: 軟體品質靜態分析  -SonarQube實務

為涵蓋度修改編譯腳本前先另開分支

139

Page 140: 軟體品質靜態分析  -SonarQube實務

修改編譯腳本

140

Page 141: 軟體品質靜態分析  -SonarQube實務

改抓 Coverage Branch

141

Page 142: 軟體品質靜態分析  -SonarQube實務

涵蓋度計算工具 JaCoCo

142

Page 143: 軟體品質靜態分析  -SonarQube實務

植入涵蓋度計算工具

143

正規做法(需要 Jenkins 主機帳戶權限)

下載 JaCoCo、解壓

將 jacocoant.jar 複製到 Ant lib 目錄下

取巧做法(需要 Jenkins 專案組態權限)

下載 JaCoCo、解壓

將 jacocoant.jar 上雲端硬碟

取得雲端硬碟的「直接下載」連結

在 Jenkins Invoke Ant 之前,檢查工具目錄,若無jacocoant.jar 則下載補上。

Page 144: 軟體品質靜態分析  -SonarQube實務

植入涵蓋度計算工具 – 取巧做法

144

Page 145: 軟體品質靜態分析  -SonarQube實務

結合 SonarQube

145

Page 146: 軟體品質靜態分析  -SonarQube實務

測試通過,涵蓋率破蛋

146

Page 147: 軟體品質靜態分析  -SonarQube實務

挑戰提高涵蓋率

147

Page 148: 軟體品質靜態分析  -SonarQube實務

在 Jenkins 計算 .NET 涵蓋率需要什麼?

程式

easyTravel dotNET45

已含測試程式

工具

Jenkins (node) on Windows

MSBuild Plugin

SonarQube Scanner for MSBuild

MSTest Plugin*

Visual Studio Community

OpenCover

148

Page 149: 軟體品質靜態分析  -SonarQube實務

MSBuild Plugin

149

Page 150: 軟體品質靜態分析  -SonarQube實務

SonarQube Scanner for MSBuild

150

Page 151: 軟體品質靜態分析  -SonarQube實務

OpenCover

151

Page 152: 軟體品質靜態分析  -SonarQube實務

Jenkins 上的專案組態設定

Code Base

SonarQube + MSBuild 四部曲

副產品:單元測試報表

152

Page 153: 軟體品質靜態分析  -SonarQube實務

Code Base

153

Page 154: 軟體品質靜態分析  -SonarQube實務

SonarQube + MSBuild 四部曲

154

Page 155: 軟體品質靜態分析  -SonarQube實務

副產品:單元測試報表

155

Page 156: 軟體品質靜態分析  -SonarQube實務

SONARQUBE 管理

158

Page 157: 軟體品質靜態分析  -SonarQube實務

Administration

SonarQube

Add Supported Language

Programming / Natural Language

Change Rule

Change Quality Profile

Change Quality Gate

申訴機制

159

Page 158: 軟體品質靜態分析  -SonarQube實務

Admin Login

160

Page 159: 軟體品質靜態分析  -SonarQube實務

Add Supported Language

161

Page 160: 軟體品質靜態分析  -SonarQube實務

列出現有 Rules(左側可再篩選)

162

Page 161: 軟體品質靜態分析  -SonarQube實務

Rule 可改 Severity、Description、Activate

163

Page 162: 軟體品質靜態分析  -SonarQube實務

Quality Profile 規則集

164

Page 163: 軟體品質靜態分析  -SonarQube實務

Quality Gate

165

Page 164: 軟體品質靜態分析  -SonarQube實務

申訴機制

Code Review Committee

Won’t Fix

False Positive

166

Page 165: 軟體品質靜態分析  -SonarQube實務

謝謝聆聽Q&A

www.gss.com.tw www.gsscloud.com