Share via


資料庫程式碼分析規則的擴充性概觀

包含 SQL Server Data Tools 的 Visual Studio 版本包括程式碼分析規則,可報告資料庫程式碼中的 Transact-SQL 設計、命名和效能警告。 如需詳細資訊,請參閱分析資料庫程式碼以提升程式碼品質 \(機器翻譯\)。

如果內建程式碼分析規則未涵蓋您要包括的特定 Transact-SQL 問題,則您可以建立自訂的資料庫程式碼分析規則。 例如,您可能想要建立可避免使用 WAITFOR DELAY 陳述式的自訂規則,如為 SQL Server 編寫自訂靜態程式碼分析規則組件的逐步解說中所示。 若要建立自訂的資料庫程式碼分析規則,您要使用 CodeAnalysis 命名空間中的類別。

在建立自訂的程式碼分析規則之前,您應該瞭解資料庫程式碼分析規則的各種元件之間的基本架構。

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

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

Database Code Analysis Rules Components

當您使用資料庫程式碼分析規則功能時,無論是直接執行靜態程式碼分析 (如需詳細資訊,請參閱如何:分析 Transact-SQL 程式碼以找出錯誤 \(機器翻譯\)),或透過執行建置,都會根據您在專案中設定所有規則的方式來載入並使用它們。 如需詳細資訊,請參閱如何:啟用和停用資料庫程式碼靜態分析的特定規則。 擴充管理員也將載入您已建立並登錄的任何自訂規則組件。 如需詳細資訊,請參閱如何:安裝及管理功能延伸模組

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

  • 有關規則本身的中繼資料。

  • 代表資料庫結構描述的 Dac.Model.TSqlModel,此結構描述包括所有模型項目、這些項目之間的關係,以及項目的任何屬性。

  • 對於檢查特定元素的規則,代表模型中該結構描述元素的 Dac.Model.TSqlObject 會包括在內容中。

  • 許多結構描述物件也有 ScriptDom 表示式,可透過此內容存取它 -這是元素的 AST 型表示式,當嘗試查看潛在語法問題,例如出現 SelectStarExpression 時,此表示式很有用。

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

另請參閱

擴充資料庫功能