java - java的跨类可扩展静态分析工具?

标签 java multithreading annotations static-analysis

我正在尝试编写规则来检测注释 多线程 java 程序中的一些错误。作为玩具示例,我想检测是否有任何使用 @ThreadSafe 注释的方法调用没有此类注释且没有同步的方法。我正在寻找一种可以让我编写这样的测试的工具。

我看过源码分析器,比如 CheckStyle 和 PMD,它们并没有真正的跨类分析能力。字节码分析器,如 FindBugs 和 JLint 似乎很难扩展。

我愿意为更简单的事情找到一个解决方案,但遇到同样的困难:编写一个自定义规则来检查是否每个被覆盖的方法都用@Override 注释。

最佳答案

你试过了吗FindBugs ?它实际上支持一组annotations for thread safety (与 Java Concurrency in Practice 中使用的相同)。此外,您可以编写自己的自定义规则。我不确定您是否可以进行跨类分析,但我相信可以。

Peter Ventjeer有一个concurrency checking tool (使用 ASM)来检测这样的东西。我不确定他是否公开发布了它,但他可能会帮助你。

我相信Coverity's线程安全的静态/动态分析工具就是这样检查的。

关于java - java的跨类可扩展静态分析工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276476/

相关文章:

java - 如何忽略 IntelliJ 中的特定 TODO

java - 在运行时编写和实现新的 Java 类文件

multithreading - 线程(在 Java 或 C++ 程序中)与 CPU 中的内核数之间有什么关系?

c# - 多线程访问非静态类的静态对象

java - JTOpen 用户空间读取

java - 如何在 C/OpenGL 中从整数数组创建位图

java - 线程上下文类加载器可以为空吗?

iphone - 添加另一个时如何删除以前的注释图钉?

java - 如何通过注释在 Groovy 脚本中提供私有(private)字段

spring - 是否可以在 Spring、Eclipselink 和 Tomcat 环境中使用@Transational?