Visual Studio静态分析组件更新一览

Visual Studio静态分析组件更新一览

作者:BlogUpdater |  时间:2021-09-14 |  浏览:346 |  评论已关闭 条评论

咱们C++静态分析团队的一个主要目标就是:让广大的C++开发者编写尽可能安全的代码。
一直以来,我们一直在持续地向静态分析组件中添加新的安全代码检查并处理开发者报告的各种Bug。感谢你们。

下面我汇总了所有从Visual Studio 2019 v16.10 到 v16.11之间所有的Bug修复。请注意,16.11版本Visual Studio最后的non-servicing发布版本,也就是说,我们将把主要精力放在组件的稳定性和细小的优化上,而不是开发新的功能(所有新的功能将在17.0分支中加入)。同时,我们也花了些功夫优化了一些代码检查项目的性能。

> 澄清了警告C26455。旧版本的警告信息隐含了代码中有一个生存期的问题。而在新版本中,我们将警告信息修改为:”请不要将gsl::span或者std::string_view赋值给一个引用。它们很容易创建并且它们不是底层数据的所有者。(gsl.view)”

> 通过遵循C26444中的生存期规则,我们修复了下图中的一个假阳性误报:

> 修复了在抑制(suppression)中使用ALL_CPPCORECHECK_WARNINGS不会抑制(suppress)C26457的问题。

> 修复了某些控制流可能会诱使并发检查发出误报警告的问题。

> 修复了并发检查中由于展开路径建模不正确而导致的误报(对于例外情况)。 这修复了下图中的误报。 以前,分析会沿着构造函数调用的异常路径进行(在异常路径中没有获取锁),从而导致错误警告。

> 修复了在代码分析期间依赖于保证复制省略(guaranteed copy elision)的代码片段编译失败。如下图所示:

> 修复了导致用于指定头文件的/external选项覆盖CAExcludePath并为外部文件生成警告的错误。

> 代码分析检查组件的性能改进,该组件报告有关误用”VARIANT”的警告(警告C33001、C33004 和 C33005)。 有关这些警告的更多信息,请参阅“C++ 代码分析的新安全规则”。

> 码分析检查组件的性能改进,该组件报告关于将枚举值误用为索引的警告(警告 C33010 和 C33011)。有关这些警告的更多信息,请参阅”C++ 代码分析中的更多安全规则”。 改进了与指针安全相关的C++核心指南检查的性能。在此处查看 OWNER_POINTER、RAW_POINTER、UNIQUE_POINTER和SHARED_POINTER组。

> 修复了在单个编译器调用中分析多个翻译单元时某些检查中的一些内存泄漏。

16.11.1到 16.11.3服务版本中的修复
> 修复了以某种方式在模板参数中使用__uuidof时发生的崩溃。
> 修复了SAL注释引用未命名结构的字段时罕见的崩溃。

总结
都手把手的教你写代码了,你还想要我怎么样?

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

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

标签:

评论已关闭。