首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VS2019:静态分析问题修复,优化和其他更新

C++静态分析开发团队一直致力于帮助C++开发者尽可能地编写安全的代码。我们正在添加越来越多的代码安全检查,并解决来自于C++开发社区里反馈的影响比较广泛的问题。

在此,我们感谢一直以来陪伴着我们的用户,你们的使用反馈是我们前进的方向。

在今天的文章中,我将汇总从VS2019 v16.9到v16.10版本中有关代码分析和CppCoreCheck的功能改进和问题修复。

新特性

> C26479 是一个新的,可以支持F.48的警告信息,请不要使用 std::move 返回局部变量。

> C26458 是一个新警告,用作 C26446 路径敏感版本。 有关它的更多信息,我们在5月中旬发表了一篇专门的博客文章,感兴趣的读者可以参考那篇文章。

> C26800 用于检测变量在移出后是否使用。它不再是实验规则,现在是默认规则的一部分。

> 最初在v16.2中引入的有关生命周期的两个警告:C26810 和 C26811,它们不再是实验性的,可以通过选择默认规则集或“CppCoreCheckLifetimeRules”来使用。

> 仅当指定了编译选项

/analyze:log:includesuppressed时,才会填充Sarif抑制属性。 这对于审核一份抑制后的代码库很有用。

分析崩溃修复

> 修复了由初始化程序列表中的空括号初始化程序导致的分析引擎崩溃,如下图所示:

> 修复了使用 WDK 中的驱动程序插件时分析引擎崩溃的问题。

问题修复和功能改进

> C.35 不再对标记为 final 的类中标记为 override 的函数发出警告。

> C26434 的消息字符串已更新以删除对 C.128 的引用。 此警告与 C.128 不一致,但仍然是防止隐藏成员函数的有用警告。

> 修复有关C26414的误报,具体来说,它主要是针对从std::make_unique返回的某些唯一指针,在返回这些指针的时候,调用者没有参数传递给std::make_unique。如下图所示:

> C26800 – 使用移动对象。

避免在被调用函数没有右值引用参数的函数体中进行分析。

修复了使用协程时出现的误报。

> 改进了C26812的检测,“prefer enum class over enum”

> 修复了代码包含if表达式时C6285和C6237的误报。如下图所示:

> 协程检查的改进

修复了导致针对错误行发出警告的问题。

使用右值引用改进了对案例的检测。

使用std::suspend_never 复了代码中的误报

> 修复了由于使用 std::optional 导致的本地生命周期检查中的误报,如下图所示:

> 修复了if表达式块中代码的边界警告,如下图所示:

> 修复了包含非ASCII字符的文件路径的分析失败问题。

> 对uninit检查的一般性改进。

总结

编写健壮的应用程序,主要还是通过编写安全的代码。

我们应该追求的是:不仅能干完活,还要”干得漂亮”。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新的开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《Static Analysis Fixes, Improvements, and Updates in Visual Studio 2019 version 16.10》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210622A0ABTX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券