Анализ кода T-SQL для поиска дефектов
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Вы можете улучшить качество кода Transact-SQL в схеме базы данных, импортируя его в проект базы данных и анализируя код по набору правил. Например, может потребоваться найти ошибки в схеме, которую вы не разработали, и качество которого не было проверено. Дополнительные сведения см. в обзоре анализа кода.
Для этой первоначальной оценки необходимо найти все потенциальные проблемы в коде базы данных. Вы просматриваете предупреждения и код, вызвавшие эти предупреждения. Чтобы улучшить код T-SQL, вы исправите предупреждения, потенциально подавляйте предупреждение и итеративно анализирует проект базы данных.
Необходимые компоненты
Прежде чем проанализировать код в проекте базы данных, у вас уже должен быть проект SQL. Дополнительные сведения об использовании существующей базы данных для создания проекта см. в руководстве по началу работы с существующей базой данных.
Включение анализа кода SQL для сборки проекта
Чтобы включить анализ кода SQL в Visual Studio, щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Свойства". На вкладке "Анализ кода" окна свойств установите флажок для включения анализа кода в сборке.
Сохраните окно свойств проекта и вернитесь в обозреватель решений.
Чтобы включить анализ кода SQL в проекте SQL, измените файл напрямую .sqlproj
. .sqlproj
Откройте файл и добавьте элемент <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
в первый <PropertyGroup>
блок, чтобы включить анализ кода.
Чтобы включить анализ кода SQL в расширении База данных SQL Projects, измените файл напрямую.sqlproj
. .sqlproj
Откройте файл из представления обозревателя или щелкните правой кнопкой мыши проект в представлении "Проекты баз данных" и выберите "Изменить SQLPROJ-файл".
В текстовом редакторе добавьте элемент <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
в первый <PropertyGroup>
блок, чтобы включить анализ кода.
Чтобы включить анализ кода SQL в проекте SQL, измените файл напрямую .sqlproj
. .sqlproj
Откройте файл и добавьте элемент <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
в первый <PropertyGroup>
блок, чтобы включить анализ кода.
Анализ кода
Чтобы проанализировать код в проекте базы данных с включенным анализом кода при сборке, щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Сборка".
В окне вывода отображаются результаты общего процесса сборки.
Код T-SQL в проекте базы данных анализируется во время сборки. Ошибки и предупреждения из анализа кода отображаются в списке ошибок. Если список ошибок не отображается, откройте меню "Вид" и выберите "Список ошибок". Вы можете дважды щелкнуть предупреждение, чтобы перейти к строке кода, вызвавшей предупреждение.
Чтобы проанализировать код в проекте базы данных с включенным анализом кода при сборке, щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Сборка".
В окне вывода отображаются результаты общего процесса сборки.
Код T-SQL в проекте базы данных анализируется во время сборки. Ошибки и предупреждения из анализа кода отображаются в списке ошибок. Если список ошибок не отображается, откройте меню "Вид" и выберите "Список ошибок". Вы можете дважды щелкнуть предупреждение, чтобы перейти к строке кода, вызвавшей предупреждение.
Чтобы проанализировать код в проекте базы данных с включенным анализом кода при сборке, щелкните правой кнопкой мыши проект в представлении "Проекты базы данных" и выберите "Сборка".
В окне вывода отображаются результаты общего процесса сборки и любые ошибки или предупреждения из анализа кода. Файлы, указанные в каждом предупреждении или ошибке, являются интерактивными ссылками, которые переходят к строке кода, вызвавшей предупреждение.
Чтобы проанализировать код в проекте базы данных с включенным анализом кода при сборке, выполните dotnet build
команду из командной строки в каталоге проекта.
dotnet build MyDatabaseProject.sqlproj
Выходные данные команды отображают результаты общего процесса сборки и любые ошибки или предупреждения из анализа кода.
Настройка правил анализа кода
Чтобы отключить или включить определенное правило в Visual Studio, щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Свойства". На вкладке "Анализ кода" окна свойств выберите правило из таблицы. Чтобы изменить серьезность правила, в списке выберите поле " Предупреждение как ошибка ".
Сохраните окно свойств проекта и вернитесь в обозреватель решений.
Чтобы отключить или включить определенное правило в проекте SQL, измените .sqlproj
файл напрямую. .sqlproj
Откройте файл и добавьте или измените элемент SqlCodeAnalysisRules
в первом <PropertyGroup>
блоке, чтобы указать правила для включения или отключения. В следующем примере конфигурации отключается два правила (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 Projects, измените .sqlproj
файл напрямую. .sqlproj
Откройте файл из представления обозревателя или щелкните правой кнопкой мыши проект в представлении "Проекты баз данных" и выберите "Изменить SQLPROJ-файл".
Добавьте или измените элемент SqlCodeAnalysisRules
в первом <PropertyGroup>
блоке, чтобы указать правила для включения или отключения. В следующем примере конфигурации отключается два правила (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
Откройте файл и добавьте или измените элемент SqlCodeAnalysisRules
в первом <PropertyGroup>
блоке, чтобы указать правила для включения или отключения. В следующем примере конфигурации отключается два правила (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
файла в Visual Studio, щелкните правой кнопкой мыши предупреждение в списке ошибок и выберите "Отключить сообщения анализа статического кода". Результат анализа кода для этого правила и .sql
файла подавляется и больше не отображается в списке ошибок или выходных данных сборки.
Примечание.
Отключение предупреждения не устраняет основную проблему. Подавляйте предупреждения только в том случае, если у вас есть допустимая причина для этого.
Чтобы отключить ошибку анализа кода или предупреждение для определенного .sql
файла в проекте SQL, добавьте StaticCodeAnalysis.SuppressMessages.xml
файл в проект. В файле укажите идентификатор правила и файл для подавления предупреждения.
<?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>
Если файл не существует, создайте его в корне проекта. Если файл уже существует, отключите дополнительное предупреждение для существующего StaticCodeAnalysis.SuppressMessages.xml
файла, создав новый <SuppressedFile><SuppressedRule /></SuppressedFile>
элемент.
Результат анализа кода для этого правила и .sql
файла подавляется и больше не отображается в выходных данных сборки.
Чтобы отключить ошибку анализа кода или предупреждение для определенного .sql
файла в расширении База данных SQL Projects, добавьте StaticCodeAnalysis.SuppressMessages.xml
файл в проект. В файле укажите идентификатор правила и файл для подавления предупреждения.
<?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>
Если файл не существует, создайте его в корне проекта. Если файл уже существует, отключите дополнительное предупреждение для существующего StaticCodeAnalysis.SuppressMessages.xml
файла, создав новый <SuppressedFile><SuppressedRule /></SuppressedFile>
элемент.
Результат анализа кода для этого правила и .sql
файла подавляется и больше не отображается в выходных данных сборки.
Чтобы отключить ошибку анализа кода или предупреждение для определенного .sql
файла в проекте SQL, добавьте StaticCodeAnalysis.SuppressMessages.xml
файл в проект. В файле укажите идентификатор правила и файл для подавления предупреждения.
<?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>
Если файл не существует, создайте его в корне проекта. Если файл уже существует, отключите дополнительное предупреждение для существующего StaticCodeAnalysis.SuppressMessages.xml
файла, создав новый <SuppressedFile><SuppressedRule /></SuppressedFile>
элемент.
Результат анализа кода для этого правила и .sql
файла подавляется и больше не отображается в выходных данных сборки.