如果未初始化类成员,Visual Studio C ++选项会发出警告

时间:2013-07-12 08:58:36

标签: visual-c++ managed-c++

如果使用未初始化的类成员,Visual Studio 2012 C ++编译器中是否有选项可以使其发出警告?

RTC-Checks与托管C ++(/ clr)

不兼容

1 个答案:

答案 0 :(得分:1)

什么样的数据成员?一个指针成员变量或一个自动调用其构造函数的变量?

作者真的应该有足够的经验来对指针进行偏执,并观察他们的初始化,分配和解除引用,就像鹰一样,以确保它是安全的。没有编译器或静态分析器可以取代合格的程序员来确保指针的安全使用。

如果可能,您基本上希望在编译时找到这些问题,并且仅在运行时作为最后的手段。

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

Visual Studio附带的静态分析器可以在没有先检查的情况下警告是否正在使用指针。但它没有给指针类成员强调同样的重点。我见过一个叫做CppCheck的第三方静态分析器来检查。 Coverity(另一个静态分析器)也可能也这样做。啊,但等等,Coverity不适用于托管代码(最后我检查过)。而且你的房子很贵,而你的邻居可以出售你的房子,有一个掩护工程师到你的办公室花3天时间来安装它,然后需要24小时来运行分析

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

因此,请将您的代码置于清晰的可管理层中。从纯本机C ++代码中分离托管C ++代码,在visual studio中只打开托管文件上的/ clr开关。

尽可能使用静态分析工具。