방법: Transact-SQL 코드를 분석하여 오류 찾기

사용자 인터페이스를 사용하여 프로젝트를 빌드하거나 MSBuild를 사용하여 프로젝트를 빌드할 때 필요하면 Transact-SQL 코드를 분석할 수 있습니다. 코드에 디자인, 명명 또는 성능 오류가 있는 경우 코드를 분석하면 하나 이상의 오류나 경고가 나타납니다. 이러한 오류나 경고를 클릭하면 관련 코드를 볼 수 있습니다. 또한 추가 정보를 보면 보다 쉽게 원인을 파악하고 해당 오류 또는 경고를 표시할지 여부를 결정할 수 있습니다. 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 성능 문제