标签: static-analysis

静态分析工具,用于检测C++中的ABI中断

破坏DSO /共享库与C++接口的二进制向后兼容性并不是很难.也就是说,是否存在静态分析工具,如果给出两组不同的头文件,可以帮助检测此类ABI中断:DSO的早期状态和当前状态(也可能是DSO)?欢迎免费和商业产品建议.

如果它还可以警告不良做法,例如DSO接口中的内联函数和默认函数参数,那就太棒了.

c++ static-analysis shared-libraries backwards-compatibility

25
推荐指数
2
解决办法
7222
查看次数

如何通过类型签名搜索Java API方法?

是否有任何可用的开源工具支持通过参数类型集和返回类型搜索Java方法?

举个例子,假设我正在寻找一种为int数组生成哈希码的方法.我搜索一个采用int []参数并返回int的方法:

int[] -> int
Run Code Online (Sandbox Code Playgroud)

生产

java.util.Arrays#hashCode(int[])
...
Run Code Online (Sandbox Code Playgroud)

或者我可能想要找到一个方法,它接受一个字符串,并替换字符,并将字符替换为.所以我搜索匹配的方法:

String, char, char -> String
Run Code Online (Sandbox Code Playgroud)

生产

java.lang.String#replace(char, char)
...
Run Code Online (Sandbox Code Playgroud)

理想情况下,我喜欢Java等同于Haskell的Hoogle,它支持通过类型签名搜索功能.

我期待这个工具:

  • 忽略参数的顺序
  • 包括接受'更宽'类型作为参数的方法(例如超类)
  • 包含返回'narrower'类型作为返回值的方法(例如子类)
  • 将'self'值作为实例方法的参数处理(例如'String - > int'将包含String#hashCode)

我知道许多IDE支持搜索获取或返回给定类型的方法,但尚未看到通过参数类型返回类型的组合来缩小搜索范围的工具.

java navigation search static-analysis reference

25
推荐指数
2
解决办法
5492
查看次数

JSR-305注释替代Java 9

到目前为止,我们一直在使用Findbugs JSR-305注释(com.google.code.findbugs:jsr305),包括工具支持(Sonar,Eclipse,Findbugs,...)在内的一切工作正常.

但是我们的理解是Java 9中的Jigsaw将打破JSR-305注释(不允许在两个模块中使用一个包).这在JavaOne 2015上得到了证实.Oracle的推理是JSR-305从未发生过,JSR-250必须支持这些注释.

我们正在寻找可以在Java 8和Java 9中工作的JSR-305注释的替换.如果历史是任何指南,Java 9 GA和Java 8 EOL之间的时间将相当短,我们想修复我们的任何不兼容性提前编码.从理论上讲,我们可以升级JDK的注释模块,但是在我们的工具链中执行此操作似乎需要做很多工作.

annotations static-analysis jsr305 java-platform-module-system java-9

25
推荐指数
1
解决办法
3643
查看次数

表达式'i <0'始终为假

对于以下代码段:

size_t i = 0;
std::wstring s;
s = (i < 0)   ? L"ABC" : L"DEF";
s = (i != -1) ? L"ABC" : L"DEF";
Run Code Online (Sandbox Code Playgroud)

i < 0正如预期的那样,PVS-Studio分析记录第一个条件的警告:

V547 Expression 'i < 0' is always false. Unsigned type value is never < 0. test_cpp_vs2017.cpp 19

例如,为什么PVS不会发出关于第二个,也是可疑情况的警告,并将其i != -1报告为总是如此?

c++ unsigned static-analysis pvs-studio

25
推荐指数
3
解决办法
4196
查看次数

如何强制使用@Override注释?

是否有一个静态分析工具可以一致地强制使用@Override注释,可以在IDE之外运行?CheckStyle有一个MissingOverride检查,但它只适用于使用@inheritDoc Javadoc标记的方法.我正在寻找一种可以在持续集成机器上的新构建配置中运行的工具.

java continuous-integration static-analysis

24
推荐指数
1
解决办法
2195
查看次数

如何在C++代码中使用cppcheck的内联抑制过滤器选项?

我想使用Cppcheck进行C++代码的静态代码分析.我了解到我可以用--inline-suppr命令抑制某种警告.但是,我无法在评论中找到"suppress_error_id":

// cppcheck-suppress "suppressed_error_id"
Run Code Online (Sandbox Code Playgroud)

c++ static-analysis error-suppression cppcheck

23
推荐指数
2
解决办法
2万
查看次数

是否存在可自动查找复制粘贴代码的工具?

是否有工具可以自动在一组文件中找到复制和粘贴代码?

我正在考虑为此编写一个脚本,它只会搜索相同的字符串,但是这样的脚本会发现大多数不相关的等式.(如private final static ...).

code-analysis static-analysis copy-paste code-duplication

22
推荐指数
1
解决办法
2万
查看次数

C#代码合同:什么可以静态证明,什么不可以?

我可能会说我对Code Contracts非常熟悉:我已经阅读并理解了大部分用户手册,并且已经使用了很长一段时间了,但我仍然有疑问.当我搜索SO代码"未经证实的代码合同"时,有很多点击,都在问为什么他们的具体陈述无法被静态证明.虽然我可以做同样的事情并发布我的具体情况(这是顺便说一句:

在此输入图像描述)

我更愿意理解为什么任何代码合同条件可以或不可以证明.有时我对它能证明的东西印象深刻,有时我......嗯......礼貌地说:绝对没有留下深刻的印象.如果我想了解这一点,我想知道静态检查器使用的机制.我相信我会从经验中学习,但我会在Contract.Assume所有地方喷洒语句以使警告消失,我觉得这不是Code Contracts的意思.谷歌搜索没有帮助我,所以我想问你们你们的经历:你们看到了什么(不明显的)模式?是什么让你看到光明?

c# static-analysis proof code-contracts

22
推荐指数
2
解决办法
1328
查看次数

通用代码重复检测工具

我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于Java,C,PHP,...),但我想在自定义语法中对模板运行一些代码复制分析.

我不关心语法的高级解析,只是基于直线的原始字符串比较是好的.空白不敏感匹配将是一个加号,但不是必需的.(我自己规范化/消除空白并不难.)

有没有人知道可以(误)用于这样的工具?

谢谢.

language-agnostic code-analysis static-analysis code-duplication duplicates

22
推荐指数
2
解决办法
8786
查看次数

Go语言的静态代码分析(linter)工具

是否有去语般的静态分析工具lint,pylint等等?据我搜索,我没有找到任何相关的东西.

我可以在我所在部门担任本科高级项目.我必须确定以前没有这样做过.任何帮助表示赞赏.

static-analysis go

21
推荐指数
5
解决办法
1万
查看次数