다음을 통해 공유


혼합 권장 규칙 규칙 집합

Microsoft 혼합을 권장 규칙 잠재적인 보안 허점을, 응용 프로그램 충돌 및 다른 중요 한 논리 및 설계 오류를 포함 하 여 공용 언어 런타임을 지 원하는 C++ 프로젝트에서는 가장 일반적이 고 중요 한 문제에 중점을 둡니다.공용 언어 런타임에서 지 원하는 C++ 프로젝트를 만드는 사용자 정의 규칙 집합을 설정 합니다.이 규칙을 포함 해야 합니다.이 규칙 집합 Visual Studio Professional edition 및 더 높은 구성 하도록 설계 되었습니다.

규칙

설명

C6001

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

C6011

Null 포인터를 역참조 함

C6029

검사 되지 않은 값은 사용할 수

C6031

반환 값이 무시

C6053

0에서 호출 종료

C6054

종료 없음 0

C6059

잘못 된 연결

C6063

Format 함수 문자열 인수가 없습니다.

C6064

Format 함수에 정수 인수가 없습니다.

C6066

Format 함수 포인터 인수가 없습니다.

C6067

문자열 형식 함수 포인터 인수가 없습니다.

C6101

초기화 되지 않은 메모리를 반환합니다.

C6200

인덱스 버퍼 최대값을 초과 했습니다.

C6201

인덱스 스택 버퍼 최대값을 초과 했습니다.

C6214

잘못 된 HRESULT BOOL로 캐스팅

C6215

잘못 된 캐스팅 HRESULT BOOL

C6216

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

C6217

NOT과 잘못 된 HRESULT 테스트

C6220

잘못 된 HRESULT 비교-1

C6226

잘못 된 HRESULT 배정-1

C6230

HRESULT 부울 값으로 잘못 사용

C6235

0이 아닌 상수에 논리-나

C6236

논리적으로 또는 0이 아닌 상수입니다.

C6237

논리 0-부작용을 상실 하 고

C6242

강제로 로컬 해제

C6248

만들기 Null DACL

C6250

릴리스되지 않은 주소 설명자

C6255

보호 되지 않은 Alloca 사용

C6258

사용 하 여 스레드를 종료

C6259

죽은 비트 코드-또는 제한 스위치

C6260

사용 하는 바이트 산술 연산

C6262

과도 한 스택 사용

C6263

루프에서 Alloca를 사용 하 여

C6268

캐스트에서 누락 된 괄호

C6269

포인터 역참조 무시

C6270

Format 함수에 Float 인수가 없습니다.

C6271

불필요 한 인수 형식 함수

C6272

Format 함수에 Float 되지 않은 인수

C6273

Format 함수에 정수가 아닌 것

C6274

문자가 아닌 인수 형식 함수

C6276

잘못 된 문자열 캐스팅

C6277

잘못 된 오류가 호출

C6278

새 배열 스칼라 Delete 일치 하지 않습니다.

C6279

새 스칼라 배열 Delete 일치 하지 않습니다.

C6280

메모리 할당 할당 취소 일치 하지 않습니다.

C6281

관계 우선 순위 비트

C6282

배정 테스트를 대체합니다.

C6283

기본 배열의 새 스칼라 Delete 불일치

C6284

잘못 된 개체 인수 형식 함수

C6285

논리-또는 상수

C6286

0이 아닌 논리적으로 나 부작용의 손실

C6287

예비 테스트

C6288

논리로 상호 포함-및 False입니다

C6289

상호 배제를 통해 논리적으로 나 마찬가지입니다

C6290

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

C6291

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

C6292

루프에서 최대 개수

C6293

루프 최소부터 아래로 계산

C6294

루프 본문이 실행 되지 않습니다

C6295

무한 루프

C6296

한 번만 실행 되는 루프

C6297

결과 shift 키를 더 큰 크기를 캐스팅

C6299

비트 필드를 부울 비교

C6302

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

C6303

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

C6305

일치 하지 않는 크기 및 개수 사용

C6306

잘못 된 가변 인수 함수 호출

C6308

Realloc 누수

C6310

예외 필터 상수가 잘못 되었습니다.

C6312

예외 실행 루프 계속

C6314

비트-또는 우선 순위

C6317

보수 하지 않습니다

C6318

예외 계속 검색

C6319

쉼표를 무시합니다.

C6324

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

C6328

잠재 인수 형식이 일치 하지 않습니다

C6331

VirtualFree 잘못 된 플래그

C6332

VirtualFree 잘못 된 매개 변수

C6333

VirtualFree 잘못 된 크기

C6335

프로세스 핸들 누수

C6381

시스템 종료 정보를 누락 되었습니다.

C6383

요소 수가 바이트-버퍼 오버런 수

C6384

포인터 크기 구분

C6385

읽기 오버런

C6386

쓰기 오버런

C6387

잘못 된 매개 변수 값

C6388

잘못 된 매개 변수 값

C6500

잘못 된 특성 속성

C6501

충돌 하는 특성 속성 값

C6503

참조는 Null 일 수 없습니다.

C6504

Null 포인터 기능을

C6505

MustCheck Void에

C6506

버퍼 크기가 아닌 포인터 또는 배열

C6507

역참조 0에서 null 일치 하지 않습니다.

C6508

상수를 쓰기 액세스

C6509

전제 조건에 사용 되는 반환

C6510

Null이 아닌 포인터를 종료 합니다.

C6511

MustCheck 같아야 합니다 예 또는 아니요

C6513

버퍼 크기를 없이 요소 크기

C6514

배열 크기가 버퍼 크기를 초과합니다.

C6515

포인터가 아닌 버퍼 크기

C6516

특성에 속성이 없는

C6517

올바른 크기의 버퍼를 읽을 수 없는

C6518

쓸 쓸 버퍼 크기

C6519

주석이 잘못 되었습니다. 'NeedsRelease' 속성의 값은 Yes 또는 No

C6521

잘못 된 크기의 문자열을 역참조

C6522

크기 문자열 형식이 잘못 되었습니다.

C6523

잘못 된 크기의 문자열 매개 변수

C6525

잘못 된 크기 문자열 위치에 연결할 수 없음

C6526

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

C6527

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

C6530

인식할 수 없는 형식 문자열 스타일입니다.

C6540

이 함수에 특성 주석 사용 하는 모든 해당 기존 __declspec 주석이 무효화 됩니다.

C6551

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

C6552

잘못 된 Deref = 또는 Notref =: 식을 구문 분석할 수 없습니다

C6701

값이 유효한 예/아니오/아마 값이 되었습니다.

C6702

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

C6703

값에 숫자가 아닙니다.

C6704

주석 오류 식

C6705

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

C6706

주석 오류에 대 한 주석

C6995

XML 로그 파일을 저장할 수 없습니다.

C26100

경쟁 조건

C26101

연동된 작업 제대로 사용 실패

C26110

호출자가 잠금을 유지 하는 데 실패

C26111

호출자가 잠금을 해제 하지 못했습니다.

C26112

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

C26115

잠금 해제 실패

C26116

취득 하거나 잠금을 보유 하도록 실패

C26117

Unheld 잠금을 해제

C26140

SAL 주석이 동시성 오류

C28020

식에이 호출 그렇지 않습니다.

C28021

주석이 있는 매개 변수에 대 한 포인터 이어야 합니다.

C28022

이 함수에는 함수 클래스 함수 클래스 정의에 사용 되는 형식 정의에서 일치 하지 않습니다.

C28023

할당 되거나 전달 되는 함수는 _Function_class_ 주석 클래스 중 하나에 대 한 있어야 합니다.

C28024

함수 포인터를 할당 하 고 함수 클래스 목록에 포함 되어 있지 않습니다 함수 클래스, 주석 처리 됩니다.

C28039

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

C28112

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

C28113

지역 변수는 Interlocked 함수를 통해 액세스합니다.

C28125

함수를 호출할 수 있어야를 try / 블록을 제외한

C28137

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

C28138

인수는 변수 대신 이어야 합니다.

C28159

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

C28160

Error 주석

C28163

함수에서 호출 되지 해야를 try / 블록을 제외한

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... 있어야 9 페이지

C28215

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

C28216

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

C28217

함수에 대 한 매개 변수를 주석 파일에서 찾은 일치 하지

C28218

함수 paramteer에 대 한 매개 변수를 주석 파일에서 찾은 일치 하지

C28219

열거형의 멤버에 대 한 주석 매개 변수를 주석으로 필요합니다.

C28220

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

C28221

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

C28222

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

C28223

토큰/식별자에 대 한 주석에서 찾을 수 없습니다 매개 변수

C28224

주석 매개 변수를 필요로합니다.

C28225

필수 매개 변수의 올바른 개수에서 찾을 수 없습니다.

C28226

주석 (현재 선언)에 있는 PrimOp 될 수도 수 없습니다.

C28227

주석을 PrimOp 수 없습니다 또한 (이전 선언을 참조 하십시오.)

C28228

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

C28229

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

C28230

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

C28231

주석 배열에만 유효

C28232

전, 게시, 또는 deref 주석으로 적용 되지

C28233

전, 게시, 또는 deref 블록에 적용

C28234

식 __at 현재 함수에는 적용 되지 않습니다.

C28235

함수를 주석으로 독립 실행형 수 없습니다.

C28236

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

C28237

주석에서 매개 변수를 더 이상 지원

C28238

주석에서 매개 변수 값에 stringValue 및 longValue 하나 이상 있습니다.Paramn 사용 하 여 = xxx

C28239

주석에서 매개 변수 값 이나 stringValue, longValue 또는 있습니다. 및 paramn = xxx.Paramn만을 사용 = xxx

C28240

주석 매개 변수에 매개 변수 2가 있지만 없음 param1가

C28241

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

C28243

함수 매개 변수를 좀 더에 대해 주석 처리 하는 실제 형식 보다 주석 역참조

C28244

주석 기능에 대해 구문 분석할 수 없는 매개 변수/외부 주석을 했습니다.

C28245

주석 기능에 대 한 '이' 비-멤버 함수에 주석을 달아합니다

C28246

매개 변수가 주석 기능에 대 한 매개 변수의 형식이 일치 하지 않습니다.

C28250

함수에 대 한 일관성 없는 주석: 이전 인스턴스 오류가 있습니다.

C28251

함수에 대해 일관 되지 않은 주석:이 경우에 오류가 발생 했습니다.

C28252

함수에 대 한 일관성 없는 주석: 매개 변수에이 인스턴스를 다른 주석 있습니다.

C28253

함수에 대 한 일관성 없는 주석: 매개 변수에이 인스턴스를 다른 주석 있습니다.

C28254

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

C28262

함수는 주석 주석 내의 구문 오류를 찾을 수

C28263

내장 주석에 대해 조건부 주석에서 구문 오류를 찾을 수

C28264

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

C28267

구문 오류는 주석에서 주석 함수를 찾을 수 있습니다.

C28272

주석 기능에 대 한 매개 변수를 검사 하는 경우 함수 선언에 일관성이 없습니다.

C28273

함수에 대 한 단서 함수 선언과 일치 하지 않습니다.

C28275

_Macro_value_ 매개 변수가 null입니다.

C28279

기호에 대 한의 '시작'에 일치 하는 '끝 없는' 발견 했습니다

C28280

기호에 대 한 '끝'을 시 키 지 않고 '시작' 찾을

C28282

형식 문자열에서 있어야 합니다.

C28285

함수에 대 한 매개 변수를 구문 오류가 발생 했습니다.

C28286

함수에 대 한 끝부분에 구문 오류가 발생 했습니다.

C28287

구문 오류 _At_() 주석 (알 수 없는 매개 변수 이름)에서 함수에 대 한

C28288

구문 오류 (잘못 된 매개 변수 이름) _At_() 주석에서 함수에 대 한

C28289

함수: ReadableTo 또는 WritableTo 한 매개 변수로 제한-사양

C28290

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

C28291

포스트 수준을 deref null/notnull에는 함수에 대 한 의미가 없습니다.

C28300

식은 피연산자에 연산자를 호환 되지 않는 형식

C28301

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

C28302

주석에서 여분의 _Deref_ 연산자를 찾을 수 없습니다.

C28303

주석에서 모호한 _Deref_ 연산자를 찾을 수 없습니다.

C28304

잘못 배치 된 _Notref_ 연산자 토큰에 적용 하는 찾을 수 없습니다.

C28305

토큰을 구문 분석 하는 동안 오류가 발견 되었습니다.

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 절 외부에서 보십시오.

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

Serializable 이외의 모든 필드를 표시 합니다.

CA2236

ISerializable 형식에 기본 클래스 메서드를 호출 합니다.

CA2237

Serializableattribute로 ISerializable 표시 형식

CA2238

Serialization 메서드를 올바르게 구현

CA2240

Iserializable을 올바르게 구현

CA2241

형식 메서드에 올바른 인수를 제공 합니다.

CA2242

Nan에 대해 정확 하 게 테스트