如何检查 类 是否有 @CompileStatic 注解?

How to check classes have @CompileStatic annotation?

我想对我的 Groovy 代码执行自动静态检查分析,以确定哪些类没有 @CompileStatic 注释。

我想知道如何使用 IntelliJ 或 CodeNarc 自定义规则来完成。

可以使用 IntelliJ IDEA 的结构搜索(编辑 | 查找 | 结构搜索...)及其结构搜索检查来达到此目的。使用像这样的简单模式:

class $X$ {}

文件类型 Groovy,上下文 File。并添加如下脚本约束(单击 Edit Variables... 添加约束):

com.intellij.codeInsight.AnnotationUtil.findAnnotation(X.parent, "groovy.transform.CompileStatic") == null

这应该找到所有 类 没有 @CompileStatic 注释的

为了完整起见,Codenarc 自 1.4

以来有 CompileStatic Rule

CompileStatic Rule

Since CodeNarc 1.4

Enforces classes are annotated either with one of the @CompileStatic, >@GrailsCompileStatic or @CompileDynamic annotations.