繁体   English   中英

如何在 IntelliJ IDEA 中找到顶级未注释的类

[英]How to find top level not annotated classes in IntelliJ IDEA

动机:每个类/接口/注释/枚举都必须由@SomeAnnotation 注释。 但是,我们希望此注释仅位于顶级类而不是内部类。

目标是创建一个结构检查,警告开发人员他们忘记对类进行注释。 如何指定结构搜索/替换以查找所有缺少 @SomeAnnotation 的顶级结构?

这样的事情应该工作:

@$Annotation$ // min: 0, max: 0, text/regexp: SomeAnnotation
class $C$ {} // min: 1, max: 1

// Complete Match - Script text: 
if (C instanceof com.intellij.psi.PsiIdentifier) C = C.parent
C.containingClass == null && !(C instanceof com.intellij.psi.PsiAnonymousClass)

IntelliJ IDEA 14 需要脚本的第一行。脚本中的C引用模式中的$C$

替换模板:

@SomeAnnotation
class $C$ {}

用于导入的完整模板(使用对话框中工具按钮下的Import Template from Clipboard ):

<replaceConfiguration name="Method calls" text="@$Annotation$&#10;class $C$ {}" recursive="false" caseInsensitive="true" type="JAVA" pattern_context="default" reformatAccordingToStyle="false" shortenFQN="false" replacement="@SomeAnnotation&#10;class $C$ {}">
  <constraint name="__context__" script="&quot;if (C instanceof com.intellij.psi.PsiIdentifier) C = C.parent &#10;C.containingClass == null &amp;&amp; !(C instanceof com.intellij.psi.PsiAnonymousClass)&quot;" within="" contains="" />
  <constraint name="Annotation" regexp="SomeAnnotation" minCount="0" maxCount="0" within="" contains="" />
  <constraint name="C" within="" contains="" />
</replaceConfiguration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM