致C++完美主义者:使用Visual Studio新工具分析你的代码
admin
2021-01-21 01:32:37
0

原标题:致C++完美主义者:使用Visual Studio新工具分析你的代码

官宣IntelliSense Code Linter for C++

在Visual Studio 2019 v16.6 Preview 2中,我们高兴的宣布一项针对C++开发者的新功能:IntelliSense Code Linter for C++。这项新功能旨在帮助C++开发者在编写代码的时候能快速定位和修正可能存在的代码缺陷。它会在你编写代码的时候,在编辑器中以下划线的方式,实时地的显示代码中存在的问题并给出建议的修改措施。

有图有真相

这项新功能构建在Visual Studio现有的C++ IntelliSense基础之上。

这意味着,代码扫描将比之前的后台代码分析更快,从而更早地给出分析结果。

为了确保IntelliSense组件以尽可能快的速度运行,旧版的linter组件主要关注在那些很容易被发现的问题上。

新版本的linter将作为现有代码分析工具(例如MSVC的后台代码分析或者Clang-Tidy)的一个重要补充,同时可以对复杂的代码场景进行分析处理。

你可以在Visual Studio的[工具-选项]菜单中打开这个预览版功能,如下图所示:

致C++完美主义者:使用Visual Studio新工具分析你的代码

设计目标

当我们考虑要怎么做才能实现出一个比较好的代码分析工具时,我们将如下的几个目标作为Linter的设计目标。

1) 我们希望Linter能尽可能地找出那些让C++开发者感到意外的代码缺陷,尤其是来自其他语言的开发者。通过这样的代码检查,可以使某些C++语言功能的学习曲线变得平滑。

2) 这个工具应该可以提供针对具体问题的建议。就像IntelliSense可以侦测出可能会导致构建失败的语法错误一样,Linter应该可以帮助您在代码构建之前就识别并修复逻辑和运行时错误。

3) Linter应该能找出那些可以被解决的问题。虽然最终这只是代码风格和哲学问题,但总的来说,它们只关注导致实际Bug的代码缺陷。

会进行哪些代码检查

我们根据上面提到的三个设计目标,我们在Preview 2版本中实现了以下的几个代码检查。

Arithmetic Overflow

此代码检查将查找:使用32位数据类型进行算术运算,然后赋值给更宽的类型的情况。将一个32位的变量分配给更宽的类型,可以很好地表明开发者认为变量的值可能超出32位类型的范围。在C++中,表达式将被认为32位的,这可能会算术溢出,然后将溢出后的值赋值给更宽的类型变量。

致C++完美主义者:使用Visual Studio新工具分析你的代码

Integer Division Assigned to Floating Point

相关内容