관리 코드에 대한 확장 수정 규칙 규칙 집합
Microsoft 확장 수정 규칙 규칙 집합은 코드 분석에서 보고되는 논리 및 프레임워크 사용 오류를 최대화합니다. COM 상호 운용성 및 모바일 애플리케이션과 같은 특정 시나리오에 추가로 중점을 둡니다. 해당 시나리오 중 하나가 프로젝트에 적용되는 경우 또는 프로젝트에서 추가 문제를 찾으려면 이 규칙 집합을 포함하는 것이 좋습니다.
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 | SerializableAttribute로 ISerializable 형식 표시 |
CA2238 | serialization 메서드를 올바르게 구현하십시오. |
CA2240 | ISerializable을 올바르게 구현하십시오. |
CA2241 | 서식 지정 메서드에 올바른 인수를 제공하십시오. |
CA2242 | NaN에 대해 정확하게 테스트하십시오. |
CA1008 | 열거형에는 0 값이 있어야 합니다. |
CA1013 | 더하기 및 빼기를 오버로드할 때 같음 연산자를 오버로드하세요. |
CA1303 | 리터럴을 지역화된 매개 변수로 전달하지 마세요. |
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 | 정적 생성자는 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 | COM 노출 값 형식에 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 | 특성 문자열 리터럴이 올바르게 구문 분석되어야 합니다. |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기