Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java C/C+是否有Findbugs和/或PMD等效物+;?_Java_C++_C_Findbugs_Pmd - Fatal编程技术网

Java C/C+是否有Findbugs和/或PMD等效物+;?

Java C/C+是否有Findbugs和/或PMD等效物+;?,java,c++,c,findbugs,pmd,Java,C++,C,Findbugs,Pmd,最近有人问我,对于一个同时包含C/C++和Java的代码库,有哪些替代方案。显然,在Java方面,可用的免费工具包括Findbugs(编译代码分析)和PMD(静态代码分析)。它们非常强大,特别是当您开始研究与IDE的集成时(同样,IDE是免费的) 然而,当您开始使用各种编译器、体系结构等进入C/C++领域时,事情就变得很危险了 我已经为Java端提出了各种工具,包括Findbugs和PMD。当考虑使用以下指标时,我所寻找的是C/C++方面的最佳选择: 价格:免费更好,但可以被更好的价值打败。然而

最近有人问我,对于一个同时包含C/C++和Java的代码库,有哪些替代方案。显然,在Java方面,可用的免费工具包括Findbugs(编译代码分析)和PMD(静态代码分析)。它们非常强大,特别是当您开始研究与IDE的集成时(同样,IDE是免费的)

然而,当您开始使用各种编译器、体系结构等进入C/C++领域时,事情就变得很危险了

我已经为Java端提出了各种工具,包括Findbugs和PMD。当考虑使用以下指标时,我所寻找的是C/C++方面的最佳选择:

  • 价格:免费更好,但可以被更好的价值打败。然而,每行代码收费的定价模式令人震惊
  • 功能集:这个工具如何让我的生活变得更好?在我签入之前,在我们发送代码之前,它以什么方式检测到我的错误
  • 可用性:我可以使用我桌上的工具吗?我可以分享报告和/或调查结果吗?我可以将该工具与Fogbugz(我们在小组中使用)集成吗?我可以将该工具集成到CruiseControl(或等效工具)中吗

  • 最终工具将是有用的和可用的,作为FunBug和PMD的组合,具有相同的特征集,所有的都是零个座位。

    < P> >两个要想到的是C和C++。


    如果您想寻找更多选项,这些工具的这个功能就是“静态代码分析”。这可能帮助你找到更多的C和/或C++工具。另外,您可能会对这个问题的答案感兴趣,因为C++是一种足够复杂的语言,所以它的工具(如重构或静态分析工具)不如Java或C

    GimelEL软件是我所知道的C++标准的bug检查工具。它是商业化的,有一个合理的定价模式。我不知道它与其他工具的集成程度如何


    开源项目最终应该能够做很多你想要做的事情(看起来很酷),但它仍在开发中。

    我曾经用过,过去也用过,它们都很好,尽管都是商业/非免费的。

    PC Lint是一种不错的选择。与大多数其他工具不同,它具有完整的函数间和模块间值跟踪,并支持模板编译/解析的所有毛边。大约9年前,我为自己买了一本个人版,只是因为它太便宜了。我最终在开源项目中大量使用了它。PC Lint没有基于LOC的许可证,它不打电话回家,也没有许可证服务器。这是关于荣誉制度的,绝对不是胡说八道。在过去的9年中,我发现了一些问题(这些问题非常少),但它们几乎总是在几周内得到解决

    在开源方面,有SMatch,它基于Coverity的元编译分析技术,wine项目大量使用这些技术,产生了巨大的效果。PMD的CPD(拷贝粘贴探测器)子工具在C++上工作,而且非常快。对于圈复杂度,有一个pmccabe,可以通过apt-get轻松安装(在Linux上;在Windows上,我在cygwin下编译源代码)


    PC Lint确实需要一些配置才能正常工作,最多一到两天。其他工具的工作没有那么深入,因此您可以直接使用“find.-name.c | xargs pmccabe | sort-n | tail-n20”之类的命令运行。

    我使用的是在c/c++中扫描160个危险函数的finder.py。

    如果你想要一个基于Failfinder的ruby端口,那么你可以使用vulnxpose.rb。

    这两个工具都会扫描C/C++源代码文件,查找已知的漏洞,包括缓冲区溢出、竞争条件、弱加密、chroot-jail配置等更多)


    Rick

    PC Lint非常容易集成,至少从错误报告的角度来看是这样的,因为您可以根据IDE的要求配置错误消息格式,以自动查找错误。对于复杂性的评论,我不能苟同。我同意,分析Java字节码或标准Java源代码要方便得多。宏是一种图灵完整编译时模板语言,其复杂性和特殊情况足以使大多数(所有?)编译器在某些方面出错,从而导致Boost不得不开发大量编译器变通方法。。。我喜欢C++,但它不是一种简单的语言,这使得工具变得更难。乔什·凯利,是的,有很多方法可以在C++中跳闸,这就是我寻找工具的原因。就为其中一些情况编写检测器而言,即使不能处理所有硬件、编译器和库的组合,仍然可以分析代码。诚然,这对*ss(相对于Java)来说是一个巨大的痛苦,但也有人这么做。谢谢你链接到维基。在本例中,我试图生成一个特定的功能集,而不是所有可用工具的列表。这个问题是专门解决我在谈论Findbugs和PMD时所得到的反身反应:“哦,没有什么像C++那样存在。”我链接的工具是从我有限的C/C++经验中,为这些语言提供静态的代码分析的非商业性的主要工具。可能还有其他的工具,但如果我需要用其中一种语言对某些东西进行静态分析,我会抓住这些工具。@Thomas Owens,很公平,谢谢你的建议。