cppcheck 为“使用”语句报告“冗余代码:找到以数字常量开头的语句”
Posted
技术标签:
【中文标题】cppcheck 为“使用”语句报告“冗余代码:找到以数字常量开头的语句”【英文标题】:cppcheck reports "Redundant code: Found a statement that begins with numeric constant" for a 'using' statement 【发布时间】:2016-07-28 14:35:10 【问题描述】:了解这不是很多上下文,我有这行:
using GridType = Grid<boost::optional<float>, 2>;
cppcheck 说:
Redundant code: Found a statement that begins with numeric constant.
我会认为“误报”,但通常这些分析工具比我聪明,所以我想检查一下是否有人能想到为什么这样的语句可以被分析器这样解释?
我在 Ubuntu 系统上使用 cppcheck 1.61。
【问题讨论】:
您应该提及您的 cppcheck 版本(可能还有您运行它的平台)。 @JesperJuhl 为问题添加了版本。 【参考方案1】:cppcheck 主要基于模式匹配,有时不太聪明/很肤浅。它确实找到了一堆好东西,但也有很多误报。我会说这是一个误报,让 cppchecks 简单的头脑感到困惑。
还有; 1.61 版本有点旧。有没有测试过最新的 1.74 看看这里是不是更聪明? (如果它不在您的发行版存储库中,则从源代码构建非常简单)
【讨论】:
1.74 和 1.73 在 Red Hat 4.8.3-9(它是一个 AWS 实例)上花费了 SUPER 很长时间(很多小时,几乎就像它们挂起一样)。 1.61 只需要几分钟。我将继续往下看版本列表,看看什么时候效果更好。知道为什么会这样吗? 不知道。 1.74 在我工作的代码库上运行数十分钟(约 700.000 行 C++)。 它在 1.70 上运行良好,非常慢,但没有更高版本的 1.71 慢,在 1.72 上非常慢。我想我会坚持 1.70 ......? :) Dang,我刚刚看到 1.75 发布了,但它仍然基本上挂在我的一些文件上:(以上是关于cppcheck 为“使用”语句报告“冗余代码:找到以数字常量开头的语句”的主要内容,如果未能解决你的问题,请参考以下文章
CppCheck 在调用时使用 -I 的 headerfolders 报告的错误更少,然后没有