方法: Transact-SQL コードを分析して障害を検出する

ユーザー インターフェイスを使用してプロジェクトをビルドするか、MSBuild を使用してプロジェクトをビルドした場合は、必要に応じて Transact-SQL コードを分析できます。 コードに設計、名前付け、またはパフォーマンスに関する障害が含まれていると、コードの分析後に 1 つ以上のエラーまたは警告が表示されます。 これらのエラーまたは警告をクリックすると、関連するコードが表示されます。 詳細情報を表示して、その原因やそれらを抑制する必要があるかどうかについて、より深く理解することもできます。 Visual Studio Premium および Visual Studio Ultimate でのコード分析の詳細については、「データベース コードの分析によるコードの品質の向上」を参照してください。

コードを分析する前に、分析の一部として実行する規則を構成できます。 詳細については、「方法: データベース コードのスタティック分析の特定の規則を有効または無効にする」を参照してください。 ビルド構成ごとに異なる規則のセットを構成できます。 各開発者がコードをチェックインする前に規則の小規模なセットを実行して一般的な問題をチェックするようにし、より包括的な分析を夜間に実行することもできます。

Database Edition でのコードの分析

データベース プロジェクトの Transact-SQL コードを分析するには

  1. データベース プロジェクトが含まれているソリューションを開きます。

  2. [データ] メニューの [スタティック コード分析] をポイントし、[実行] をクリックします。

    データベース プロジェクトのコードが分析され、警告またはエラーがある場合は [エラー一覧] に表示されます。

エラーまたは警告の原因となったソース コードを表示するには

  1. [エラー一覧] で、エラーまたは警告をダブルクリックします。 エラーまたは警告を強調表示して、Enter キーを押すこともできます。

    Transact-SQL エディターが開き、エラーまたは警告に関連するコードが表示されます。 通常は、エラーまたは警告の原因となった句にカーソルが置かれます。

  2. 次のいずれかの操作を実行します。

エラーまたは警告に関する詳細情報を表示するには

  • [エラー一覧] で、次のいずれかの操作を実行します。

    • エラーまたは警告をクリックし、F1 キーを押します。

    • エラーまたは警告を右クリックし、[エラーのヘルプを表示] をクリックします。

      エラーまたは警告に関連付けられたヘルプ トピックが表示されます。 このトピックには、問題の原因、コードの修正方法、およびエラーまたは警告を抑制する必要があるかどうかに関する情報が含まれています。

MSBuild を使用したコードの分析

毎日夜間に包括的な規則のセットを適用する場合は、MSBuild を使用してコードを分析することもできます。 各ビルド構成の規則を構成した後で、適用する規則が含まれた構成を指定できます。

応答ファイルを使用して、MSBuild にコマンド ライン引数を渡すことができます。 このファイルには、プロジェクト プロパティをオーバーライドするコマンド ライン スイッチなど、MSBuild に対して有効なコマンド ライン スイッチを含めることができます。 応答ファイルの詳細については、「MSBuild 応答ファイル」を参照してください。MSBuild のコマンド ライン オプションの詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。

コマンド プロンプトからコードを分析すると、StaticCodeAnalysis.Results.xml という名前の XML ファイルに結果が書き込まれます。 このファイルは、SQL サブフォルダーのプロジェクト フォルダー内にあります。 ResultsFile プロジェクト プロパティの値をオーバーライドすることにより、別のファイル名を指定できます。

コマンド プロンプトからデータベース プロジェクトの Transact-SQL コードを分析するには

  1. コマンド プロンプト ウィンドウを開きます。

    重要

    MSBuild.exe を実行するには、Visual Studio コマンド プロンプトを使用するか、%VS80COMNTOOLS% 環境変数で指定されたフォルダーにある vsvars32.bat バッチ ファイルを実行する必要があります。

  2. プロジェクト ディレクトリに移動します。

  3. コマンド プロンプトで、次の例のようなコマンド ラインを入力します。

    MSBuild /t:StaticCodeAnalysis /p:Configuration=Release DatabaseProject.dbproj
    

    注意

    MSBuild.exe は、PATH 環境変数で指定されるパスに存在している必要があります。

  4. MSBuild.exe の出力を確認します。 次のような出力が表示されます。

    Microsoft (R) Build Engine Version 4.0.30115.0
    [Microsoft .NET Framework, Version 4.0.30115.0]
    Copyright (C) Microsoft Corporation 2007. All rights reserved.
    
    Build started 9/11/2008 3:38:29 PM.
    Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" on node 0 (StaticCodeAnalysis target(s)).
      Creating a model to represent the project...
      Loading project files...
      Building the project model and resolving object interdependencies...
      Validating the project model...
    1 problem has been detected
    C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.proc.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj]
      One problem has been detected.
      The results are saved in C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\sql\release\DatabaseProject.StaticCodeAnalysis.Results.xml.
    Done Building Project " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target(s)) -- FAILED.
    
    
    Build succeeded.
    
    " C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj" (StaticCodeAnalysis target) (1) ->
    (DspStaticCodeAnalysis target) ->
      C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\sp_ProcedureName.PROC.SQL(1,24): StaticCodeAnalysis warning : SR0014 : Microsoft.Rules.Data : Data loss might occur when casting from ASCII String(1) to NChar(1). [C:\Users\UserName\Documents\Visual Studio 2010\Projects\SolutionName\DatabaseProject\DatabaseProject.dbproj]
    
        1 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:07.07
    

参照

処理手順

チュートリアル: 既存のデータベースの Transact-SQL コードの分析

概念

データベース コードの分析によるコードの品質の向上

コード分析を使用したマネージ コードの品質の分析

その他の技術情報

Transact-SQL の設計の問題

Transact-SQL の名前付けの問題

Transact-SQL のパフォーマンスの問題