破坏DSO /共享库与C++接口的二进制向后兼容性并不是很难.也就是说,是否存在静态分析工具,如果给出两组不同的头文件,可以帮助检测此类ABI中断:DSO的早期状态和当前状态(也可能是DSO)?欢迎免费和商业产品建议.
如果它还可以警告不良做法,例如DSO接口中的内联函数和默认函数参数,那就太棒了.
c++ static-analysis shared-libraries backwards-compatibility
是否有任何可用的开源工具支持通过参数类型集和返回类型搜索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,它支持通过类型签名搜索功能.
我期待这个工具:
我知道许多IDE支持搜索获取或返回给定类型的方法,但尚未看到通过参数类型和返回类型的组合来缩小搜索范围的工具.
到目前为止,我们一直在使用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
对于以下代码段:
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报告为总是如此?
是否有一个静态分析工具可以一致地强制使用@Override注释,可以在IDE之外运行?CheckStyle有一个MissingOverride检查,但它只适用于使用@inheritDoc Javadoc标记的方法.我正在寻找一种可以在持续集成机器上的新构建配置中运行的工具.
我想使用Cppcheck进行C++代码的静态代码分析.我了解到我可以用--inline-suppr命令抑制某种警告.但是,我无法在评论中找到"suppress_error_id":
// cppcheck-suppress "suppressed_error_id"
Run Code Online (Sandbox Code Playgroud) 是否有工具可以自动在一组文件中找到复制和粘贴代码?
我正在考虑为此编写一个脚本,它只会搜索相同的字符串,但是这样的脚本会发现大多数不相关的等式.(如private final static ...).
我可能会说我对Code Contracts非常熟悉:我已经阅读并理解了大部分用户手册,并且已经使用了很长一段时间了,但我仍然有疑问.当我搜索SO代码"未经证实的代码合同"时,有很多点击,都在问为什么他们的具体陈述无法被静态证明.虽然我可以做同样的事情并发布我的具体情况(这是顺便说一句:
)
我更愿意理解为什么任何代码合同条件可以或不可以证明.有时我对它能证明的东西印象深刻,有时我......嗯......礼貌地说:绝对没有留下深刻的印象.如果我想了解这一点,我想知道静态检查器使用的机制.我相信我会从经验中学习,但我会在Contract.Assume所有地方喷洒语句以使警告消失,我觉得这不是Code Contracts的意思.谷歌搜索没有帮助我,所以我想问你们你们的经历:你们看到了什么(不明显的)模式?是什么让你看到光明?
我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于Java,C,PHP,...),但我想在自定义语法中对模板运行一些代码复制分析.
我不关心语法的高级解析,只是基于直线的原始字符串比较是好的.空白不敏感匹配将是一个加号,但不是必需的.(我自己规范化/消除空白并不难.)
有没有人知道可以(误)用于这样的工具?
谢谢.
language-agnostic code-analysis static-analysis code-duplication duplicates
是否有去语般的静态分析工具lint,pylint等等?据我搜索,我没有找到任何相关的东西.
我可以在我所在部门担任本科高级项目.我必须确定以前没有这样做过.任何帮助表示赞赏.
static-analysis ×10
c++ ×3
java ×2
annotations ×1
c# ×1
copy-paste ×1
cppcheck ×1
duplicates ×1
go ×1
java-9 ×1
java-platform-module-system ×1
jsr305 ×1
navigation ×1
proof ×1
pvs-studio ×1
reference ×1
search ×1
unsigned ×1