原生建議規則規則集
這些建議的規則的重點在於機器碼中最關鍵且常見的問題,包括潛在的安全性漏洞和應用程式損毀。您應該在您為原生專案建立的任何自訂規則集中都包含這個規則集。這個規則集是設計用來與 Visual Studio Professional (含) 以上版本搭配使用。
規則 |
描述 |
---|---|
使用尚未初始化的記憶體。 |
|
取值 NULL 指標。 |
|
使用未經確認的值 。 |
|
忽略傳回值 |
|
從呼叫的無終止。 |
|
零終止遺失。 |
|
終結串連 |
|
遺漏字串中的引數去格式化函式。 |
|
遺漏整數引數去格式化函式。 |
|
遺漏指標引數去格式化函式 |
|
遺漏字串中的指標引數去格式化函式。 |
|
傳回未初始化的記憶體。 |
|
索引超出緩衝區最大值 |
|
索引超出堆疊緩衝區最大值 |
|
BOOL 到HRESULT的轉換無效 |
|
從BOOL 到HRESULT的轉換無效 |
|
無效的HRESULT 編譯器插入轉型 BOOL |
|
無效的 HRESULT 測試與 NOT |
|
無效的 HRESULT 比較為-1。 |
|
無效的 HRESULT 指派為-1。 |
|
為布林值的無效用法 HRESULT |
|
非零常數與邏輯 OR |
|
非零的常數與邏輯 OR |
|
零與邏輯And遺失副作用 |
|
強制區域回溯 |
|
建立空的 DACL |
|
未發行的位址描述項 |
|
未受保護使用的Alloca |
|
請使用來結束執行緒 |
|
無作用程式碼在Bitwise-Or限制的切換 |
|
為位元組算術的使用。 |
|
過多的堆疊的使用方式 |
|
在迴圈中使用 Alloca |
|
轉換的遺失括號 |
|
忽略的指標取值 |
|
遺漏浮點引數去格式化函式。 |
|
額外引數去格式化函式。 |
|
非浮點引數去格式化函式。 |
|
非整數引數去格式化函式。 |
|
非字元引數去格式化函式。 |
|
無效的資料轉換。 |
|
無效的 CreateProcess 呼叫 |
|
Array-New Scalar-Delete 不相符 |
|
Array-New Scalar-Delete的不相符 |
|
記憶體配置解除配置不相符 |
|
位元關聯的優先順序 |
|
指派會取代測試 |
|
原始Array-New Scalar-Delete不相符 |
|
無效的物件引數去格式化函式 |
|
邏輯 OR 常數 |
|
非零邏輯或遺失的副作用 (Side Effect)。 |
|
重複測試 |
|
相互包含邏輯和為 False |
|
互斥邏輯或是 true。 |
|
Logical-Not Bitwise-Or 優先順序 |
|
Logical-Not Bitwise-Or的優先順序。 |
|
從最大值向上來做計數。 |
|
從最小值來向下計數。 |
|
從未執行迴圈主體 |
|
無限迴圈。 |
|
只執行一次的迴圈 |
|
移位的結果會轉換為較大的大小 |
|
為布林值比較的 Bitfield |
|
無效的字串引數去格式化函式。 |
|
無效的寬字元字串引數去格式化函式。 |
|
不相符的大小和使用數目。 |
|
不正確的變數引數函式呼叫。 |
|
Realloc 遺漏。 |
|
不合法的例外狀況篩選條件常數 |
|
例外狀況繼續執行迴圈 |
|
Bitwise-Or的優先順序。 |
|
不是非互補。 |
|
例外狀況繼續搜尋 |
|
以逗號忽略 |
|
非字串複本的字串比較 |
|
可能的引數型別不符。 |
|
VirtualFree 無效旗標 |
|
VirtualFree 無效的參數。 |
|
VirtualFree 無效的大小 |
|
遺漏處理序控制代碼 |
|
關閉資訊遺失。 |
|
項目計數位元組計數緩衝區滿溢 (Buffer Overrun) |
|
指標大小小節。 |
|
讀取滿溢 |
|
撰寫滿溢 |
|
無效的參數值。 |
|
無效的參數值。 |
|
無效的屬性 |
|
發生衝突的屬性值。 |
|
參考不可以是空值。 |
|
在非指標的空值。 |
|
在 void的MustCheck |
|
在非指標或陣列的緩衝區大小。 |
|
在取值零的空值不符 |
|
常數的寫入權限。 |
|
在之前狀況中回傳使用過 |
|
在非指標的空值結束 |
|
'MustCheck' 屬性必須為 Yes 或 No。 |
|
沒有緩衝區大小的項目大小。 |
|
緩衝區大小超過陣列大小 |
|
在非指標的緩衝區大小。 |
|
在屬性中沒有屬性。 |
|
在不可讀取緩衝區的有效大小 |
|
在非可寫入緩衝區的可寫入的大小 |
|
無效的註釋: 'NeedsRelease' 屬性的值必須為 Yes 或 No。 |
|
無效的大小指標值的字串。 |
|
無效的資料型別 |
|
無效的字串參數大小 |
|
無效的字串大小不可能執行到的位置。 |
|
無效的字串緩衝區型別大小 |
|
無效的註釋: NeedsRelease 屬性在 void 型別的值不能使用。 |
|
無法辨認的格式字串樣式 |
|
在這個函式上使用屬性附註會使其所有存在的 __declspec 附註無效。 |
|
無效的大小規格: 無法剖析運算式 |
|
無效的 Deref=或 Notref=: 無法剖析運算式 |
|
Yes/No/Maybe值不是有效的。 |
|
值不是字串。 |
|
此值不是數值。 |
|
未預期的附註表示錯誤 |
|
附註的引數的預期數字不符合附註的引數的實際數目 |
|
附註的未預期的附註錯誤。 |
|
無法儲存 XML的記錄檔。 |
|
競爭情形 |
|
不正確地使用連鎖作業 |
|
持有鎖定的呼叫端失敗 |
|
釋放鎖定的呼叫端失敗 |
|
呼叫端不可以有任何鎖定。 |
|
不會釋放鎖定。 |
|
無法取得或維持鎖定 |
|
釋放鎖定 unheld |
|
並行 SAL 附註錯誤 |
|
這個呼叫的運算式不是 true。 |
|
被附註的參數必須是指標。 |
|
這個函式上的函式類別與定義所用之 typedef 上的函式類別不符: |
|
指派或傳遞的函式應該至少有一個的 _Function_class_ 附註類別 |
|
要指派的函式指標會以函式類別標記附註,該類別並未包含在函式類別中。 |
|
實際參數的型別應要完全符合型別: |
|
透過連鎖的函式存取的變數必須透過連鎖的函式永遠存取。 |
|
存取區域變數透過連鎖的函式 |
|
必須在 try/except 區塊內呼叫函式 |
|
變數引數應改成 (常值) 常數。 |
|
常數引數應改成變數。 |
|
考慮使用另一個函式。 |
|
錯誤附註 |
|
絕對不能從 try/except 區塊內呼叫函式 |
|
正在將引數傳遞給需要物件指標 (而非指標的指標) 的函式: |
|
正在取值 NULL 指標。指標含有與另一個指標的空值。 |
|
引數可以是一個值,而且是在指標中找到之值的複本 |
|
變數必須檢查的值。 |
|
這個需求不是內容的。(這個運算式都不是評估為 True)。 |
|
非靜態成員之不合法的參考。 |
|
類別成員的參考模稜兩可。 |
|
Success_ 或 _On_failure_ 用於不合法的內容中: |
|
左運算元指向結構,請使用 '->'。 |
|
左運算元是結構,請使用 '.'。 |
|
符號的宣告在有衝突的宣告。 |
|
On_failure_ 內容的註釋不能在明確在pre context 中 |
|
SAL_context 必須有靜態內容名稱。 |
|
為附註預期的指標運算式 |
|
_Use_decl_annotations_ 附註必須不需修改就能用來參考預先宣告。 |
|
屬性參數名稱必須是 p1...p9。 |
|
typefix 不能套用到已經有 typefix 的參數 |
|
checkReturn 附註只適用於為特定函式參數的後置條件。 |
|
對於函式附註的參數數目與在其所找到的不符。 |
|
針對函式 paramteer,附註的參數不符合在檔案中尋找的。 |
|
註釋中標註的參數需要列舉的成員 |
|
整數運算式為附註預期標記法的參數 |
|
用於附註的參數預期的字串運算式。 |
|
__yes、 __no 或 __maybe為預期的附註 |
|
附註參數預期語彙基元/識別項。 |
|
附註需要的參數。 |
|
沒有找到附註中參數所需的正確數目 |
|
附註不可以同時是 PrimOp (在目前宣告中)。 |
|
附註不可以同時是 PrimOp (請參閱預先宣告)。 |
|
附註參數:無法使用附註中的型別 |
|
附註不支援參數。 |
|
參數的型別沒有成員。 |
|
附註只在陣列有效 |
|
pre、post 或 deref 未套用至任何附註。 |
|
pre、post 或 deref 已套用至區塊。 |
|
__at 運算式不套用於目前函式。 |
|
函式無法單獨做為附註。 |
|
附註不能用在運算式中。 |
|
不再支援註釋。 |
|
在提示的註釋具有一個以上的值,stringValue 和 longValue。請使用 paramn=xxx。 |
|
在引數中的註釋具有兩個值,stringValue 或 longValue 以及 paramn=xxx。請只使用 paramn=xxx。 |
|
引數中的註釋有 param2 但沒有 param1。 |
|
函式的附註參數無法辨認 |
|
函式的註釋需要執行的取值比實際註釋之型別允許的還多。 |
|
函式的附註具有無法剖析的參數/外部附註。 |
|
函式的附註會在非成員函式上附註 'this'。 |
|
函式中的參數附註不符合參數的型別。 |
|
函式不一致的附註:先前的執行個體是否有錯誤發生。 |
|
函式不一致的附註:這個執行個體有錯誤發生。 |
|
函式不一致的附註:參數會在這個執行個體有另一個附註。 |
|
函式不一致的附註:參數會在這個執行個體有另一個附註。 |
|
dynamic_cast()在附註中不支援。 |
|
在函式中找到附註的語法錯誤: |
|
找到內建的條件式註釋語法錯誤: |
|
結果清單值必須是常數。 |
|
在函式中找到附註的語法錯誤: |
|
函式、參數的附註在檢查時,與函式宣告不一致。 |
|
對於函式與函式宣告不一致。 |
|
_Macro_value_ 的參數為空值。 |
|
找到符號的 'begin',但沒有相符的 'end'。 |
|
找到符號的 'end',但沒有相符的 'begin'。 |
|
格式化字串必須在前置條件 |
|
針對函式,在參數中的語法錯誤 |
|
函式的結尾附近發生錯誤。 |
|
函式的 _At_() 附註中有語法錯誤 (無法辨認的參數名稱)。 |
|
函式的 _At_() 附註中有語法錯誤 (無效的參數名稱)。 |
|
對函式來說: ReadableTo 或 WritableTo 沒有有限的規格做為參數。 |
|
函式的附註包含比實際參數數目還多的外部。 |
|
位於 deref 層級 0 的 post null/notnull 對函式是無意義的。 |
|
運算子不相容型別的運算式運算元。 |
|
函式的第一個宣告中沒有附註。 |
|
額外的 _Deref_ 運算子在註解中被找到。 |
|
一個模稜兩可的 _Deref_ 運算子在註解中被找到。 |
|
找到非正確定位 _Notref_ 運算子套用至語彙基元。 |
|
在剖析時語彙基元找到的錯誤。 |
|
在參數中的標記法是逐漸會捨棄的狀態。 |
|
在參數中的標記法是逐漸會捨棄的狀態。 |
|
附註描述條件上不適合的情況: |
|
附註描述條件中不可以使用動態值 (變數)。 |