다음을 통해 공유


혼합 권장 규칙 규칙 집합

이러한 Microsoft Mixed Recommended 규칙은 잠재적 보안 허점, 응용 프로그램 충돌 및 기타 중요한 논리 및 디자인 오류를 포함하여 공용 언어 런타임을 지원하는 C++ 프로젝트의 가장 일반적으로 중요한 문제에 초점을 맞춥니다.공용 언어 런타임을 지원하는 C++ 프로젝트에 대해 만드는 모든 사용자 지정 규칙 집합에 이 규칙 집합을 포함해야 합니다.이 규칙 집합은 Visual Studio Professional 이상 버전에서 구성하도록 디자인되었습니다.

규칙

설명

C6001

초기화되지 않은 메모리 사용

C6011

Null 포인터 역참조

C6029

확인되지 않은 값 사용

C6031

반환 값이 무시되었습니다.

C6053

호출의 0 종료

C6054

0 종료 없음

C6059

잘못된 연결

C6063

Format 함수에 문자열 인수 없음

C6064

Format 함수에 정수 인수 없음

C6066

Format 함수에 포인터 인수 없음

C6067

Format 함수에 문자열 포인터 인수 없음

C6101

초기화되지 않은 메모리 반환 중입니다.

C6200

인덱스가 버퍼 최대값을 초과함

C6201

인덱스가 스택 버퍼 최대값을 초과함

C6214

BOOL에 대한 잘못된 캐스팅 HRESULT

C6215

BOOL에 대한 잘못된 캐스팅 HRESULT

C6216

HRESULT에 대한 잘못된 컴파일러 삽입 캐스팅 BOOL

C6217

NOT을 포함하는 잘못된 HRESULT 테스트

C6220

1과 비교할 때 잘못된 HRESULT

C6226

1에 대한 잘못된 HRESULT 할당

C6230

HRESULT를 부울로 잘못 사용

C6235

논리합의 0이 아닌 상수

C6236

논리합의 0이 아닌 상수

C6237

논리적으로 0에 대한-부작용을 잃습니다.

C6242

강제 로컬 해제

C6248

Null DACL 작성

C6250

해제되지 않은 주소 설명자

C6255

보호되지 않은 Alloca 사용

C6258

스레드 종료를 사용

C6259

비트 OR 제한 스위치에 데드 코드가 있음

C6260

바이트 산술 사용

C6262

과도한 스택 사용

C6263

루프에 Alloca 사용

C6268

캐스팅에 괄호 없음

C6269

포인터 역참조 무시됨

C6270

Format 함수에 부동 인수 없음

C6271

Format 함수의 추가 인수

C6272

Format 함수의 비부동 인수

C6273

Format 함수의 비정수 인수

C6274

Format 함수의 비문자 인수

C6276

잘못된 문자열 캐스팅

C6277

잘못된 CreateProcess 호출

C6278

배열-새 스칼라-삭제 불일치

C6279

배열-새 스칼라-삭제 불일치

C6280

메모리 할당-할당 해제 불일치

C6281

비트 관계 우선 순위

C6282

할당에서 테스트 교체

C6283

기본 배열-새 스칼라-삭제 불일치

C6284

Format 함수의 개체 인수 잘못됨

C6285

상수의 논리합

C6286

논리합이 0이 아니므로 의도하지 않은 결과 발생

C6287

중복 테스트

C6288

논리로 상호를 포하고-False 입니다.

C6289

논리합에 대한 상호 제외가 true임

C6290

비트 논리 부정-및 우선 순위

C6291

비트 논리 부정-또는 우선 순위

C6292

루프가 최대값부터 위로 계산됨

C6293

루프가 최소값부터 아래로 계산됨

C6294

루프 본문이 실행되지 않음

C6295

무한 루프

C6296

루프가 한 번만 실행됨

C6297

더 큰 크기로의 시프트 캐스팅 결과

C6299

부울 비교에 대한 비트 필드

C6302

Format 함수에 대한 잘못된 문자열 인수

C6303

Format 함수에 대한 잘못된 와이드 문자열 인수

C6305

크기 및 개수 사용 불일치

C6306

잘못된 변수 인수 함수 호출

C6308

Realloc 누수

C6310

잘못된 예외 필터 상수

C6312

예외 실행 루프 계속

C6314

비트 OR 우선 순위

C6317

하지 하지 보수

C6318

예외 계속 검색

C6319

쉼표로 무시됨

C6324

문자열 비교 대신 문자열 복사

C6328

잠재적 인수 형식 불일치

C6331

VirtualFree 플래그 잘못됨

C6332

VirtualFree 매개 변수 잘못됨

C6333

VirtualFree 크기 잘못됨

C6335

프로세스 핸들 누수

C6381

종료 정보 없음

C6383

Element-Count Byte-Count 버퍼 오버런

C6384

포인터 크기 분할

C6385

읽기 오버런

C6386

쓰기 오버런

C6387

잘못된 매개 변수 값

C6388

잘못된 매개 변수 값

C6500

잘못된 특성 속성

C6501

특성 속성 값 충돌

C6503

참조는 Null일 수 없음

C6504

비포인터에 대한 Null

C6505

Void에 대한 MustCheck

C6506

비포인터 또는 배열에 대한 버퍼 크기

C6507

Null은 역참조 0에서 불일치

C6508

상수에 대한 쓰기 액세스

C6509

사전 조건에서 반환이 사용됨

C6510

비포인터에 대한 Null 종료

C6511

MustCheck는 Yes 또는 No여야 함

C6513

버퍼 크기가 없는 요소 크기

C6514

버퍼 크기가 배열 크기를 초과함

C6515

비포인터에 대한 버퍼 크기

C6516

특성에 대한 속성 없음

C6517

읽기 불가능 버퍼에 대한 유효 크기

C6518

쓰기 불가능 버퍼에 대한 쓰기 가능 크기

C6519

주석이 잘못 되었습니다: 'NeedsRelease' 속성의 값이 예 또는 아니요이어야 합니다.

C6521

역참조 문자열 크기가 잘못 되었습니다.

C6522

잘못된 크기 문자열 형식

C6523

문자열 매개 변수의 크기가 잘못 되었습니다.

C6525

잘못된 크기 문자열 접근할 수 없는 위치

C6526

잘못된 크기를 문자열 버퍼 형식입니다.

C6527

경고 C6527: 주석이 잘못되었습니다. NeedsRelease 속성은 void 형식의 값에 사용할 수 없습니다.

C6530

인식할 수 없는 형식 문자열 스타일

C6540

이 함수에 특성 주석을 사용하면 기존의 모든 주석이 무효화됩니다.

C6551

크기 사양이 잘못되었습니다. 식을 구문 분석할 수 없습니다.

C6552

Deref= 또는 Notref=가 잘못되었습니다. 식을 구문 분석할 수 없습니다.

C6701

값이 올바른 Yes/No/Maybe 값이 아닙니다.

C6702

값이 문자열 값이 아닙니다.

C6703

값이 숫자가 아닙니다.

C6704

예기치 않은 주석 식 오류가 발생했습니다.

C6705

주석 인수 개수가 예상 된 주석에 대한 인수의 실제 수가 맞지 않습니다.

C6706

주석에 대해 예기치 않은 주석 오류가 발생했습니다.

C6995

XML 로그 파일을 저장하지 못했습니다.

C26100

경합 상태(race condition).

C26101

연관 작업을 적절하게 사용할 수 없습니다.

C26110

호출자가 잠금 유지에 실패했습니다.

C26111

호출자가 잠금 해제에 실패했습니다.

C26112

호출자가 잠금을 유지할 수 없습니다.

C26115

잠금 해제에 실패했습니다.

C26116

잠금 획득 또는 유지에 실패했습니다.

C26117

유지되지 않은 잠금을 해제합니다.

C26140

SAL 주석 동시성 오류

C28020

이 식은 이 호출에 대해 True가 아닙니다.

C28021

주석이 추가된 매개 변수는 포인터여야 합니다.

C28022

이 함수의 함수 클래스(들)은 함수를 정의하는 데 사용된 typedef의 함수 클래스(들)와 일치하지 않습니다.

C28023

할당 중이거나 전달 중인 함수는 하나 이상의 클래스에 대한 함수 클래스 주석을 갖고 있어야만 합니다.

C28024

할당 중인 함수 포인터에 함수 클래스(들)로 주석이 추가되었는데 이 클래스는 함수 클래스(들) 목록에 포함되지 않습니다.

C28039

실제 매개 변수의 형식은 형식과 정확히 일치해야 합니다.

C28112

Interlocked 함수를 통해 액세스되는 변수는 항상 Interlocked 함수를 통해 액세스해야 합니다.

C28113

interlocked 함수를 통해 로컬 변수에 액세스합니다.

C28125

함수는 try/except 블록 내에서 호출해야 합니다.

C28137

변수 인수가 대신 (리터럴) 상수여야 합니다.

C28138

그 대신 상수 인수는 변수여야 합니다.

C28159

다른 함수를 대신 사용하십시오.

C28160

Error 주석

C28163

함수를 try/except 블록 내에서 호출할 수 없습니다.

C28164

인수가 포인터에 대한 포인터가 아니라 개체에 대한 포인터가 필요한 함수로 전달되고 있습니다.

C28182

NULL 포인터를 역참조하고 있습니다.다른 포인터와 포인터가 NULL 값을 포함 합니다.

C28183

인수의 값은 하나일 수 있으며 포인터에서 찾은 값의 복사본입니다.

C28193

변수가 검사해야 하는 값을 보유하고 있습니다.

C28196

충족하지 않은 요구 사항입니다. (이 식은 true가 아닙니다.)

C28202

비정적 멤버에 대한 잘못된 참조입니다.

C28203

클래스 멤버에 대한 모호한 참조입니다.

C28205

_Success_ 또는 _On_failure_가 잘못된 컨텍스트에서 사용되었습니다.

C28206

'->': 왼쪽 피연산자가 구조체를 가리킵니다.

C28207

왼쪽 피연산자가 구조체를 가리킵니다. '.'를 사용하십시오.

C28209

기호의 선언에 충돌하는 선언이 있습니다.

C28210

_On_failure_ 컨텍스트에 대한 주석이 명시적 사전 컨텍스트에 없어야 합니다.

C28211

SAL_context에 대해 정적 컨텍스트 이름이 필요합니다.

C28212

주석에 대한 포인터 식이 있어야 합니다.

C28213

이전 선언을 수정하지 않고 참조하려면 _Use_decl_annotations_ 주석을 사용해야 합니다.

C28214

특성 매개 변수 이름은 p1...p9여야 합니다.

C28215

이미 typefix가 있는 매개 변수에 typefix를 적용할 수 없습니다.

C28216

주석은 특정 함수 매개 변수에 대한 사전 조건에만 적용됩니다.

C28217

함수의 경우 주석에 대한 매개 변수 개수가 파일에 있는 개수와 일치하지 않습니다.

C28218

함수에 대해 매개 변수의 경우 주석 매개 변수 개수가 파일에 있는 개수와 일치하지 않습니다.

C28219

주석에 있는 매개 변수 주석에 열거의 멤버가 필요합니다.

C28220

주석에 있는 매개 변수 주석에 정수 식이 필요합니다.

C28221

주석에 있는 매개 변수에 문자열 식이 필요합니다.

C28222

주석에 __yes, __no 또는 __maybe가 필요합니다.

C28223

주석, 매개 변수에 대해 토큰/식별자가 필요한데 없습니다.

C28224

주석에 매개 변수가 필요합니다.

C28225

주석에서 필요한 수의 매개 변수를 찾을 수 없습니다.

C28226

또한 주석은 현재 선언에서 PrimOp일 수 없습니다.

C28227

또한 주석은 PrimOp일 수 없습니다(이전 선언 참조).

C28228

주석 매개 변수: 주석에서 형식을 사용할 수 없습니다.

C28229

주석에서 매개 변수를 지원하지 않습니다.

C28230

매개 변수 형식에 멤버가 없습니다.

C28231

주석은 배열에서만 유효합니다.

C28232

Pre, post 또는 deref가 주석에 적용되지 않았습니다.

C28233

Pre, post 또는 deref가 블록에 적용되었습니다.

C28234

__at_ 식이 현재 함수에 적용되지 않습니다.

C28235

함수는 단독으로 주석으로 사용할 수 없습니다.

C28236

주석은 식에서 사용할 수 없습니다.

C28237

매개 변수의 주석은 더 이상 지원되지 않습니다.

C28238

매개 변수의 주석에 value, stringValue 및 longValue가 두 개 이상 있습니다.paramn=xxx를 사용하십시오.

C28239

경고 28239: 매개 변수의 주석에 value, stringValue 또는 longValue와 paramn=xxx가 모두 있습니다.paramn=xxx만 사용하십시오.

C28240

매개 변수의 주석에 param2는 있는데 param1이 없습니다.

C28241

매개 변수의 함수에 대한 주석을 인식할 수 없습니다.

C28243

매개 변수의 함수에 대한 주석에 실제 형식 주석이 허용하는 것보다 많은 역참조가 필요합니다.

C28244

함수에 대한 주석에 구문 분석할 수 없는 매개 변수/외부 주석이 있습니다.

C28245

함수에 대한 주석에서 멤버가 아닌 함수에 'this'를 주석으로 추가합니다.

C28246

함수 매개 변수에 주석을 매개 변수 형식이 일치 하지 않습니다.

C28250

함수에 대한 주석이 일치하지 않습니다. 이전 인스턴스에 오류가 있습니다.

C28251

함수에 대한 주석이 일치하지 않습니다. 이 인스턴스에 오류가 있습니다.

C28252

경고 C28253: 함수에 대한 주석이 일치하지 않습니다. 매개 변수의 이 인스턴스에 다른 주석이 있습니다.

C28253

경고 C28253: 함수에 대한 주석이 일치하지 않습니다. 매개 변수의 이 인스턴스에 다른 주석이 있습니다.

C28254

dynamic_cast<>()는 주석에서 지원되지 않습니다.

C28262

함수에 주석에 대한 주석 구문 오류가 있습니다.

C28263

내장 주석에 대한 조건부 주석에 구문 오류가 있습니다.

C28264

결과 목록 값은 상수여야 합니다.

C28267

함수에 주석에 대한 주석 구문 오류가 있습니다.

C28272

함수, 매개 변수에 대한 주석이 검사 시 함수 선언과 일치하지 않습니다.

C28273

함수의 암시가 함수 선언과 일치하지 않습니다.

C28275

_Macro_value_에 대한 매개 변수가 null입니다.

C28279

기호의 경우 일치하는 'end'가 없는 'begin'이 있습니다.

C28280

기호의 경우 일치하는 'begin'이 없는 'end'가 있습니다.

C28282

형식 문자열이 사전 조건에 있어야 합니다.

C28285

함수의 경우 매개 변수에 구문 오류가 있습니다.

C28286

함수의 경우 끝에 구문 오류가 있습니다.

C28287

함수의 경우 _At_() 주석에 구문 오류가 있습니다(인식할 수 없는 매개 변수 이름).

C28288

함수의 경우 _At_() 주석에 구문 오류가 있습니다(잘못된 매개 변수 이름).

C28289

함수의 경우: ReadableTo 또는 WritableTo에 limit-spec가 매개 변수로 포함되지 않았습니다.

C28290

함수에 대한 주석에 실제 매개 변수 개수보다 많은 외부 참조가 있습니다.

C28291

게시물에 null/notnull deref 수준 0은 함수에 대한 의미가 없습니다.

C28300

연산자에 대한 호환되지 않는 형식의 식 피연산자입니다.

C28301

함수의 첫 번째 선언에 대한 주석이 없습니다.

C28302

주석에 추가 _Deref_ 연산자가 있습니다.

C28303

주석에 모호한 _Deref_ 연산자가 있습니다.

C28304

토큰에 부적절하게 배치된 _Notref_ 연산자가 적용되었습니다.

C28305

token을(를) 구문 분석하는 동안 오류가 발생했습니다.

C28306

매개 변수의 주석이 사용되지 않습니다.

C28307

매개 변수의 주석이 사용되지 않습니다.

C28350

주석이 조건부로 적용할 수 없는 상황을 설명합니다.

C28351

주석은 동적 값(변수)을 조건에 사용할 수 없는 위치를 설명합니다.

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에 대해 정확하게 테스트하십시오.