建議使用 Visual Studio 2017

原生最小規則規則集

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

Microsoft 原生最小規則的重點在於機器碼中最關鍵的問題,包括潛在的安全性漏洞和應用程式損毀。 您應該在您為原生專案建立的任何自訂規則集中都包含這個規則集。

規則說明
C6001使用尚未初始化的記憶體。
C6011取值 NULL 指標。
C6029使用未經確認的值 。
C6053從呼叫的無終止。
C6059終結串連
C6063遺漏格式化函式中的字串引數。
C6064遺漏整格式化函式中的整數引數。
C6066遺漏格式化函式中的指標引數。
C6067遺漏格式化函式中的字串指標引數。
C6101傳回未初始化的記憶體。
C6200索引超出緩衝區最大值
C6201索引超出堆疊緩衝區最大值
C6270遺漏格式化函式中的浮點引數。
C6271格式化函式中的額外引數。
C6272格式化函式中的非浮點引數。
C6273格式化函式中的非整數引數。
C6274格式化函式中的非字元引數。
C6276無效的字串轉換。
C6277無效的 CreateProcess 呼叫
C6284無效的格式化函式中的物件引數。
C6290Logical-Not Bitwise-And 優先順序
C6291Logical-Not Bitwise-Or 優先順序。
C6302無效的格式化函式中的字串引數。
C6303無效的格式化函式中的寬字元字串引數。
C6305不相符的大小和使用數目。
C6306不正確的變數引數函式呼叫。
C6328可能的引數型別不符。
C6385讀取滿溢
C6386撰寫滿溢
C6387無效的參數值。
C6500無效的屬性
C6501發生衝突的屬性值。
C6503參考不可以是空值。
C6504在非指標的空值。
C6505在 void的MustCheck
C6506在非指標或陣列的緩衝區大小。
C6507在取值零的空值不符
C6508常數的寫入權限。
C6509在之前狀況中回傳使用過
C6510在非指標的空值結束
C6511MustCheck 屬性必須為 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附註的未預期的附註錯誤。
C28021被附註的參數必須是指標。
C28182正在取值 NULL 指標。 指標含有與另一個指標的空值。
C28202非靜態成員之不合法的參考。
C28203類別成員的參考模稜兩可。
C28205Success_ 或 _On_failure_ 用於不合法的內容中:
C28206左運算元指向結構,請使用 '->'。
C28207左運算元是結構,請使用 '.'。
C28210On_failure_ 內容的註釋不能明確在pre context 中
C28211SAL_context 必須有靜態內容名稱。
C28212附註必須有預期的指標運算式。
C28213_Use_decl_annotations_ 附註必須不需修改就能用來參考預先宣告。
C28214屬性參數名稱必須是 p1...p9。
C28215typefix 不能套用到已經有 typefix 的參數
C28216checkReturn 附註只適用於為特定函式參數的後置條件。
C28217對於函式,附註的參數數目與其所找到的不符。
C28218對於函式參數,附註的參數與在檔案找到的不符。
C28219註釋中標註的參數需要列舉的成員
C28220整數運算式為附註預期標記法的參數
C28221用於附註的參數預期的字串運算式。
C28222__yes、 __no 或 __maybe為預期的附註
C28223未找到預期的附註參數語彙基元/識別項。
C28224附註需要參數。
C28225沒有找到附註中參數所需的正確數目
C28226附註不可以同時是 PrimOp (在目前宣告中)。
C28227附註不可以同時是 PrimOp (請參閱預先宣告)。
C28228附註參數:無法使用附註中的型別
C28229附註不支援參數。
C28230參數的型別沒有成員。
C28231附註只在陣列有效
C28232pre、post 或 deref 未套用至任何附註。
C28233pre、post 或 deref 已套用至區塊。
C28234__at 運算式不套用於目前函式。
C28235函式無法單獨做為附註。
C28236附註不能用在運算式中。
C28237不再支援參數的註釋。
C28238在參數的註釋具有一個以上的值,stringValue 和 longValue。 使用 paramn=xxx
C28239在參數的註釋具有兩個值,stringValue 或 longValue 以及 paramn=xxx。 請只使用 paramn=xxx
C28240參數的註釋有 param2 但沒有 param1。
C28241函式的附註參數無法辨認
C28243函式的註釋需要執行的取值比實際註釋之型別允許的還多。
C28245函式的附註會在非成員函式上附註 'this'。
C28246函式中的參數附註不符合參數的型別。
C28250函式不一致的附註:先前的執行個體有錯誤發生。
C28251函式不一致的附註:這個執行個體有錯誤發生。
C28252函式不一致的附註:參數在這個執行個體有另一個附註。
C28253函式不一致的附註:參數在這個執行個體有另一個附註。
C28254dynamic_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在剖析時語彙基元找到的錯誤。
C28350附註描述條件上不適合的情況:
C28351附註描述條件中不可以使用動態值 (變數)。
顯示: