다음을 통해 공유


관리 코드에 대한 확장 수정 규칙 규칙 집합

Microsoft 확장 수정 규칙이라는 규칙 집합은 코드 분석을 통해 보고되는 논리 및 프레임워크 사용 오류를 최대화하며,COM 상호 운용성 및 모바일 응용 프로그램 같은 특정 시나리오에 주안점을 둡니다.이러한 시나리오 중 하나가 프로젝트에 적용되거나 프로젝트에서 추가 문제를 찾으려는 경우 이 규칙 집합을 포함하는 것이 좋습니다.

Microsoft 확장 수정 규칙 집합에는 Microsoft 기본 수정 규칙이라는 규칙 집합의 규칙이 포함됩니다.기본 수정 규칙에는 Microsoft 최소 권장 규칙이라는 규칙 집합의 규칙이 포함됩니다.자세한 내용은 관리 코드에 대한 기본 수정 규칙 규칙 집합관리 코드에 대한 관리 권장 규칙 규칙 집합을 참조하십시오.

다음 표에서는 Microsoft 확장 수정 규칙 집합의 모든 규칙에 대해 설명합니다.

규칙

설명

CA1001

삭제 가능한 필드가 있는 형식은 삭제 가능해야 합니다.

CA1009

이벤트 처리기를 제대로 선언하십시오.

CA1016

AssemblyVersionAttribute로 어셈블리 표시

CA1033

인터페이스 메서드는 자식 형식에서 호출할 수 있어야 합니다.

CA1049

네이티브 리소스가 있는 형식은 삭제 가능해야 합니다.

CA1060

P/Invoke를 NativeMethods 클래스로 이동

CA1061

기본 클래스 메서드를 숨기지 마십시오.

CA1063

IDisposable을 올바르게 구현하십시오.

CA1065

예기치 않은 위치에서 예외를 발생시키지 마십시오.

CA1301

중복 액셀러레이터 키를 사용하지 마십시오.

CA1400

P/Invoke 진입점이 있어야 합니다.

CA1401

P/Invoke는 노출되지 않아야 합니다.

CA1403

자동 레이아웃 형식은 COM 노출이면 안 됩니다.

CA1404

P/Invoke 다음에 바로 GetLastError를 호출하십시오.

CA1405

COM 노출 형식의 기본 형식은 COM 노출이어야 합니다.

CA1410

COM 등록 메서드는 일치해야 합니다.

CA1415

P/Invoke를 올바르게 선언하십시오.

CA1821

빈 종료자를 제거하십시오.

CA1900

값 형식 필드는 이식 가능해야 합니다.

CA1901

P/Invoke 선언은 이식 가능해야 합니다.

CA2002

약한 ID를 가진 개체를 잠그지 마십시오.

CA2100

보안상 취약한 부분이 있는지 SQL 쿼리를 검토하십시오.

CA2101

P/Invoke 문자열 인수에 대해 마샬링을 지정하십시오.

CA2108

값 형식에서 선언적 보안을 검토하십시오.

CA2111

포인터는 노출되면 안 됩니다.

CA2112

보안 형식은 필드를 노출하면 안 됩니다.

CA2114

메서드 보안은 형식의 상위 집합이어야 합니다.

CA2116

APTCA 메서드는 APTCA 메서드만 호출해야 합니다.

CA2117

APTCA 형식은 APTCA 기본 형식만 확장해야 합니다.

CA2122

링크 요청이 있는 메서드를 간접적으로 노출하지 마십시오.

CA2123

재정의 링크 요청은 기본 형식의 링크 요청과 같아야 합니다.

CA2124

취약한 finally 절을 외부 try에 래핑하십시오.

CA2126

형식 링크 요청에는 상속 요청이 필요합니다.

CA2131

보안에 중요한 형식은 형식 등가에 참여할 수 없습니다.

CA2132

기본 생성자는 기본 형식의 기본 생성자 이상으로 중요해야 합니다.

CA2133

대리인은 투명도가 일관된 메서드에 바인딩해야 합니다.

CA2134

메서드는 기본 메서드를 재정의할 때 일관성 있는 방식을 유지해야 합니다.

CA2137

투명한 메서드는 안정형 IL만 포함해야 합니다.

CA2138

투명한 메서드는 SuppressUnmanagedCodeSecurity 특성을 가진 메서드를 호출해서는 안 됩니다.

CA2140

투명 코드는 보안에 중요한 항목을 참조해서는 안 됩니다.

CA2141

투명한 메서드는 LinkDemands를 충족해서는 안 됩니다

CA2146

형식은 기본 형식 및 인터페이스 이상으로 중요해야 합니다.

CA2147

투명 메서드는 보안 어설션을 사용할 수 없습니다.

CA2149

투명한 메서드는 네이티브 코드를 호출해서는 안 됩니다.

CA2200

스택 정보를 유지하도록 다시 throw하십시오.

CA2202

개체를 여러 번 삭제하지 마십시오.

CA2207

값 형식 정적 필드를 인라인으로 초기화하십시오.

CA2212

서비스 구성 요소를 WebMethod를 사용하여 표시하지 마십시오.

CA2213

삭제 가능한 필드는 삭제해야 합니다.

CA2214

재정의 가능한 메서드를 생성자에서 호출하지 마십시오.

CA2216

삭제 가능한 형식은 종료자를 선언해야 합니다.

CA2220

종료자는 기본 클래스 종료자를 호출해야 합니다.

CA2229

serialization 생성자를 구현하십시오.

CA2231

ValueType.Equals를 재정의할 때 같음 연산자를 오버로드하십시오.

CA2232

Windows Forms 진입점을 STAThread를 사용하여 표시하십시오.

CA2235

모두 serialize할 수 없는 필드로 표시하십시오.

CA2236

ISerializable 형식에서 기본 클래스 메서드를 호출하십시오.

CA2237

ISerializable 형식을 SerializableAttribute로 표시하십시오.

CA2238

serialization 메서드를 올바르게 구현하십시오.

CA2240

ISerializable을 올바르게 구현하십시오.

CA2241

형식 메서드에 올바른 인수를 제공하십시오.

CA2242

NaN에 대해 정확하게 테스트하십시오.

CA1008

열거형에는 0 값이 있어야 합니다.

CA1013

더하기 및 빼기를 오버로드할 때 같음 연산자를 오버로드하십시오.

CA1303

CA1303: 리터럴을 지역화된 매개 변수로 전달하지 마십시오.

CA1308

CA1308: 문자열을 대문자로 정규화하십시오.

CA1806

메서드 결과를 무시하지 마십시오.

CA1816

GC.SuppressFinalize를 올바르게 호출하십시오.

CA1819

속성은 배열을 반환해서는 안 됩니다.

CA1820

문자열 길이를 사용하여 문자열이 비었는지 테스트하십시오.

CA1903

대상 프레임워크에서 API만 사용하십시오.

CA2004

GC.KeepAlive에 대한 호출을 제거하십시오.

CA2006

SafeHandle을 사용하여 네이티브 리소스를 캡슐화하십시오.

CA2102

일반 처리기에서 비 CLSCompliant 예외를 catch하십시오.

CA2104

변경 가능한 읽기 전용 참조 형식을 선언하지 마십시오.

CA2105

배열 필드는 읽기 전용이면 안 됩니다.

CA2106

어설션을 안전하게 하십시오.

CA2115

네이티브 리소스를 사용하는 경우에는 GC.KeepAlive를 호출하십시오.

CA2119

private 인터페이스를 만족하는 메서드를 봉인하십시오.

CA2120

serialization 생성자를 안전하게 하십시오.

CA2121

static 생성자는 private이어야 합니다.

CA2130

보안 위험 상수는 투명해야 합니다.

CA2205

Win32 API에 있는 동일한 기능의 관리되는 항목을 사용하십시오.

CA2215

Dispose 메서드는 기본 클래스 Dispose를 호출해야 합니다.

CA2221

종료자는 protected여야 합니다.

CA2222

상속된 멤버 노출 수준을 낮추지 마십시오.

CA2223

멤버는 반환 형식 이외의 것도 달라야 합니다.

CA2224

같음 연산자를 오버로드할 때 Equals를 재정의하십시오.

CA2226

연산자에는 대칭 오버로드가 있어야 합니다.

CA2227

컬렉션 속성은 읽기 전용이어야 합니다.

CA2239

선택적 필드에 deserialization 메서드를 제공하십시오.

CA1032

표준 예외 생성자를 구현하십시오.

CA1054

URI 매개 변수는 문자열이면 안 됩니다.

CA1055

URI 반환 값은 문자열이면 안 됩니다.

CA1056

URI 속성은 문자열이면 안 됩니다.

CA1057

문자열 URI 오버로드는 System.Uri 오버로드를 호출합니다.

CA1402

COM 노출 인터페이스에서 오버로드를 사용하지 마십시오.

CA1406

Visual Basic 6 클라이언트에서 Int64 인수를 사용하지 않습니다.

CA1407

COM 노출 형식에 정적 멤버를 사용하지 마십시오.

CA1408

AutoDual ClassInterfaceType을 사용하지 마십시오.

CA1409

COM 노출 형식을 만들 수 있어야 합니다.

CA1411

COM 등록 메서드는 노출되면 안 됩니다.

CA1412

ComSource 인터페이스를 IDispatch로 표시하십시오.

CA1413

ComVisible 값 형식에 public이 아닌 필드를 사용하지 마십시오.

CA1414

부울 P/Invoke 인수를 MarshalAs로 표시하십시오.

CA1600

유휴 상태 프로세스 우선 순위를 사용하지 마십시오.

CA1601

전원 상태 변경을 방해하는 타이머를 사용하지 마십시오.

CA1824

NeutralResourcesLanguageAttribute로 어셈블리 표시

CA2001

문제가 있는 메서드는 호출하지 마십시오.

CA2003

파이버를 스레드로 취급하지 마십시오.

CA2135

수준 2 어셈블리는 LinkDemands를 포함해서는 안 됩니다.

CA2136

멤버는 충돌하는 투명도 주석을 가져서는 안 됩니다.

CA2139

투명한 메서드는 HandleProcessCorruptingExceptions 특성을 사용할 수 없습니다.

CA2142

투명한 코드는 LinkDemands를 사용하여 보호해서는 안 됩니다.

CA2143

투명한 메서드는 보안 요청을 사용해서는 안 됩니다.

CA2144

투명 코드는 바이트 배열에서 어셈블리를 로드해서는 안 됩니다.

CA2145

투명한 메서드는 SuppressUnmanagedCodeSecurityAttribute로 데코레이팅해서는 안 됩니다.

CA2204

리터럴의 철자가 맞아야 합니다.

CA2211

비상수 필드는 노출되면 안 됩니다.

CA2217

열거형을 FlagsAttribute로 표시하지 마십시오.

CA2218

Equals를 재정의할 때 GetHashCode를 재정의하십시오.

CA2219

exception 절에서 예외를 발생시키지 마십시오.

CA2225

연산자 오버로드에는 명명된 대체 항목이 있습니다.

CA2228

릴리스되지 않은 리소스 형식을 제공하지 마십시오.

CA2230

가변 인수로 params를 사용하십시오.

CA2233

연산은 오버플로되지 않아야 합니다.

CA2234

문자열 대신 System.Uri 개체를 전달하십시오.

CA2243

특성 문자열 리터럴이 올바르게 구문 분석되어야 합니다.