使用代码分析工具分析应用程序质量

Visual Studio 2013 的所有版本均提供代码分析窗口。

代码分析功能

代码分析窗口

代码分析警告现在显示在代码分析工具窗口上。该窗口可帮助你管理和解决代码分析警告。

筛选器警告消息

在窗口中,可以按关键字、项目和严重性来筛选“代码分析”窗口中的消息。

代码编辑器突出显示

在代码分析窗口中选择一条消息会在源代码编辑器中突出显示触发消息的行。

禁止显示 C++ 消息

在代码分析窗口中,可以向禁止显示所选警告的源代码中插入杂注。

C++ 规则集

如同托管代码一样,你现在通过创建或运行规则集来指定想要应用于代码分析运行的分析规则。

对 Windows 应用商店应用程序的支持

可以在 Windows 应用商店应用中的 Visual Basic、C# 和 C/++ 代码上运行代码分析。有关详细信息,请参阅 Windows 开发人员中心中的用 Visual Studio 代码分析功能分析 Windows 应用商店应用的代码质量

新 C++Concurrency 警告

新的并发警告帮助你确保锁定多线程 C/C++ 程序中的规范。分析器检测到大量并发 bug,包括潜在争用条件、锁定顺序颠倒、调用方/被调用方锁定协定冲突和同步操作不匹配。

C26100

争用条件。变量 <var> 应受到锁 <lock> 的保护。

C26101

未能正确对变量 <var> 使用互锁操作。

C26105

锁定顺序冲突。获取级别为 <level> 的锁 <lock> 导致顺序颠倒。

C26110

调用方未能在调用函数 <func> 之前持有锁 <lock>。

C26111

调用方未能在调用函数 <func> 之前释放锁 <lock>。

C26112

调用方不能在调用 <func> 之前持有任何锁。

C26115

未能在函数 <func> 中释放锁 <lock>。

C26116

未能在 <func> 中获取或持有锁 <lock>。

C26117

在函数 <func> 中释放未持有的锁 <lock>。

C26130

在函数 <func> 处缺少注释 _Requires_lock_held_(<lock>) 或 _No_competing_thread_。否则这可能是一个争用条件。变量 <var> 应受到锁 <lock> 的保护。

C26135

在函数 <func> 处缺少注释 <annotation>。

C26140

并发 SAL 注释错误

C26160

调用方可能无法在调用函数 <func> 之前持有锁 <lock>。

C26165

可能无法释放锁

C26166

可能无法在函数 <func> 中获取或持有锁 <lock>。

C26167

可能在函数 <func> 中释放未持有的锁 <lock>。

C28101

驱动程序模块已推断出当前函数的类型不正确

C28182

取消引用 NULL 指针

本节内容

托管代码分析

针对托管代码的代码分析提供有关托管程序集的信息,例如 Microsoft .NET Framework 设计准则中规定的编程和设计规则的冲突。警告消息标识任何相关的编程和设计问题,如有可能,还提供有关如何修复问题的信息。

C++ 代码分析

C/C++ 代码分析工具为开发人员提供有关其 C/C++ 源代码中可能存在的缺陷的信息。该工具报告的常见编码错误包括缓冲区溢出、内存未初始化、null 指针取消引用,以及内存和资源泄漏。

驱动程序的代码分析

通过系统地分析驱动程序源代码,代码分析工具可以帮助提高驱动程序的稳定性和可靠性。

  • Analyzing Driver Quality by Using Code Analysis Tools
    驱动程序代码分析是一个编译时静态验证工具,该工具可检测 C 和 C++ 程序中的基本编码错误,并且该工具包括一个专用模块,该模块设计用于检测(主要)内核模式驱动程序代码中的错误。Static Driver Verifier (SDV) 是一个静态验证工具,可以系统分析 Windows 内核模式驱动程序的源代码。SDV 确定驱动程序是否与 Windows 操作系统内核正确交互。

  • Code Analysis for Drivers Warnings
    介绍驱动程序代码分析在驱动程序代码中检测到可能的错误时报告的警告。

本节中的其他主题

  1. Viewing Code Analysis Messages

  2. 利用团队项目签入策略提高代码质量

更多代码分析信息

利用团队项目签入策略提高代码质量

相关任务

  1. 测量托管代码的复杂性和可维护性

  2. 使用单元测试验证代码