天天看點

SonarQube代碼掃描規則

SonarQube 對源代碼執行規則以生成問題。有四種類型的規則:

代碼異味(可維護領域)

錯誤(可靠性域)

漏洞(安全域)

安全熱點(安全域)

對于代碼異味和錯誤,預計零誤報。至少這是目标,是以開發人員不必懷疑是否需要修複。

對于漏洞,目标是讓超過 80% 的問題是真實的。

安全熱點規則将注意力引向對安全敏感的代碼。預計80%以上的問題會在開發者稽核後快速解決為“已稽核”。

規則頁面是您可以發現所有現有規則或基于提供的模闆建立新規則的入口點。

預設情況下,當進入頂部菜單項“規則”時,您将看到安裝在 SonarQube 執行個體上的所有可用規則。您可以根據左側窗格中的搜尋條件縮小選擇範圍:

語言:規則适用的語言。

類型:錯誤、漏洞、代碼異味或安全熱點規則。

标簽:可以向規則添加标簽,以便對它們進行分類并幫助更輕松地發現它們。

存儲庫:為 SonarQube 提供規則的引擎/分析器。

預設嚴重性:規則的原始嚴重性 - 由 SonarQube 定義。

狀态:規則可以有 3 種不同的狀态:

Beta : 該規則是最近實施的,我們還沒有從使用者那裡得到足夠的回報,是以可能會出現誤報或漏報。

已棄用:不應再使用該規則,因為存在類似但更強大和更準确的規則。

就緒:規則已準備好在生産中使用。

可用時間:首次在 SonarQube 上添加規則的日期。例如,這對于列出自上次插件更新以來的所有新規則很有用。

模闆:顯示允許建立自定義規則的規則模闆(見本頁稍後部分)。

品質配置檔案:包含在特定配置檔案中或從其排除

如果選擇了品質配置檔案,還可以檢查其活動嚴重性以及它是否被繼承。有關更多資訊,請參閱品質配置檔案文檔。

要檢視規則的詳細資訊,請單擊它,或使用向右箭頭鍵。除了基本規則資料外,您還可以檢視它在哪些(如果有)配置檔案中處于活動狀态,以及使用它提出了多少未解決的問題。

僅當您具有正确的權限(“管理品質配置檔案和門戶”)時,以下操作才可用:

添加/删除标簽:

可以在規則上添加現有标簽,或建立新标簽(隻需在文本字段中鍵入時輸入新名稱)。

請注意,某些規則具有無法删除的内置标簽 - 它們由提供規則的插件提供。

擴充說明:

您可以擴充規則說明,讓使用者了解您的組織如何使用特定規則或提供有關規則的更多資訊。

請注意,該擴充将作為規則詳細資訊的正常部分提供給非管理者使用者。

規則模闆由插件提供,作為使用者在 SonarQube 中定義自己的自定義規則的基礎。要查找模闆,請從“模闆”下拉清單中選擇“僅顯示模闆”方面:

SonarQube代碼掃描規則

要從模闆建立自定義規則,請單擊“自定義規則”标題旁邊的“建立”按鈕并填寫以下資訊:

姓名

密鑰(自動建議)

說明(支援 Markdown 格式)

預設嚴重性

地位

模闆指定的參數

您可以通過單擊“自定義規則”部分中的連結,從模闆導航到從模闆定義的自定義規則的詳細資訊。

SonarQube代碼掃描規則

自定義規則被視為與任何其他規則一樣,不同之處在于您可以編輯或删除它們:

SonarQube代碼掃描規則

注意:删除自定義規則時,它不會從 SonarQube 執行個體中實體删除。相反,它的狀态設定為“REMOVED”。這允許與此規則相關的目前或舊問題在 SonarQube 中正确顯示,直到它們被完全删除。

可以添加自定義編碼規則。有關詳細資訊和教程規則類型和嚴重性

規則是如何分類的?

SonarQube 品質模型将規則分為四類:錯誤、漏洞、安全熱點和代碼異味。根據以下問題的答案将規則配置設定給類别:

關于代碼的規則是明顯錯誤的,還是更可能是錯誤的?

如果答案是“是”,那麼這是一個錯誤規則。

如果不...

是關于可以被黑客利用的代碼的規則嗎?

如果是這樣,那麼這是一個漏洞規則。

關于代碼的規則是安全敏感的嗎?

如果是這樣,那麼這是安全熱點規則。

規則既不是錯誤也不是漏洞嗎?

如果是這樣,那麼這是代碼氣味規則。

為了給規則配置設定嚴重性,我們提出了更多的問題。第一個基本上是:

可能發生的最糟糕的事情是什麼?

在回答這個問題時,我們試圖在不預測世界末日的情況下考慮墨菲定律。

然後我們評估最壞事的影響和可能性(參見下面的嚴重性和可能性如何決定?)是高還是低,并将答案插入真值表:

SonarQube代碼掃描規則

為了評估規則的嚴重性,我們從最壞的事情(請參閱上面的嚴重性如何配置設定?)開始,并詢問特定類别的問題。

錯誤

影響:最壞的事情是否會導緻應用程式崩潰或損壞存儲的資料?

可能性:最壞的事情發生的機率是多少?

漏洞

影響:利用 Worst Thing 是否會對您的資産或使用者造成重大損害?

可能性:黑客能夠利用最壞的東西的機率是多少?

安全熱點

安全熱點未配置設定嚴重性,因為在審查它們之前,不知道是否真正存在潛在漏洞。

繼續閱讀