共用方式為


原生建議規則規則集

這些建議的規則的重點在於機器碼中最關鍵且常見的問題,包括潛在的安全性漏洞和應用程式損毀。您應該在您為原生專案建立的任何自訂規則集中都包含這個規則集。這個規則集是設計用來與 Visual Studio Professional (含) 以上版本搭配使用。

規則

描述

C6001

使用尚未初始化的記憶體。

C6011

取值 NULL 指標。

C6029

使用未經確認的值 。

C6031

忽略傳回值

C6053

從呼叫的無終止。

C6054

零終止遺失。

C6059

終結串連

C6063

遺漏字串中的引數去格式化函式。

C6064

遺漏整數引數去格式化函式。

C6066

遺漏指標引數去格式化函式

C6067

遺漏字串中的指標引數去格式化函式。

C6101

傳回未初始化的記憶體。

C6200

索引超出緩衝區最大值

C6201

索引超出堆疊緩衝區最大值

C6214

BOOL 到HRESULT的轉換無效

C6215

從BOOL 到HRESULT的轉換無效

C6216

無效的HRESULT 編譯器插入轉型 BOOL

C6217

無效的 HRESULT 測試與 NOT

C6220

無效的 HRESULT 比較為-1。

C6226

無效的 HRESULT 指派為-1。

C6230

為布林值的無效用法 HRESULT

C6235

非零常數與邏輯 OR

C6236

非零的常數與邏輯 OR

C6237

零與邏輯And遺失副作用

C6242

強制區域回溯

C6248

建立空的 DACL

C6250

未發行的位址描述項

C6255

未受保護使用的Alloca

C6258

請使用來結束執行緒

C6259

無作用程式碼在Bitwise-Or限制的切換

C6260

為位元組算術的使用。

C6262

過多的堆疊的使用方式

C6263

在迴圈中使用 Alloca

C6268

轉換的遺失括號

C6269

忽略的指標取值

C6270

遺漏浮點引數去格式化函式。

C6271

額外引數去格式化函式。

C6272

非浮點引數去格式化函式。

C6273

非整數引數去格式化函式。

C6274

非字元引數去格式化函式。

C6276

無效的資料轉換。

C6277

無效的 CreateProcess 呼叫

C6278

Array-New Scalar-Delete 不相符

C6279

Array-New Scalar-Delete的不相符

C6280

記憶體配置解除配置不相符

C6281

位元關聯的優先順序

C6282

指派會取代測試

C6283

原始Array-New Scalar-Delete不相符

C6284

無效的物件引數去格式化函式

C6285

邏輯 OR 常數

C6286

非零邏輯或遺失的副作用 (Side Effect)。

C6287

重複測試

C6288

相互包含邏輯和為 False

C6289

互斥邏輯或是 true。

C6290

Logical-Not Bitwise-Or 優先順序

C6291

Logical-Not Bitwise-Or的優先順序。

C6292

從最大值向上來做計數。

C6293

從最小值來向下計數。

C6294

從未執行迴圈主體

C6295

無限迴圈。

C6296

只執行一次的迴圈

C6297

移位的結果會轉換為較大的大小

C6299

為布林值比較的 Bitfield

C6302

無效的字串引數去格式化函式。

C6303

無效的寬字元字串引數去格式化函式。

C6305

不相符的大小和使用數目。

C6306

不正確的變數引數函式呼叫。

C6308

Realloc 遺漏。

C6310

不合法的例外狀況篩選條件常數

C6312

例外狀況繼續執行迴圈

C6314

Bitwise-Or的優先順序。

C6317

不是非互補。

C6318

例外狀況繼續搜尋

C6319

以逗號忽略

C6324

非字串複本的字串比較

C6328

可能的引數型別不符。

C6331

VirtualFree 無效旗標

C6332

VirtualFree 無效的參數。

C6333

VirtualFree 無效的大小

C6335

遺漏處理序控制代碼

C6381

關閉資訊遺失。

C6383

項目計數位元組計數緩衝區滿溢 (Buffer Overrun)

C6384

指標大小小節。

C6385

讀取滿溢

C6386

撰寫滿溢

C6387

無效的參數值。

C6388

無效的參數值。

C6500

無效的屬性

C6501

發生衝突的屬性值。

C6503

參考不可以是空值。

C6504

在非指標的空值。

C6505

在 void的MustCheck

C6506

在非指標或陣列的緩衝區大小。

C6507

在取值零的空值不符

C6508

常數的寫入權限。

C6509

在之前狀況中回傳使用過

C6510

在非指標的空值結束

C6511

'MustCheck' 屬性必須為 Yes 或 No。

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

Yes/No/Maybe值不是有效的。

C6702

值不是字串。

C6703

此值不是數值。

C6704

未預期的附註表示錯誤

C6705

附註的引數的預期數字不符合附註的引數的實際數目

C6706

附註的未預期的附註錯誤。

C6995

無法儲存 XML的記錄檔。

C26100

競爭情形

C26101

不正確地使用連鎖作業

C26110

持有鎖定的呼叫端失敗

C26111

釋放鎖定的呼叫端失敗

C26112

呼叫端不可以有任何鎖定。

C26115

不會釋放鎖定。

C26116

無法取得或維持鎖定

C26117

釋放鎖定 unheld

C26140

並行 SAL 附註錯誤

C28020

這個呼叫的運算式不是 true。

C28021

被附註的參數必須是指標。

C28022

這個函式上的函式類別與定義所用之 typedef 上的函式類別不符:

C28023

指派或傳遞的函式應該至少有一個的 _Function_class_ 附註類別

C28024

要指派的函式指標會以函式類別標記附註,該類別並未包含在函式類別中。

C28039

實際參數的型別應要完全符合型別:

C28112

透過連鎖的函式存取的變數必須透過連鎖的函式永遠存取。

C28113

存取區域變數透過連鎖的函式

C28125

必須在 try/except 區塊內呼叫函式

C28137

變數引數應改成 (常值) 常數。

C28138

常數引數應改成變數。

C28159

考慮使用另一個函式。

C28160

錯誤附註

C28163

絕對不能從 try/except 區塊內呼叫函式

C28164

正在將引數傳遞給需要物件指標 (而非指標的指標) 的函式:

C28182

正在取值 NULL 指標。指標含有與另一個指標的空值。

C28183

引數可以是一個值,而且是在指標中找到之值的複本

C28193

變數必須檢查的值。

C28196

這個需求不是內容的。(這個運算式都不是評估為 True)。

C28202

非靜態成員之不合法的參考。

C28203

類別成員的參考模稜兩可。

C28205

Success_ 或 _On_failure_ 用於不合法的內容中:

C28206

左運算元指向結構,請使用 '->'。

C28207

左運算元是結構,請使用 '.'。

C28209

符號的宣告在有衝突的宣告。

C28210

On_failure_ 內容的註釋不能在明確在pre context 中

C28211

SAL_context 必須有靜態內容名稱。

C28212

為附註預期的指標運算式

C28213

_Use_decl_annotations_ 附註必須不需修改就能用來參考預先宣告。

C28214

屬性參數名稱必須是 p1...p9。

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

pre、post 或 deref 未套用至任何附註。

C28233

pre、post 或 deref 已套用至區塊。

C28234

__at 運算式不套用於目前函式。

C28235

函式無法單獨做為附註。

C28236

附註不能用在運算式中。

C28237

不再支援註釋。

C28238

在提示的註釋具有一個以上的值,stringValue 和 longValue。請使用 paramn=xxx。

C28239

在引數中的註釋具有兩個值,stringValue 或 longValue 以及 paramn=xxx。請只使用 paramn=xxx。

C28240

引數中的註釋有 param2 但沒有 param1。

C28241

函式的附註參數無法辨認

C28243

函式的註釋需要執行的取值比實際註釋之型別允許的還多。

C28244

函式的附註具有無法剖析的參數/外部附註。

C28245

函式的附註會在非成員函式上附註 'this'。

C28246

函式中的參數附註不符合參數的型別。

C28250

函式不一致的附註:先前的執行個體是否有錯誤發生。

C28251

函式不一致的附註:這個執行個體有錯誤發生。

C28252

函式不一致的附註:參數會在這個執行個體有另一個附註。

C28253

函式不一致的附註:參數會在這個執行個體有另一個附註。

C28254

dynamic_cast()在附註中不支援。

C28262

在函式中找到附註的語法錯誤:

C28263

找到內建的條件式註釋語法錯誤:

C28264

結果清單值必須是常數。

C28267

在函式中找到附註的語法錯誤:

C28272

函式、參數的附註在檢查時,與函式宣告不一致。

C28273

對於函式與函式宣告不一致。

C28275

_Macro_value_ 的參數為空值。

C28279

找到符號的 'begin',但沒有相符的 'end'。

C28280

找到符號的 'end',但沒有相符的 'begin'。

C28282

格式化字串必須在前置條件

C28285

針對函式,在參數中的語法錯誤

C28286

函式的結尾附近發生錯誤。

C28287

函式的 _At_() 附註中有語法錯誤 (無法辨認的參數名稱)。

C28288

函式的 _At_() 附註中有語法錯誤 (無效的參數名稱)。

C28289

對函式來說: ReadableTo 或 WritableTo 沒有有限的規格做為參數。

C28290

函式的附註包含比實際參數數目還多的外部。

C28291

位於 deref 層級 0 的 post null/notnull 對函式是無意義的。

C28300

運算子不相容型別的運算式運算元。

C28301

函式的第一個宣告中沒有附註。

C28302

額外的 _Deref_ 運算子在註解中被找到。

C28303

一個模稜兩可的 _Deref_ 運算子在註解中被找到。

C28304

找到非正確定位 _Notref_ 運算子套用至語彙基元。

C28305

在剖析時語彙基元找到的錯誤。

C28306

在參數中的標記法是逐漸會捨棄的狀態。

C28307

在參數中的標記法是逐漸會捨棄的狀態。

C28350

附註描述條件上不適合的情況:

C28351

附註描述條件中不可以使用動態值 (變數)。