Share via


快速入門:C/C++ 的程式碼分析

您可以在 C 或 C++ 程式碼上定期執行程式碼分析,以改善您的應用程式品質。 程式碼分析可協助您找出常見的問題和違反良好的程式設計做法。 而且,它發現難以透過測試探索的缺陷。 其警告與編譯器錯誤和警告不同:它會搜尋已知會導致問題的特定程式碼模式。 也就是說,程式碼有效,但仍可能會為您或使用程式碼的其他人員建立問題。

設定專案的規則集

  1. 方案總管 中,開啟專案名稱的快捷方式功能表,然後選擇 [ 屬性 ]。

  2. 或者,在 [ 組態 平臺] 清單中,選擇組建組態和目標平臺。

  3. 若要在每次使用選取的組態建置專案時執行程式碼分析,請選取 [ 在建 置時啟用程式碼分析] 核取方塊。 您也可以開啟 [分析 ] 功能表,然後選擇 [在 ProjectName 執行程式碼分析] 或 [ 在檔案 上執行程式碼分析] 來手動執行程式碼分析。

  4. 選擇您想要使用的規則集 ,或建立 自訂規則集 。 如果使用 LLVM/clang-cl,請參閱 在 Visual Studio 中使用 Clang-Tidy 來設定 Clang-Tidy 分析選項。

標準 C/C++ 規則集

Visual Studio 包含這些適用于機器碼的標準規則集:

規則集 描述
C++ 核心檢查算術規則 這些規則會從 C++ 核心指導方針 強制執行與算數運算相關的 檢查。
C++ 核心檢查界限規則 這些規則會強制執行 C++ 核心指導方針 的界限設定檔。
C++ 核心檢查類別規則 這些規則會強制執行與 C++ 核心指導方針 類別相關的 檢查。
C++ 核心檢查並行規則 這些規則會強制執行與 C++ 核心指導方針 並行相關的 檢查。
C++ 核心檢查 Const 規則 這些規則會從 C++ 核心指導方針 強制執行 const 相關檢查。
C++ 核心檢查宣告規則 這些規則會強制執行與 C++ 核心指導方針 宣告相關的檢查。
C++ 核心檢查列舉規則 這些規則會從 C++ 核心指導方針 強制執行 列舉相關檢查。
C++ 核心檢查實驗性規則 這些規則會收集一些實驗性檢查。 最後,我們預期這些檢查會移至其他規則集或完全移除。
C++ 核心檢查函式規則 這些規則會從 C++ 核心指導方針 強制執行與 函式相關的檢查。
C++ 核心檢查 GSL 規則 這些規則會從 C++ 核心指導方針強制執行與 指導方針 支援程式庫相關的檢查。
C++ 核心檢查存留期規則 這些規則會強制執行 C++ 核心指導方針 的存留期設定檔。
C++ 核心檢查擁有者指標規則 這些規則會強制執行與 C++ 核心指導方針 相關的 owner<T> 資源管理檢查。
C++ 核心檢查原始指標規則 這些規則會強制執行與 C++ 核心指導方針 中原始指標相關的 資源管理檢查。
C++ 核心檢查規則 這些規則會從 C++ 核心指導方針 強制執行檢查的子集。 使用此規則集可包含列舉和實驗性規則集以外的所有 C++ 核心檢查規則。
C++ 核心檢查共用指標規則 這些規則會強制執行與 C++ 核心指導方針 中具有共用指標語意的類型相關的 資源管理檢查。
C++ 核心檢查 STL 規則 這些規則會從 C++ 核心指導方針 強制執行與 C++ 標準程式庫相關的檢查。
C++ 核心檢查樣式規則 這些規則會強制執行與使用 C++ 核心指導方針 之運算式和語句相關的檢查。
C++ 核心檢查類型規則 這些規則會強制執行 C++ 核心指導方針 的型別設定檔。
C++ 核心檢查唯一指標規則 這些規則會強制執行與 C++ 核心指導方針 具有唯一指標語意的類型相關的資源管理檢查。
並行檢查規則 這些規則會在 C++ 中強制執行一組 Win32 並行模式檢查。
並行規則 將 C++ 核心指導方針中的並行規則新增至 並行檢查規則
Microsoft Native Minimum 規則 這些規則著重于原生程式碼中最重要的問題,包括潛在的安全性漏洞和應用程式當機。 建議您將此規則集包含在您為原生專案建立的任何自訂規則集中。
Microsoft 原生建議規則 這些規則著重于原生程式碼中最重要的和常見問題。 這些問題包括潛在的安全性漏洞和應用程式當機。 建議您將此規則集包含在您為原生專案建立的任何自訂規則集中。 此規則集的設計目的是要與 Visual Studio Professional 版本和更新版本搭配使用。 其中包含 Microsoft Native Minimum Rules 中的所有 規則

Visual Studio 包含下列 Managed 程式碼的標準規則集:

規則集 描述
Microsoft 基本正確性規則 這些規則著重于使用架構 API 時發生的邏輯錯誤和常見錯誤。 包含此規則集,以展開最低建議規則所報告的警告清單。
Microsoft 基本設計指導方針規則 這些規則著重于強制執行最佳做法,讓您的程式碼易於瞭解和使用。 如果您的專案包含程式庫程式碼,或您想要強制執行容易維護程式碼的最佳做法,請包含此規則集。
Microsoft 擴充正確性規則 這些規則會擴充基本正確性規則,以最大化回報的邏輯和架構使用錯誤。 特別強調的是特定案例,例如 COM Interop 和行動應用程式。 如果其中一個案例適用于您的專案,或在您的專案中尋找更多問題,請考慮納入此規則集。
Microsoft 延伸設計指導方針規則 這些規則會擴充基本設計指導方針規則,以最大化回報的可用性和可維護性問題。 尤其是命名指導方針。 如果您的專案包含程式庫程式碼,或您想要強制執行撰寫可維護程式碼的最高標準,請考慮納入此規則集。
Microsoft 全球化規則 這些規則著重于當不同語言、地區設定和文化特性使用時,應用程式中的資料無法正確顯示的問題。 如果您的應用程式已當地語系化及/或全球化,請包含此規則集。
Microsoft 受管理的最低規則 這些規則著重于程式碼中最重要的問題,程式碼分析是最精確的問題。 這些規則的數量很少,而且只打算在有限的 Visual Studio 版本中執行。 搭配其他 Visual Studio 版本使用 MinimumRecommendedRules.ruleset。
Microsoft 管理的建議規則 這些規則著重于程式碼中最重要的問題。 這些問題包括潛在的安全性漏洞、應用程式當機,以及其他重要的邏輯和設計錯誤。 我們建議您將此規則集包含在您為專案建立的任何自訂規則集中。
Microsoft Mixed (C++ /CLR) 最小規則 這些規則著重于支援 Common Language Runtime 的 C++ 專案中最重要的問題。 這些問題包括潛在的安全性漏洞、應用程式當機,以及其他重要的邏輯和設計錯誤。 建議您將此規則集包含在您為支援 Common Language Runtime 的 C++ 專案建立的任何自訂規則集中。
Microsoft Mixed (C++ /CLR) 建議的規則 這些規則著重于支援 Common Language Runtime 的 C++ 專案中最常見的和關鍵問題。 這些問題包括潛在的安全性漏洞、應用程式當機,以及其他重要的邏輯和設計錯誤。 此規則集是專為在 Visual Studio Professional 版和更新版本中使用而設計。
Microsoft 安全性規則 此規則集包含所有 Microsoft 安全性規則。 包含此規則集,以最大化所報告的潛在安全性問題數目。

若要包含每個規則:

規則集 描述
Microsoft 所有規則 此規則集包含所有規則。 執行此規則集可能會導致回報大量警告。 使用此規則集來全面瞭解程式碼中的所有問題。 它可協助您決定哪些更專注的規則集最適合用於您的專案。

執行程式碼分析

在 [專案屬性] 對話方塊的 [ 程式碼分析 ] 頁面上,您可以設定每次建置專案時要執行的程式碼分析。 您也可以手動執行程式碼分析。

若要針對方案執行程式碼分析:

  • 在 [ 建置] 功能表中,選擇 [ 在方案 上執行程式碼分析]。

若要針對專案執行程式碼分析:

  1. 在方案總管中,選取專案的名稱。

  2. 在 [建置] 功能表中,選擇 [ 在專案名稱 執行程式碼分析]。

若要在檔案上執行程式碼分析:

  1. 在方案總管中,選取檔案名。

  2. 在 [建置 ] 功能表中,選擇 [ 在檔案 上執行程式碼分析],或按 Ctrl+Shift+Alt+F7

    編譯專案或方案並執行程式碼分析。 結果會出現在 [錯誤清單] 視窗中。

分析和解決程式碼分析警告

[錯誤清單] 視窗會列出找到的程式碼分析警告。 結果會顯示在資料表中。 如需特定警告的詳細資訊,第一個資料行會包含展開控制項。 選擇它以展開顯示,以取得問題的其他資訊。 如果可能的話,程式碼分析會顯示導致警告的行號和分析邏輯。

如需警告的詳細資訊,包括問題的可能解決方案,請選擇 [程式碼] 資料行中的警告識別碼,以顯示其對應的線上說明文章。

按兩下警告,將游標移至導致 Visual Studio 程式碼編輯器中警告的程式程式碼。 或者,在選取的警告上按 Enter。

在您了解問題之後,就可以在程式碼中解決問題。 然後,重新執行程式碼分析,以確定警告不再出現在錯誤清單中。

建立程式碼分析警告的工作專案

若要記錄來自 Visual Studio 的錯誤,您可以使用工作項目追蹤功能。 若要使用這項功能,您必須連線到 Azure DevOps Server 的實例(先前稱為 Team Foundation Server)。

建立一或多個 C/C++ 程式碼警告的工作專案

  1. 在 [錯誤清單] 中,展開並選取警告

  2. 在警告的快捷方式功能表上,選擇 [建立工作專案 ],然後選擇工作專案類型。

  3. Visual Studio 會建立選定警告的單一工作項目,並在 IDE 的文件視窗中顯示工作項目。

  4. 新增任何其他資訊,然後選擇 [ 儲存工作專案 ]。

搜尋和篩選程式代碼分析結果

您可以在多專案方案中搜尋警告訊息的詳細清單,以及篩選警告。

  • 若要依標題或警告識別碼 篩選警告:請在 [搜尋錯誤清單] 方塊中輸入 關鍵字。

  • 若要依嚴重性 篩選警告:根據預設,程式碼分析訊息會指派警告的 嚴重性。 您可以將一或多個訊息的嚴重性指派為 自訂規則集中的錯誤。 在 [ 錯誤清單 ] [嚴重性] 資料行上,選擇下拉式箭號,然後選擇篩選圖示。 選擇 [警告 ] 或 [錯誤] 只顯示指派個別嚴重性的郵件。 選擇 [ 全部 選取] 以顯示所有訊息。

另請參閱