Are there any static analysis tools that check for Rule of 3 (or Rule of 5 C++11)

瘦欲@ 提交于 2019-12-10 06:16:59

问题


I am currently working on a codebase that is built on a foundation of sand.

There are numerous classes in supposedly tested libraries that violate the "Rule of 3". Most declare a non-trivial destructor, but are missing either a copy constructor or assignment operator.

Are there any compiler flags (gcc) or static analysis tools that warn when a class violates the rule of 3?

Currently we are using Coverity with GCC version 4.4.


回答1:


Coverity has. We use version 6.5. There is a checker MISSING_COPY_OR_ASSIGN.




回答2:


C++test from Parasoft (commercial tool) has a rule (MRM-40) that covers "copy and destroy consistently" that looks like it would help you. Basically it says if you define any of the copy constructor, copy assignment operator, or destructor, you might need to define one or both of the others.

More info at http://www.parasoft.com/jsp/products/cpptest.jsp



来源:https://stackoverflow.com/questions/16423504/are-there-any-static-analysis-tools-that-check-for-rule-of-3-or-rule-of-5-c11

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!