共用方式為


程式碼分析規則擴充性概觀

提供的程式碼分析規則會報告資料庫程式碼中的 Transact-SQL 設計、命名和效能警告。 如果內建程式碼分析規則未涵蓋您要自動偵測的特定 T-SQL 問題或反模式,則您可以建立自訂的資料庫程式碼分析規則。

例如,您可能想要建立可避免使用 WAITFOR DELAY 陳述式的自訂規則,如 Author 自訂程式碼分析規則中所示。 若要建立自訂的資料庫程式碼分析規則,您要使用 CodeAnalysis 命名空間中的類別。

本概觀涵蓋資料庫程式碼分析規則的各種元件之間的基本結構描述。

資料庫程式碼分析規則元件

下圖說明資料庫程式碼分析規則元件如何處理:

資料庫程式碼分析處理流程的螢幕擷取畫面。

當您使用資料庫程式碼分析規則功能時,所有規則都會根據您在專案中設定規則的方式載入和使用。 如需詳細資訊,請參閱如何:啟用和停用資料庫程式碼靜態分析的特定規則。 延伸模組管理員也會載入您已建立並登錄的任何自訂規則組件。

自訂程式碼分析規則類別繼承自 SqlCodeAnalysisRule。 自訂規則類別可以透過其規則執行內容來存取有用物件。 包括以下物件:

  • 有關規則本身的中繼資料。
  • 代表資料庫結構描述的 Dac.Model.TSqlModel,此結構描述包括所有模型項目、這些項目之間的關係,以及項目的任何屬性。
  • 對於檢查特定元素的規則,代表模型中該結構描述元素的 Dac.Model.TSqlObject 會包括在內容中。
  • 許多結構描述物件也有 ScriptDom 表示式,可透過此內容存取它。 這是元素的 AST 型表示式,當嘗試查看潛在語法問題,例如出現 SelectStarExpression 時,此表示式很有用。

針對規則所發現的任何問題,會建立 Dac.CodeAnalysis.SqlRuleProblem 物件。 建立此 SqlRuleProblem 物件時,相關 Dac.Model.TSqlObject 和可能的 ScriptDom 表示式元素會傳遞至建構函式,而且這些元素會用來判定原始程式碼檔案中發生問題的位置。 分析結束時,這些問題全都會傳遞至錯誤管理員,並顯示在錯誤清單中。

在 SQL 專案中納入自訂規則

使用 Microsoft.Build.Sql SDK 樣式的 SQL 專案,您可以藉由新增包含規則的套件參考,在專案中包括自訂程式碼分析規則。