다음을 통해 공유


코드 분석 규칙 확장성 개요

제공된 코드 분석 규칙은 데이터베이스 코드의 Transact-SQL 디자인, 명명 및 성능 경고에 대해 보고합니다. 내장된 코드 분석 규칙에 자동으로 탐지하려는 특정 T-SQL 문제 또는 반패턴에 대한 적용 범위가 포함되어 있지 않은 경우, 사용자 지정 데이터베이스 코드 분석 규칙을 만들 수 있습니다.

예를 들어, 작성자 사용자 지정 코드 분석 규칙에서 설명한 것처럼 WAITFOR DELAY 문을 사용하지 않는 사용자 지정 규칙을 만들 수 있습니다. 사용자 지정 데이터베이스 코드 분석 규칙을 만들려면 CodeAnalysis 네임스페이스의 클래스를 사용합니다.

이 개요에서는 데이터베이스 코드 분석 규칙의 다양한 구성 요소 중 기본 아키텍처에 대해 설명합니다.

데이터베이스 코드 분석 규칙 구성 요소

다음 다이어그램에서는 데이터베이스 Code Analysis 규칙 구성 요소가 처리되는 방법을 보여 줍니다.

데이터베이스 코드 분석 처리 흐름의 스크린샷.

데이터베이스 코드 분석 규칙 기능을 사용하면 모든 규칙이 로드되고 프로젝트에서 구성한 방식에 따라 사용됩니다. 자세한 내용은 방법: 데이터베이스 코드의 정적 분석에 대한 특정 규칙 활성화 및 비활성화를 참조하세요. 확장 관리자는 만들고 등록한 모든 사용자 지정 규칙 어셈블리도 로드합니다.

사용자 지정 Code Analysis 규칙 클래스는 SqlCodeAnalysisRule에서 상속됩니다. 사용자 지정 규칙 클래스는 규칙 실행 컨텍스트를 통해 유용한 개체에 액세스할 수 있습니다. 개체에는 다음이 포함됩니다.

  • 규칙 자체에 대한 메타데이터.
  • 모든 모델 요소, 요소 간 관계 및 요소의 속성을 비롯한 데이터베이스의 스키마를 나타내는 Dac.Model.TSqlModel
  • 특정 요소를 검사하는 규칙의 경우 모델에서 해당 스키마 요소를 나타내는 Dac.Model.TSqlObject이(가) 컨텍스트에 포함됩니다.
  • 또한 많은 스키마 개체에는 이 컨텍스트를 통해 액세스할 수 있는 ScriptDom 표현이 있습니다. 이는 SelectStarExpression의 존재와 같은 잠재적인 구문 문제를 확인할 때 유용할 수 있는 요소를 AST 기반으로 표현한 것입니다.

규칙에 의해 발견된 문제의 경우 Dac.CodeAnalysis.SqlRuleProblem 개체가 만들어집니다. 이 SqlRuleProblem 개체를 만들 때 관련 Dac.Model.TSqlObject 및 가능성이 있는 ScriptDom 표현 요소가 생성자에게 전달되며, 이 요소는 소스 코드 파일에서 문제의 위치를 파악하는 데 사용됩니다. 분석이 끝날 때 이러한 모든 문제가 오류 관리자에 전달되며 오류 목록에 표시됩니다.

SQL 프로젝트에 사용자 지정 규칙 통합

Microsoft.Build.Sql SDK 스타일 SQL 프로젝트를 사용하면 규칙을 포함하는 패키지 참조를 추가하여 프로젝트에 사용자 지정 코드 분석 규칙을 포함합니다.