Поделиться через


Практическое руководство. Анализ кода Transact-SQL на наличие ошибок

Код Transact-SQL можно проанализировать по требованию во время построения проекта с помощью пользовательского интерфейса или во время построения проекта с помощью MSBuild. После выполнения анализа кода, если в нем обнаружены ошибки проектирования, именования или производительности, отобразятся соответствующие сообщения об ошибках или предупреждения. Щелкнув сообщение об ошибке или предупреждение, можно просмотреть код, к которому оно относится. Для лучшего понимания причин и возможности подавления сообщений об ошибках или предупреждений можно просмотреть дополнительную информацию. Дополнительные сведения об анализе кода в Visual Studio Premium и Visual Studio Ultimate см. в разделе Анализ кода базы данных с целью улучшения качества кода.

Прежде чем выполнить анализ кода, необходимо настроить правила, выполняемые в рамках анализа. Дополнительные сведения см. в разделе Практическое руководство. Включение и отключение особых правил для статического анализа кода базы данных. Кроме того, можно настроить различные наборы правил для разных конфигураций построения. Можно предоставить разработчикам возможность самостоятельно выполнять анализ, используя меньший набор правил, с целью проверки наличия общих проблем перед возвратом кода, а затем уже выполнять комплексный анализ ночью.

Анализ кода в выпуске базы данных

Анализ кода Transact-SQL в проекте базы данных

  1. Откройте решение, содержащее проект базы данных.

  2. В меню Данные выберите Статический анализ кода и нажмите кнопку Выполнить.

    Будет выполнен анализ кода в проекте базы данных и все предупреждения и сообщения об ошибках будут внесены в Список ошибок.

Просмотр исходного кода, вызвавшего ошибку или предупреждение

  1. Щелкните дважды ошибку или предупреждение в списке ошибок. Также можно выделить ошибку или предупреждение и нажать клавишу ВВОД.

    Откроется редактор Transact-SQL, и в нем отобразится фрагмент кода, к которому относится ошибка или предупреждение. Если возможно, в предложение, вызвавшее ошибку или предупреждение, будет помещен курсор.

  2. Выполните одно из следующих действий.

Просмотр дополнительной информации об ошибке или предупреждении

  • В окне Список ошибок выполните одно из следующих действий.

    • Щелкните сообщение об ошибке или предупреждение и нажмите клавишу F1.

    • Щелкните правой кнопкой мыши сообщение об ошибке или предупреждение и выберите пункт Показать справочные сведения об ошибке.

      Откроется раздел справки, связанный с ошибкой или предупреждением. В разделе содержатся сведения о причинах проблемы, способах исправления кода и возможностях подавления ошибки или предупреждения.

Анализ кода с помощью MSBuild

Если необходимо выполнить анализ в ночное время с использованием более комплексного набора правил, можно выполнить анализ кода с помощью MSBuild. Можно настроить правила для каждой конфигурации построения и указать конфигурацию, содержащую правило или правила, которые следует применить.

Можно использовать файл ответов для предоставления программе MSBuild аргументов командной строки. Этот файл может содержать любые допустимые переключатели командной строки для MSBuild, включая те, которые переопределяют свойства проекта. Дополнительные сведения о файлах ответов см. в разделе Файлы ответов MSBuild. Дополнительные сведения о параметрах командной строки MSBuild см. в разделе Справочные сведения о командной строке MSBuild.

При выполнении анализа кода из командной строки результаты записываются в XML-файл с именем StaticCodeAnalysis.Results.xml. Этот файл находится во вложенной в папку проекта папке SQL. Можно указать любое другое имя файла, переопределив значение свойства проекта ResultsFile.

Анализ кода Transact-SQL в проекте базы данных с помощью командной строки

  1. Откройте окно командной строки.

    Важно!

    Для выполнения программы MSBuild.exe необходимо воспользоваться командной строкой Visual Studio или выполнить пакетный файл vsvars32.bat, находящийся в папке, определяемой переменной среды %VS80COMNTOOLS%.

  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