提问人:mark 提问时间:5/7/2013 更新时间:5/24/2013 访问量:756
是否有任何静态分析工具可以检查规则 3(或规则 5 C++11)[已关闭]
Are there any static analysis tools that check for Rule of 3 (or Rule of 5 C++11) [closed]
问:
闭。这个问题正在寻求有关书籍、工具、软件库等的建议。它不符合 Stack Overflow 准则。它目前不接受答案。
我们不允许向读者、工具、软件库等寻求推荐的问题。您可以编辑问题,以便用事实和引文来回答。
去年关闭。
我目前正在开发一个建立在沙子基础上的代码库。
在所谓的测试库中,有许多类违反了“3 法则”。大多数声明了一个非平凡的析构函数,但缺少复制构造函数或赋值运算符。
是否有任何编译器标志 (gcc) 或静态分析工具在类违反 3 规则时发出警告?
目前,我们在 GCC 版本 4.4 中使用 Coverity。
答:
0赞
CodeCurmudgeon
5/9/2013
#1
来自Parasoft(商业工具)的C++测试有一个规则(MRM-40),涵盖了“一致地复制和销毁”,看起来对您有所帮助。基本上,它说如果你定义了任何一个复制构造函数、复制赋值运算符或析构函数,你可能需要定义一个或两个其他的。
更多信息请见 http://www.parasoft.com/jsp/products/cpptest.jsp
0赞
jackua
5/24/2013
#2
Coverity有。我们使用 6.5 版本。有一个跳棋MISSING_COPY_OR_ASSIGN。
评论
0赞
mark
5/24/2013
默认情况下,Coverity 未启用此规则(可能被视为误报)。我们现在已经启用了它,并强调了一些问题。
0赞
jackua
5/25/2013
@mark 请勾选 --rule 选项。它支持所有这些:ASSIGN_NOT_RETURNING_STAR_THIS、COPY_WITHOUT_ASSIGN、MISSING_COPY_OR_ASSIGN SELF_ASSIGN。Coverity 有一个很好的文档 @ server:8080/docs/en/index.html。端口可以不同,取决于配置。
0赞
jackua
5/25/2013
@mark 默认设置非常保守。我每天晚上都能找到 130 个检查器中的 130 个,所有部门资源都集中在一个版本中。通过非常并行的构建,只需 4 小时。我将所有缺陷分为 4 个级别,以便分别处理它们。我可以分享我的分类。
下一个:三法则练习意外结果 [重复]
评论