可以通过常规地运行C 或 C++ 代码的代码分析以提高应用程序的质量。 代码分析可帮助发现常见问题和违反良好编程实践的行为。 另外,它可以找到难以通过测试发现的缺陷。 其警告不同于编译器错误和警告:它会搜索已知会导致问题的特定代码模式, 即,有效的但仍可能会给你或其他使用者造成问题的代码。
配置项目的规则集
在“解决方案资源管理器”中打开项目名称的快捷菜单,然后选择“属性”。
(可选)在“配置”和“平台”列表中,选择生成配置和目标平台。
若要在每次使用所选配置生成项目时运行代码分析,请选中“生成时启用代码分析”复选框。 还可以手动运行代码分析,方法是打开“分析”菜单,然后选择“对 ProjectName 运行代码分析”或“对文件运行代码分析”。
选择要使用的规则集,或创建自定义规则集。 如果使用 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 常量规则 | 这些规则强制执行 C++ Core Guidelines 中的常量相关检查。 |
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 Edition 和更高版本一起使用。 它包括 Microsoft 本机最低要求规则中的所有规则。 |
Visual Studio 包含以下托管代码标准规则集:
规则集 | 说明 |
---|---|
Microsoft 基本正确性规则 | 这些规则侧重于在使用框架 API 时所犯的逻辑错误和常见错误。 包含此规则集可以扩展由最低建议规则报告的警告列表。 |
Microsoft 基本设计准则规则 | 这些规则侧重于强制实施最佳做法,以使代码易于理解和使用。 如果你的项目包含库代码,或者你想要强制实施易于维护的代码的最佳做法,请包含此规则集。 |
Microsoft 扩展的正确性规则 | 这些规则扩展了基本正确性规则,以最大程度地报告逻辑错误和框架使用错误。 这里特别强调特定方案,如 COM 互操作性和移动应用程序。 如果其中一个方案适用于你的项目或适用于查找项目中的更多问题,请考虑包含此规则集。 |
Microsoft 扩展的设计准则规则 | 这些规则扩展了基本设计准则规则,以最大程度地报告可用性和可维护性问题。 重点是命名准则。 如果你的项目包含库代码,或者你想要强制执行有关编写可维护代码的最高标准,请考虑包含此规则集。 |
Microsoft 全球化规则 | 这些规则侧重于导致应用程序中的数据在以不同语言、区域设置和区域性中使用时无法正确显示的问题。 如果你的应用程序已本地化和/或全球化,请包含此规则集。 |
Microsoft 托管的最低要求规则 | 这些规则侧重于代码分析结果最准确的代码中的最关键问题。 这些规则的数量很少,它们只能在有限的 Visual Studio 版本中运行。 将 MinimumRecommendedRules.ruleset 与其他 Visual Studio 版本一起使用。 |
Microsoft 托管的建议规则 | 这些规则侧重于代码中最关键的问题。 这些问题包括潜在安全漏洞、应用程序故障以及其他重要的逻辑和设计错误。 建议在为项目创建的任何自定义规则集中包含此规则集。 |
Microsoft 混合 (C++ /CLR) 最低要求规则 | 这些规则侧重于支持公共语言运行时的 C++ 项目中的最关键问题。 这些问题包括潜在安全漏洞、应用程序故障以及其他重要的逻辑和设计错误。 建议将此规则集包含在为支持公共语言运行时的 C++ 项目创建的任何自定义规则集中。 |
Microsoft 混合 (C++ /CLR) 建议规则 | 这些规则侧重于支持公共语言运行时的 C++ 项目中的最常见和最关键问题。 这些问题包括潜在安全漏洞、应用程序故障以及其他重要的逻辑和设计错误。 此规则集只能在 Visual Studio Professional Edition 和更高版本中使用。 |
Microsoft 安全规则 | 此规则集包含所有 Microsoft 安全规则。 包含此规则集可以最大程度地增加报告的潜在安全问题的数量。 |
包含每条规则:
规则集 | 说明 |
---|---|
Microsoft 所有规则 | 此规则集包含所有规则。 运行此规则集可能会导致报告大量的警告。 使用此规则集可以全面了解代码中的所有问题。 它可以帮助你确定哪些有针对性的规则集最适合对项目运行。 |
运行代码分析
在“项目属性”对话框的“代码分析”页中,可将代码分析配置为在每次生成项目时都运行。 还可手动运行代码分析。
对解决方案运行代码分析:
- 在“生成”菜单中,选择“对解决方案运行代码分析”。
对项目运行代码分析:
在解决方案资源管理器中选择项目的名称。
在“生成”菜单上,选择“对 Project Name 运行代码分析”。
若要对文件运行代码分析,请执行以下操作:
在解决方案资源管理器中选择文件的名称。
在“生成”菜单中,选择“对文件运行代码分析”或按 Ctrl+Shift+Alt+F7。
编译项目或解决方案,并运行代码分析。 结果将显示在“错误列表”窗口中。
分析和解决代码分析警告
“错误列表”窗口会列出已发现的代码分析警告。 结果显示在表格中。 如果提供了有关特定警告的详细信息,则第一列会包含一个展开控件。 选择该控件可以展开有关问题的更多信息的显示内容。 如果可能,代码分析会显示行号,并分析导致该警告的逻辑。
要查看有关警告的详细信息,包括问题的可能解决方法,请在“代码”列中选择警告 ID 以显示其相应的联机帮助文章。
双击警告,将光标移动到导致代码编辑器中警告的代码行。 或者,在所选的警告上按 Enter。
了解问题后,可在代码中解决该问题。 然后,重新运行代码分析以确保警告不再出现在错误列表中。
针对代码分析警告创建工作项
可以使用 Visual Studio 中的工作项跟踪功能来记录 bug。 若要使用此功能,必须连接到 Azure DevOps Server(以前称为 Team Foundation Server)的实例。
为一个或多个 C/C++ 代码警告创建工作项
在错误列表中展开并选择警告
在警告的快捷菜单中选择“创建工作项”,然后选择工作项类型。
Visual Studio 为选定的警告创建一个工作项,并在 IDE 的文档窗口中显示该工作项。
添加其他任何信息,然后选择“保存工作项”。
搜索和筛选代码分析结果
可搜索冗长的警告消息列表,也可在多项目解决方案中筛选警告。
按标题或警告 ID 筛选警告:在“搜索错误列表”框中输入关键字。
按严重性筛选警告:默认情况下,将为代码分析消息分配“警告”严重性。 在自定义规则集中,可将一个或多个消息的严重性分配为“错误”。 在“错误列表”的“严重性”列中选择下拉箭头,然后选择筛选器图标。 选择“警告”或“错误”以仅显示分配有相应严重性的消息。 选择“全选”以显示所有消息。