관리 코드에 대한 기본 디자인 지침 규칙 규칙 집합
Microsoft ‘기본 디자인 지침 규칙’ 규칙 집합을 사용하여 더 쉽게 이해하고 사용할 수 있는 코드를 만드는 데 집중할 수 있습니다. 프로젝트에 라이브러리 코드가 포함되어 있거나 유지 관리하기 쉬운 코드를 위한 모범 사례를 적용하려는 경우 이 규칙 집합을 포함해야 합니다.
기본 디자인 지침 규칙에는 관리형 권장 규칙 규칙 집합의 모든 규칙이 포함됩니다.
다음 표에서는 Microsoft ‘기본 디자인 지침 규칙’ 규칙 집합의 모든 규칙에 대해 설명합니다.
규칙 | 설명 |
---|---|
CA1000 | 정적 멤버를 제네릭 형식으로 선언하지 마세요. |
CA1001 | 삭제 가능한 필드가 있는 형식은 삭제 가능해야 합니다. |
CA1002 | 제네릭 목록을 노출하지 마세요. |
CA1003 | 제네릭 이벤트 처리기 인스턴스를 사용하세요. |
CA1004 | 제네릭 메서드는 형식 매개 변수를 제공해야 합니다. |
CA1005 | 제네릭 형식에 매개 변수를 너무 많이 사용하지 마세요. |
CA1006 | 멤버 시그니처에 제네릭 형식을 중첩하지 마세요. |
CA1007 | 적합한 제네릭을 사용하세요. |
CA1008 | 열거형에는 0 값이 있어야 합니다. |
CA1009 | 이벤트 처리기를 제대로 선언하십시오. |
CA1010 | 컬렉션은 제네릭 인터페이스를 구현해야 합니다. |
CA1011 | 기본 형식을 매개 변수로 전달해 보세요. |
CA1012 | 추상 형식에는 생성자를 사용하면 안 됩니다. |
CA1013 | 더하기 및 빼기를 오버로드할 때 같음 연산자를 오버로드하세요. |
CA1014 | CLSCompliantAttribute로 어셈블리를 표시하세요. |
CA1016 | AssemblyVersionAttribute로 어셈블리 표시 |
CA1017 | ComVisibleAttribute로 어셈블리를 표시하세요. |
CA1018 | AttributeUsageAttribute로 특성을 표시하세요. |
CA1019 | 특성 인수의 접근자를 정의하세요. |
CA1023 | 다차원 인덱서를 사용하지 마세요. |
CA1024 | 적합한 속성을 사용하세요. |
CA1025 | 반복 인수를 매개 변수 배열로 바꾸세요. |
CA1026 | 기본 매개 변수를 사용하면 안 됩니다. |
CA1027 | 열거형을 FlagsAttribute로 표시하세요. |
CA1028 | 열거형 스토리지는 Int32여야 합니다. |
CA1030 | 적절한 경우 이벤트를 사용하세요. |
CA1031 | 일반적인 예외 형식을 catch하지 마세요. |
CA1032 | 표준 예외 생성자를 구현하세요. |
CA1033 | 인터페이스 메서드는 자식 형식에서 호출할 수 있어야 합니다. |
CA1034 | 중첩 형식은 노출되면 안 됩니다. |
CA1035 | ICollection 구현에 강력한 형식의 멤버가 있습니다. |
CA1036 | 비교 가능한 형식에 메서드를 재정의하세요. |
CA1038 | 열거자는 강력한 형식이어야 합니다. |
CA1039 | 목록은 강력한 형식이어야 합니다. |
CA1041 | ObsoleteAttribute 메시지를 제공하세요. |
CA1043 | 인덱서에 정수 또는 문자열 인수를 사용하세요. |
CA1044 | 속성은 쓰기 전용이면 안 됩니다. |
CA1046 | 참조 형식에 같음 연산자를 오버로드하지 마세요. |
CA1047 | protected 멤버를 sealed 형식으로 선언하지 마세요. |
CA1048 | 가상 멤버를 sealed 형식으로 선언하지 마세요. |
CA1049 | 네이티브 리소스가 있는 형식은 삭제 가능해야 합니다. |
CA1050 | 네임스페이스에 형식을 선언하세요. |
CA1051 | 표시되는 인스턴스 필드를 선언하지 마세요. |
CA1052 | 정적 소유자 형식은 sealed여야 합니다. |
CA1053 | 정적 소유자 형식에는 생성자를 사용하면 안 됩니다. |
CA1054 | URI 매개 변수는 문자열이면 안 됩니다. |
CA1055 | URI 반환 값은 문자열이면 안 됩니다. |
CA1056 | URI 속성은 문자열이면 안 됩니다. |
CA1057 | 문자열 URI 오버로드는 System.Uri 오버로드를 호출합니다. |
CA1058 | 형식은 특정 기본 형식을 확장하면 안 됩니다. |
CA1059 | 멤버는 구체적인 특정 형식을 노출하면 안 됩니다. |
CA1060 | P/Invoke를 NativeMethods 클래스로 이동 |
CA1061 | 기본 클래스 메서드를 숨기지 마십시오. |
CA1063 | IDisposable을 올바르게 구현하십시오. |
CA1064 | 예외는 public이어야 합니다. |
CA1065 | 예기치 않은 위치에서 예외를 발생시키지 마십시오. |
CA1301 | 중복 액셀러레이터 키를 사용하지 마십시오. |
CA1400 | P/Invoke 진입점이 있어야 합니다. |
CA1401 | P/Invoke는 노출되지 않아야 합니다. |
CA1403 | 자동 레이아웃 형식은 COM 노출이면 안 됩니다. |
CA1404 | P/Invoke 다음에 바로 GetLastError를 호출하십시오. |
CA1405 | COM 노출 형식의 기본 형식은 COM 노출이어야 합니다. |
CA1410 | COM 등록 메서드는 일치해야 합니다. |
CA1415 | P/Invoke를 올바르게 선언하십시오. |
CA1500 | 변수 이름은 필드 이름과 달라야 합니다. |
CA1502 | 지나치게 복잡하게 만들지 마세요. |
CA1708 | 식별자에는 대/소문자만 다른 이름을 사용할 수 없습니다. |
CA1716 | 식별자는 키워드와 달라야 합니다. |
CA1801 | 사용되지 않은 매개 변수를 검토하세요. |
CA1804 | 사용되지 않는 로컬 항목을 제거하세요. |
CA1809 | 불필요한 로컬 항목을 사용하지 마세요. |
CA1810 | 참조 형식 정적 필드를 인라인으로 초기화하세요. |
CA1811 | 호출되지 않는 전용 코드를 사용하지 마세요. |
CA1812 | 인스턴스화되지 않은 내부 클래스를 사용하지 마세요. |
CA1813 | 봉인되지 않은 특성을 사용하지 마세요. |
CA1814 | 다차원 배열보다 가변 배열을 사용하세요. |
CA1815 | 값 형식에서 Equals 또는 같음 연산자 재정의를 참조하세요. |
CA1819 | 속성은 배열을 반환해서는 안 됩니다. |
CA1820 | 문자열 길이를 사용하여 빈 문자열을 테스트하세요. |
CA1821 | 빈 종료자를 제거하십시오. |
CA1822 | 멤버를 static으로 표시하세요. |
CA1823 | 사용되지 않는 전용 필드를 사용하지 마세요. |
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하십시오. |
CA2201 | 예약된 예외 형식을 발생시키지 마세요. |
CA2202 | 개체를 여러 번 삭제하지 마십시오. |
CA2205 | Win32 API의 동일한 관리형 기능을 사용하세요. |
CA2207 | 값 형식 정적 필드 인라인을 초기화하십시오. |
CA2208 | 인수 예외를 올바르게 인스턴스화하세요. |
CA2211 | 비상수 필드는 노출되면 안 됩니다. |
CA2212 | 서비스 구성 요소를 WebMethod를 사용하여 표시하지 마십시오. |
CA2213 | 삭제 가능한 필드는 삭제해야 합니다. |
CA2214 | 재정의 가능한 메서드를 생성자에서 호출하지 마십시오. |
CA2216 | 삭제 가능한 형식은 종료자를 선언해야 합니다. |
CA2217 | 열거형을 FlagsAttribute로 표시하지 마세요. |
CA2219 | exception 절에서 예외를 발생시키지 마세요. |
CA2220 | 종료자는 기본 클래스 종료자를 호출해야 합니다. |
CA2221 | 종료자는 protected여야 합니다. |
CA2222 | 상속된 멤버 노출 수준을 낮추지 마세요. |
CA2223 | 멤버는 반환 형식 이외의 것도 달라야 합니다. |
CA2224 | 같음 연산자를 오버로드할 때 Equals를 재정의하세요. |
CA2225 | 연산자 오버로드에는 명명된 대체 항목이 있습니다. |
CA2226 | 연산자에는 대칭 오버로드가 있어야 합니다. |
CA2227 | 컬렉션 속성은 읽기 전용이어야 합니다. |
CA2229 | serialization 생성자를 구현하십시오. |
CA2230 | 가변 인수로 params를 사용하세요. |
CA2231 | ValueType.Equals를 재정의할 때 같음 연산자를 오버로드하십시오. |
CA2232 | Windows Forms 진입점을 STAThread를 사용하여 표시하십시오. |
CA2234 | 문자열 대신 System.Uri 개체를 전달하세요. |
CA2235 | 모두 serialize할 수 없는 필드로 표시하십시오. |
CA2236 | ISerializable 형식에서 기본 클래스 메서드를 호출하십시오. |
CA2237 | SerializableAttribute로 ISerializable 형식 표시 |
CA2238 | serialization 메서드를 올바르게 구현하십시오. |
CA2239 | 선택적 필드에 deserialization 메서드를 제공하세요. |
CA2240 | ISerializable을 올바르게 구현하십시오. |
CA2241 | 서식 지정 메서드에 올바른 인수를 제공하십시오. |
CA2242 | NaN에 대해 정확하게 테스트하십시오. |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기