対象: SQL Server 2014、SQL Server 2016 Preview
SQL Server Data Tools を含む Visual Studio エディションには、Transact-SQL のデータベース コードの設計、命名、およびパフォーマンスに関する警告についてレポートするコード分析ルールが用意されています。詳細については、「データベース コードの分析によるコードの品質の向上」を参照してください。
組み込みのコード分析ルールに、必要な Transact-SQL の問題がない場合は、カスタムのデータベース コード分析ルールを作成できます。たとえば、「チュートリアル: SQL Server のカスタムの静的コード分析ルール アセンブリを作成する」のように、WAITFOR DELAY ステートメントを使用しないカスタム ルールを作成できます。カスタムのデータベース コード分析ルールを作成するには、Microsoft.SqlServer.Dac.CodeAnalysis 名前空間のクラスを使用します。
カスタム コード分析ルールを作成する前に、データベース コード分析ルールのさまざまなコンポーネントの中でも、基本アーキテクチャについて理解しておく必要があります。
データベース コード分析ルールのコンポーネント
次の図は、データベース コード分析ルールのコンポーネント間の処理です。
静的コード分析を直接実行するか (詳細については、「方法: Transact-SQL コードを分析して障害を検出する」を参照してください)、ビルドを実行して、データベース コード分析ルール機能を使用すると、すべてのルールが読み込まれ、プロジェクトの構成に従って使用されます。詳細については、「方法: データベース コードの静的分析用のルールを有効または無効にする (英語)」を参照してください。拡張機能マネージャーには、作成、登録したカスタム ルール アセンブリも読み込まれます。詳細については、「方法: 機能拡張のインストールと管理」を参照してください。
カスタムのコード分析ルール クラスは、SqlCodeAnalysisRule から継承します。カスタムのルール クラスからは、ルール実行コンテキスト経由で便利なオブジェクトにアクセスできます。たとえば、次のオブジェクトにアクセスできます。
ルール自体に関するメタデータ。
データベースのスキーマを表す TSqlModel。すべてのモデル要素、要素間の関係、要素のプロパティなどです。
特定の要素を確認するルールの場合、モデル内のそのスキーマ要素を表す TSqlObject をコンテキストに含めます。
多くのスキーマ オブジェクトには、このコンテキスト経由でアクセスできる ScriptDom 表現も含まれます。これは、要素の AST ベースの表現です。SelectStarExpression の存在など、構文の問題を確認するときに便利です。
SqlRuleProblem は、検出された問題を表すルールで作成されます。このルールを作成すると、関連する TSqlObject と場合によっては ScriptDom 表現要素がコンストラクターに渡され、ソース コード ファイルの問題の場所を特定するために使用されます。分析が完了すると、すべての問題がエラー マネージャーに渡され、エラー一覧に表示されます。