방법: Transact-SQL 코드를 분석하여 오류 찾기
사용자 인터페이스를 사용하여 프로젝트를 빌드하거나 MSBuild를 사용하여 프로젝트를 빌드할 때 필요하면 Transact-SQL 코드를 분석할 수 있습니다. 코드에 디자인, 명명 또는 성능 오류가 있는 경우 코드를 분석하면 하나 이상의 오류나 경고가 나타납니다. 이러한 오류나 경고를 클릭하면 관련 코드를 볼 수 있습니다. 또한 추가 정보를 보면 보다 쉽게 원인을 파악하고 해당 오류 또는 경고를 표시할지 여부를 결정할 수 있습니다. Visual Studio Premium 및 Visual Studio Ultimate의 코드 분석에 대한 자세한 내용은 데이터베이스 코드를 분석하여 코드 품질 향상을 참조하십시오.
코드를 분석하기 전에 분석의 일부로 실행할 규칙을 구성할 수도 있습니다. 자세한 내용은 방법: 데이터베이스 코드의 정적 분석에 대한 특정 규칙 활성화 및 비활성화를 참조하십시오. 빌드 구성에 따라 서로 다른 규칙 집합을 구성할 수 있습니다. 개발자가 코드를 체크 인하기 전에 규칙의 일부를 실행하여 일반적인 문제가 있는지 확인하도록 할 수 있으며, 매일 밤마다 보다 포괄적인 분석을 실행할 수도 있습니다.
Database Edition에서 코드 분석
데이터베이스 프로젝트의 Transact-SQL 코드를 분석하려면
데이터베이스 프로젝트가 포함된 솔루션을 엽니다.
데이터 메뉴에서 정적 코드 분석을 가리키고 실행을 클릭합니다.
데이터베이스 프로젝트의 코드가 분석되고 오류 목록에 경고 및 오류가 표시됩니다.
오류 또는 경고를 발생시킨 소스 코드를 보려면
오류 목록에서 오류나 경고를 두 번 클릭합니다. 오류나 경고를 강조 표시하고 Enter 키를 눌러도 됩니다.
Transact-SQL 편집기가 열리고 해당 오류 또는 경고와 관련된 코드가 표시됩니다. 가능한 경우 해당 오류나 경고를 발생시킨 절에 커서가 놓입니다.
다음 단계 중 하나를 수행합니다.
문제를 즉시 해결합니다.
본인이나 다른 팀 멤버가 나중에 문제를 해결할 수 있도록 작업 항목을 만듭니다.
자세한 내용은 방법: Transact-SQL 코드의 오류에서 작업 항목 만들기를 참조하십시오.
오류나 경고를 무시해도 되는 경우 이를 표시하지 않도록 설정합니다.
오류나 경고를 표시하지 않도록 설정하면 코드를 다시 분석할 때 해당 오류나 경고가 표시되지 않습니다. 자세한 내용은 방법: 데이터베이스 코드 분석 경고 표시 안 함을 참조하십시오.
오류 또는 경고에 대한 자세한 정보를 표시하려면
오류 목록에서 다음 단계 중 하나를 수행합니다.
오류나 경고를 클릭하고 F1 키를 누릅니다.
오류나 경고를 마우스 오른쪽 단추로 클릭하고 오류 도움말 표시를 클릭합니다.
해당 오류나 경고와 관련된 도움말 항목이 표시됩니다. 이 항목에는 문제의 원인, 코드 수정 방법 및 오류나 경고를 표시할지 여부에 대한 정보가 포함됩니다.
MSBuild를 사용하여 코드 분석
매일 밤마다 보다 포괄적인 규칙 집합을 적용하려는 경우 MSBuild를 사용하여 코드를 분석할 수 있습니다. 각 빌드 구성에 대한 규칙을 구성한 다음 적용할 규칙이 들어 있는 구성을 지정할 수 있습니다.
지시 파일을 사용하여 MSBuild에 명령줄 인수를 제공할 수 있습니다. 이 파일에는 프로젝트 속성을 재정의하는 스위치를 비롯하여 MSBuild에 유효한 모든 명령줄 스위치가 포함될 수 있습니다. 지시 파일에 대한 자세한 내용은 MSBuild 지시 파일을 참조하십시오. MSBuild의 명령줄 옵션에 대한 자세한 내용은 MSBuild 명령줄 참조를 참조하십시오.
명령 프롬프트에서 코드를 분석하면 StaticCodeAnalysis.Results.xml이라는 XML 파일에 결과가 기록됩니다. 이 파일은 SQL 하위 폴더의 프로젝트 폴더에서 찾을 수 있습니다. ResultsFile 프로젝트 속성 값을 재정의하여 다른 파일 이름을 지정할 수 있습니다.
명령 프롬프트에서 데이터베이스 프로젝트의 Transact-SQL 코드를 분석하려면
명령 프롬프트 창을 엽니다.
중요
MSBuild.exe를 실행하려면 Visual Studio 명령 프롬프트를 사용하거나 %VS80COMNTOOLS% 환경 변수에서 지정하는 폴더에 있는 vsvars32.bat 배치 파일을 실행해야 합니다.
프로젝트 디렉터리를 찾습니다.
명령 프롬프트에 다음 예제와 유사한 명령줄을 입력합니다.
MSBuild /t:StaticCodeAnalysis /p:Configuration=Release DatabaseProject.dbproj
참고
MSBuild.exe가 PATH 환경 변수에서 지정하는 경로에 있어야 합니다.
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 코드 분석