vs2017 html预览,C++代码分析在Visual Studio 2017 预览版1 上的提高

C++代码分析在Visual Studio 2017 预览版1 上的提高

03/22/2018

7 minutes to read

In this article

[原文发表时间] 2018/3/13

我们正在使配置和使用C++代码分析功能以及15.7的一系列更改变得更加容易。在第一个15.7的预览版本里,我们清除了UI,修正了我们的文档链接,更重要的是简化了分析扩展的配置方式。

如果您不熟悉C++核心检查,它是一个代码分析扩展,可以帮助你更新你的代码使其更加安全,并且可以使用C++ 核心规则里概述的更现代的风格。您可以了解更多的我们在参考页面执行的规则。

默认的C++ 核心检查扩展

我们希望开发人员能够更容易的利用C++ 核心检查的新的检查。之前如果开发人员想要使用C++ 核心检查,不得不为每个项目启动明确的分析扩展。然后,当运行分析的时候,这将会生成大量的核心检查警告,因为在默认情况下,所有的C++ 核心检查警告都是启用的。

从预览版1开始,只要运行代码分析,就会启用C++ Core Check扩展。 我们还更新了Microsoft本机推荐规则和Microsoft本机最小规则,以仅包含最具影响力的C++ 核心检查警告(更多内容见下文)。 我们认为这提供了最好的体验:对项目运行代码分析“正常工作”,无需额外配置。

我们还删除了用于配置分析扩展的UI,因为它不再需要。 我们的目标是使规则集成为代码分析的一站式配置文件。 开发人员需要担心的是他或她想要运行哪些警告,并且引擎会根据规则集智能地启用和禁用扩展和检查程序。 预览1中未完全实现此功能; 剩下的工作将在即将到来的预览中发布。

137.png216.png

禁用C ++核心检查项目

由于此工作仍处于预览状态,因此我们添加了一种方法来恢复之前的行为。 如果C++ 核心检查扩展引起项目问题,可以通过编辑vcxproj文件并添加以下属性来禁用每个项目。

412.png

使用msbuild从命令行构建时,也可以通过传递属性 /p来禁用它:EnableCppCoreCheck = false

如果您发现需要禁用扩展程序,我们想知道您发现的任何阻止问题。使用Visual Studio中的“发送反馈”按钮报告任何问题。

推荐规则集和最小规则集中的新规则

以前,Microsoft本机推荐和Microsoft最小规则集默认情况下都启用了所有C ++ 核心检查警告。这意味着如果你想尝试C ++核心检查并启用扩展,你会得到大量额外的警告。

为了与“推荐”和“最低”规则集的精神保持一致,我们浏览了我们的内部项目,并确定了帮助防止最严重错误的C ++核心检查规则。 “推荐”和“最小”规则集仍包含之前的核心分析器规则,现在还包含高影响力的C ++核心检查规则。如果要在启用所有C ++ 核心检查警告的情况下运行,仍然可以选择“C ++ 核心检查规则”规则集。

Microsoft Native最新版本中的新功能

C26450RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY

C26451RESULT_OF_ARITHMETIC_OPERATION_CAST_TO_LARGER_SIZE

C26452 SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

C26453 LEFTSHIFT_NEGATIVE_SIGNED_NUMBER

C26454RESULT_OF_ARITHMETIC_OPERATION_NEGATIVE_UNSIGNED

C26495 MEMBER_UNINIT

Microsoft Native推荐的新功能

上面的所有最小规则

C26441 NO_UNNAMED_GUARDS

C26444 NO_UNNAMED_RAII_OBJECTS

C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL

318.png

C ++核心检查实验扩展删除

先前版本的Visual Studio包含一个C ++核心检查(实验)选项,用于未准备好发布的规则。我们已经在几个版本中更新了这些规则,现在处理原始指针,所有者指针和生命周期配置文件的规则在主要检查器中实现。一些实验规则并不完全映射到新规则并且被弃用。

以下实验规则已弃用

C26412 DEREF_INVALID_POINTER

C26413 DEREF_NULLPTR

C26420 ASSIGN_NONOWNER_TO_EXPLICIT_OWNER

C26421 ASSIGN_VALID_OWNER

C26422 VALID_OWNER_LEAVING_SCOPE

C26423 ALLOCATION_NOT_ASSIGNED_TO_OWNER

C26424 VALID_ALLOCATION_LEAVING_SCOPE

C26425 ASSIGNING_TO_STATIC

C26499 NO_LIFETIME_TRACKING

适合并完成

我们还花了一些时间修复一些小错误以改进整体C ++代码分析体验。

单击错误导航到当前文档页面,而不是以前版本的Visual Studio的页面。

从不支持代码度量的项目中,从分析菜单中删除了“运行代码度量标准”。

与15.6版本相比,C++ 核心检查现在运行速度显着加快,内存减少多达50%。

添加了一个热键,用于在当前文件上运行代码分析:默认键盘映射中的Ctrl + Shift + Alt + F7。

总结

我们很高兴默认拥有C ++核心检查功能,并且为您的项目设置代码分析工具更简单。希望你会发现C ++代码分析工具更易于使用,新的警告也很有用。下载最新的Visual Studio预览并尝试一下。

如果您在VS 2017中遇到MSVC的其他问题,请通过报告问题选项告诉我们,无论是从安装程序还是Visual Studio IDE本身。对于建议,请通过UserVoice告诉我们。谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值