分享方式:


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

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

設定專案的規則集

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

  2. 選擇性地在 [設定] 和 [平台] 清單中,選擇組建設定和目標平台。

  3. 若要在每次使用選取的設定來建置專案時執行 Code Analysis,選取 [建置時啟用 Code Analysis] 核取方塊。 您也可以開啟 [分析] 功能表,然後選擇 [對 ProjectName 執行 Code Analysis] 或 [對檔案執行 Code Analysis],手動執行 Code Analysis。

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

標準 C/C++ 規則集

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

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

Visual Studio 包含這些適用於受控程式碼的標準規則集:

規則集 描述
Microsoft 基本正確性規則 這些規則的重點在於使用架構 API 時發生的邏輯錯誤和常見錯誤。 包含此規則集,以展開最小建議規則所報告的警告清單。
Microsoft 基本設計方針規則 這些規則的重點在於強制執行最佳做法,讓您的程式碼易於了解與使用。 如果您的專案包含程式庫程式碼,或者您想要針對容易維護的程式碼強制執行最佳做法,請包含此規則集。
Microsoft 擴充正確性規則 這些規則會擴充基本正確性規則,盡可能重視所報告的邏輯和架構使用錯誤。 尤其是 COM Interop 和行動應用程式等特定案例。 如果這其中一個案例適用於您的專案,或在專案中發現更多問題,請考慮納入此規則集。
Microsoft 擴充設計方針規則 這些規則會擴充基本設計方針規則,盡可能重視所報告的可用性和可維護性問題。 尤其是命名指導方針。 如果您的專案中包含程式庫程式碼,或者您想要強制執行最高標準來撰寫容易維護的程式碼,請考慮納入此規則集。
Microsoft 全球化規則 這些規則的重點在於應用程式中的資料在不同語言、地區設定和文化特性中使用時無法正確顯示的問題。 如果您的應用程式已當地語系化和/或全球化,請包含此規則集。
Microsoft 受控最小規則 這些規則的重點在於程式碼中最嚴重的問題,而 Code Analysis 對於這些問題而言最為精確。 這些規則的數量很少,而且僅可在有限的 Visual Studio 版本中執行。 搭配其他 Visual Studio 版本使用 MinimumRecommendedRules.ruleset。
Microsoft 受控建議規則 這些規則的重點在於程式碼中最嚴重的問題。 這些問題包括可能的安全性漏洞、應用程式毀損,以及其他重要的邏輯和設計錯誤。 建議您在為專案建立的任何自訂規則集中包含此規則集。
Microsoft 混合 (C++ /CLR) 最小規則 這些規則的重點在於支援通用語言執行平台之 C++ 專案中最嚴重的問題。 這些問題包括可能的安全性漏洞、應用程式毀損,以及其他重要的邏輯和設計錯誤。 建議您將此規則集包含於您為支援通用語言執行平台之 C++ 專案建立的任何自訂規則集中。
Microsoft 混合 (C++ /CLR) 建議規則 這些規則的重點在於支援通用語言執行平台之 C++ 專案中最常見的嚴重問題。 這些問題包括可能的安全性漏洞、應用程式毀損,以及其他重要的邏輯和設計錯誤。 此規則集的設計目的是要在 Visual Studio Professional 版本和更新版本中使用。
Microsoft 安全性規則 此規則集包含所有 Microsoft 安全性規則。 包含此規則集,以將報告的可能安全性問題數目最大化。

包含每個規則:

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

執行程式碼分析

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

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

  • 在 [建置] 功能表上,選擇 [對方案執行 Code Analysis]

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

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

  2. 在 [建置] 功能表上,選擇 [對 專案名稱 執行 Code Analysis]

對檔案執行 Code Analysis:

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

  2. 在 [建置] 功能表中,選擇 [對檔案執行 Code Analysis],或按 Ctrl+Shift+Alt+F7

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

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

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

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

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

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

建立 Code Analysis 警告的工作項目

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

建立適用於一或多個 C/C++ 程式碼警告的工作項目

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

  2. 在警告的捷徑功能表上,選擇 [建立工作項目],然後選擇工作項目類型。

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

  4. 新增任何額外的資訊,然後選擇 [儲存工作項目]

搜尋與篩選 Code Analysis 結果

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

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

  • 依嚴重性篩選警告:根據預設,會將嚴重性 [警告] 指派給 Code Analysis 訊息。 您可以將一或多個訊息的嚴重性指派為自訂規則集中的 [錯誤]。 在 [錯誤清單] 的 [嚴重性] 欄上,選擇下拉式箭號,然後選擇篩選圖示。 選擇 [警告] 或 [錯誤],僅顯示獲指派個別嚴重性的訊息。 選擇 [全選] 以顯示所有訊息。

另請參閱