T-SQL コードを分析して欠陥を見つける
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database
データベース スキーマをデータベース プロジェクトにインポートし、一連のルールに対してコードを分析することで、データベース スキーマの Transact-SQL コードの品質を向上させることができます。 たとえば、開発していないスキーマで、その品質が検証されていないエラーを見つけることができます。 詳細については、「コード分析の概要」を参照してください。
この初期評価では、データベース コード内のすべての潜在的な問題を見つける必要があります。 警告とその警告の原因となったコードを確認します。 T-SQL コードを改善するには、警告を修正し、潜在的に警告を抑制し、データベース プロジェクトを反復的に分析します。
前提条件
データベース プロジェクト内のコードを分析する前に、SQL プロジェクトが既に必要です。 既存のデータベースを使用してプロジェクトを作成する方法の詳細については、「チュートリアル: 既存のデータベースから開始する」を参照してください。
プロジェクトのビルドで SQL コード分析を有効にする
Visual Studio で SQL コード分析を有効にするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。 プロパティ ウィンドウの [コード分析] タブで、[ビルド時にコード分析を有効にする] チェックボックスを選択します。
プロジェクトのプロパティ ウィンドウを保存し、ソリューション エクスプローラーに戻ります。
SQL プロジェクトで SQL コード分析を有効にするには、.sqlproj
ファイルを直接編集します。 .sqlproj
ファイルを開き、最初の <PropertyGroup>
ブロックに要素<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
を追加して、コード分析を有効にします。
SQL Database プロジェクト拡張機能で SQL コード分析を有効にするには、.sqlproj
ファイルを直接編集します。 [エクスプローラー] ビューから .sqlproj
ファイルを開くか、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[.sqlproj ファイルを編集する] を選択します。
テキスト エディターから、最初の <PropertyGroup>
ブロックに要素 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
を追加して、コード分析を有効にします。
SQL プロジェクトで SQL コード分析を有効にするには、.sqlproj
ファイルを直接編集します。 .sqlproj
ファイルを開き、最初の <PropertyGroup>
ブロックに要素<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
を追加して、コード分析を有効にします。
コードを分析する
ビルド時に Code Analysis が有効になっているデータベース プロジェクト内のコードを分析するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ビルド] を選択します。
[出力] ウィンドウに、ビルド プロセス全体の結果が表示されます。
データベース プロジェクトの T-SQL コードは、ビルド中に分析されます。 Code Analysis のエラーと警告は、エラー一覧に表示されます。 エラー一覧が表示されない場合は、[表示] メニューを開き、[エラー一覧] を選択します。 警告をダブルクリックして、警告の原因となったコード行に移動できます。
ビルド時に Code Analysis が有効になっているデータベース プロジェクト内のコードを分析するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[ビルド] を選択します。
[出力] ウィンドウに、ビルド プロセス全体の結果が表示されます。
データベース プロジェクトの T-SQL コードは、ビルド中に分析されます。 Code Analysis のエラーと警告は、エラー一覧に表示されます。 エラー一覧が表示されない場合は、[表示] メニューを開き、[エラー一覧] を選択します。 警告をダブルクリックして、警告の原因となったコード行に移動できます。
ビルド時にコード分析が有効になっているデータベース プロジェクト内のコードを分析するには、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[ビルド] を選択します。
出力 ウィンドウには、ビルド プロセス全体の結果と、コード分析からのエラーまたは警告が表示されます。 各警告またはエラーで指定されたファイルは、警告の原因となったコード行に移動する対話型リンクです。
ビルド時にコード分析が有効になっているデータベース プロジェクト内のコードを分析するには、プロジェクト ディレクトリのコマンド ラインから dotnet build
コマンドを実行します。
dotnet build MyDatabaseProject.sqlproj
コマンドからの出力には、ビルド プロセス全体の結果と、コード分析からのエラーまたは警告が表示されます。
コード分析ルールの構成
Visual Studio で特定のルールを無効または有効にするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。 プロパティ ウィンドウの [コード分析] タブで、テーブルからルールを選択します。 ルールの重大度を変更するには、一覧からそのルールの [警告をエラーとして扱う] ボックスを選択します。
プロジェクトのプロパティ ウィンドウを保存し、ソリューション エクスプローラーに戻ります。
SQL プロジェクトで特定のルールを無効または有効にするには、.sqlproj
ファイルを直接編集します。 .sqlproj
ファイルを開き、最初の <PropertyGroup>
ブロックで SqlCodeAnalysisRules
の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
<SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
</PropertyGroup>
...
SQL Database プロジェクト拡張機能で特定のルールを無効または有効にするには、.sqlproj
ファイルを直接編集します。 [エクスプローラー] ビューから .sqlproj
ファイルを開くか、[データベース プロジェクト] ビューでプロジェクトを右クリックし、[.sqlproj ファイルを編集する] を選択します。
最初の<PropertyGroup>
ブロックで SqlCodeAnalysisRules
の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
<SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
</PropertyGroup>
...
SQL プロジェクトで特定のルールを無効または有効にするには、.sqlproj
ファイルを直接編集します。 .sqlproj
ファイルを開き、最初の <PropertyGroup>
ブロックで SqlCodeAnalysisRules
の要素を追加または変更して、有効または無効にするルールを指定します。 次のサンプル構成では、2 つのルール (SR0007 と SR0006) を無効にし、SR0008 を切り替えると、ビルド エラーが発生します。 残りのルールは既定で有効になっています。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
<SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
</PropertyGroup>
...
コード分析の警告を抑制する
Visual Studio で特定の .sql
ファイルに対するコード分析エラーまたは警告を抑制するには、エラー一覧で警告を右クリックし [静的コード分析メッセージを抑制する] を選択します。 そのルールと .sql
ファイルのコード分析結果は抑制され、エラー一覧またはビルド出力には表示されなくなります。
Note
警告を抑制しても、基になる問題は解決されません。 警告を抑制するのは、有効な理由がある場合のみです。
SQL プロジェクト内の特定の .sql
ファイルに対するコード分析エラーまたは警告を抑制するには、 StaticCodeAnalysis.SuppressMessages.xml
ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile>
要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml
ファイルに対する追加の警告を抑制します。
そのルールと .sql
ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。
SQL Database プロジェクト拡張機能の特定の .sql
ファイルに対するコード分析エラーまたは警告を抑制するには、StaticCodeAnalysis.SuppressMessages.xml
ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile>
要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml
ファイルに対する追加の警告を抑制します。
そのルールと .sql
ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。
SQL プロジェクト内の特定の .sql
ファイルに対するコード分析エラーまたは警告を抑制するには、 StaticCodeAnalysis.SuppressMessages.xml
ファイルをプロジェクトに追加します。 ファイルで、ルール ID と警告を抑制するファイルを指定します。
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
ファイルが存在しない場合は、プロジェクトのルートに作成します。 ファイルが既に存在する場合は、新しい <SuppressedFile><SuppressedRule /></SuppressedFile>
要素を作成して、既存の StaticCodeAnalysis.SuppressMessages.xml
ファイルに対する追加の警告を抑制します。
そのルールと .sql
ファイルのコード分析結果は抑制され、ビルド出力には表示されなくなります。