【问题标题】:Checkstyle for Annotation注释的检查样式
【发布时间】:2016-04-15 22:31:08
【问题描述】:

我想创建一个 checkstyle 规则,在单独的行上强制执行注释,除了函数参数和每个循环。有没有办法创建这样的规则,以便以下代码有效:

@Deprecated
public class Annotation
{
  @Deprecated
  public void test(@Nullable String s) {
    @Rule
    Integer i;
    for (@Nullable Char c : s.getChars()) {
    }
  }
}

【问题讨论】:

  • 我不知道 Checkstyle 也无法帮助您,但我认为添加您正在使用它分析的语言可能很有用,因为通常一种语言可能有一些语法编写 Checkstyle 规则时必须考虑的规则。
  • 来自http://checkstyle.sourceforge.net "Checkstyle 是一种开发工具,可帮助程序员编写符合编码标准的 Java 代码。"
  • 好的,谢谢,我刚刚在 SO 上检查了标签的描述,并没有提到它是特定于 Java 的。但是,你要在 10 个月后回答吗?哇!
  • 我不是 SO 上 checkstyle 标签的所有者,您最好让所有者为标签提供更好的描述。 IMO,该标签的描述性足以让那些了解 checkstyle 项目的人回答关于 SO 的问题,以及那些不熟悉该项目且无能为力的人,忽略它。
  • 我应该忽略你的问题的这种不经意的评论让我觉得你对我的评论感到恼火。那么,也许你不知道这个网站有一个审查机制,而且新用户提出的第一个问题总是会被审查,因为它很有可能需要一些改进。 That's how I found your post。我留下这条评论是因为我想帮助你。

标签: checkstyle


【解决方案1】:

您可以使用 AnnotationLocation 检查,但现在似乎无法创建这样的规则,因为 Integer iChar c 都是 VARIABLE_DEF,因此您可以强制所有变量定义将其注释放在单独的行:

    <module name="AnnotationLocation">
      <property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
    </module>

或允许它们在同一行:

    <module name="AnnotationLocation">
      <property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
      <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
    </module>

但是,为 AnnotationLocation 检查提供一个新选项是个好主意。请为此创建一个问题:issue trackingHow to request new feature for existing functionality?

【讨论】:

  • @VladRozov 感谢您的提示。知道为什么我仍然不能指定由于cannot initialize module TreeWalker - Token "FOR_EACH_CLAUSE" was not found in Acceptable tokens list in check com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationLocationCheck 而失败的&lt;module name="Checker"&gt;&lt;module name="TreeWalker"&gt;&lt;module name="AnnotationLocation"&gt;&lt;property name="allowSamelineSingleParameterlessAnnotation" value="false"/&gt;&lt;property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF, FOR_EACH_CLAUSE"/&gt;&lt;/module&gt;&lt;/module&gt;&lt;/module&gt;
猜你喜欢
  • 2010-10-07
  • 1970-01-01
  • 2011-03-18
  • 2015-01-18
  • 2017-10-29
  • 1970-01-01
  • 2013-04-16
  • 2014-05-28
  • 1970-01-01
相关资源
最近更新 更多