Visual c++ Visual Studio C++;如果类成员未初始化,则选项发出警告 在VisualStudio 2012 C++编译器中是否有一个选项,如果使用未初始化的类成员,则警告它? < > RTC检查与托管C++(/CLR)< P>不兼容什么样的数据成员?指针成员变量还是自动调用其构造函数的变量

Visual c++ Visual Studio C++;如果类成员未初始化,则选项发出警告 在VisualStudio 2012 C++编译器中是否有一个选项,如果使用未初始化的类成员,则警告它? < > RTC检查与托管C++(/CLR)< P>不兼容什么样的数据成员?指针成员变量还是自动调用其构造函数的变量,visual-c++,managed-c++,Visual C++,Managed C++,这实际上取决于作者是否有足够的经验对指针产生偏执,并像鹰一样观察它们的初始化、赋值和解引用,以确保其安全。在确保指针的安全使用方面,任何编译器或静态分析器都不能取代有能力的程序员 如果可能的话,您基本上希望在编译时发现这些问题,而在运行时只是作为最后的手段 对于编译时工具,您确实有一些选项可以帮助您: VisualStudio附带的静态分析器可以在未首先检查指针的情况下发出警告。但它对指针类成员的强调程度不同。我见过一个名为CppCheck的第三方静态分析器进行这种检查。 Coverity(另一

这实际上取决于作者是否有足够的经验对指针产生偏执,并像鹰一样观察它们的初始化、赋值和解引用,以确保其安全。在确保指针的安全使用方面,任何编译器或静态分析器都不能取代有能力的程序员

如果可能的话,您基本上希望在编译时发现这些问题,而在运行时只是作为最后的手段

对于编译时工具,您确实有一些选项可以帮助您:

VisualStudio附带的静态分析器可以在未首先检查指针的情况下发出警告。但它对指针类成员的强调程度不同。我见过一个名为CppCheck的第三方静态分析器进行这种检查。 Coverity(另一个静态分析器)也可能会这样做。啊,但是等等,Coverity不适用于托管代码(上次我检查)。它是如此昂贵,你可能不得不卖掉你的房子,你的邻居的房子来支付费用,让coverity工程师来你的办公室花3天时间安装,然后需要24小时来运行分析

对于运行时检查,我不知道使用托管代码的RTC有什么替代方案。但是,将暴露给/clr开关的纯本机代码量降至最低是非常明智的。几年前,一些程序员为我们最大的项目(它有数百个文件)的产品启用了该功能。尽管在项目中的数百个文件中只有4或5个文件使用托管代码,但他仍然为数百个其他纯本机文件打开了开关。 结果,在我们扭转这种愚蠢行为之前,数年来发生了数千起车祸

因此,请将代码放在清晰的可管理层中。将托管C++代码与纯本机C++代码分离,在VisualStudio中只打开托管文件上的/CLR开关。
尽可能多地使用静态分析工具。

一些标量类成员,如int、bools和指针。对于类,构造函数被调用,所以这些应该没有问题。对于这样的基本情况,请确保启用级别4警告,并同时启用所有静态分析选项。并确保检查出CppCheck。它应该做你想做的事情,尽管我还没有检查它是否能在托管C++上运行。但我认为有一个免费试用期……这正是我所需要的,谢谢!这是一个大型的legay项目,有大约1000个文件,所以我无法手动检查。C Johnson,实际上1000是一个相当保守的说法,我只是想暗示有很多文件。。。