【问题标题】:Checkstyle right curly brace position -- when set 'alone' gives message 'Must be on same line'Checkstyle 右花括号位置 - 当设置为“单独”时,会给出消息“必须在同一行”
【发布时间】:2015-06-19 11:21:07
【问题描述】:

我已经尝试在谷歌上搜索,但无法找到解决方案。我正在为 Java Luna 运行 Eclipse。使用 Sun Eclipse 样式,我将左花括号位置修改为“nl”,将右花括号位置修改为“单独”。一切正常,除非右大括号后面跟着“else”或“catch”(也许其他人,如“finally”......我没有检查过)。在这种情况下,我的代码部分看起来像

    ... 
}
catch ( whatever )
{
    ...
}

catch 之前的大括号给出了一个错误,指出 '}' 应该在同一行。如果我将右大括号移动到前一行的末尾,我会得到:

Multiple markers at this line
'}' should have line break before.
'}' should be on the same line.
'}' should be on a new line.
'if rcurly' have incorrect indentation level XXX, expected level

如果我将“catch”移动到与“}”相同的行,我会得到:

'}' should be alone on a line.

我是 CheckStyle 的新手,我认为我没有正确设置其他一些必需的选项。我找到的文档没有告诉我如何解决这个问题。我在 StackOverflow 上搜索了 checkstyle 标签,但没有发现类似的问题。任何帮助或指向我可以在哪里获得帮助的指针将不胜感激。

配置文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<!--

    This configuration file was written by the eclipse-cs plugin configuration editor

-->
<!--

    Checkstyle-Configuration: Sun Eclipse With Personal Checks

    Description: 

Based on the Sun Eclipse but with values that I prefer

-->
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
    <module name="LeftCurly">
      <property name="option" value="nl"/>
    </module>
    <module name="RightCurly"/>
    <module name="Indentation"/>
    <module name="RightCurly">
      <property name="option" value="alone"/>
    </module>
  </module>
</module>

【问题讨论】:

  • 你能分享你的配置文件吗?
  • RightCurly 模块有重复的条目 - 一个为空,另一个带有“单独”选项集。也许正在使用空的而另一个被丢弃,导致设置了默认选项?

标签: java checkstyle


【解决方案1】:

重新检查您是否使用了最新的 checkstyle 并尝试基于 CLI 重现该样式 - http://checkstyle.sourceforge.net/cmdline.html

$ cat checkstyle_checks.xml 
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
          "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">

  <module name="TreeWalker">

    <module name="LeftCurly">
      <property name="option" value="nl"/>
      <property name="tokens" value="LITERAL_CATCH"/>
      <property name="tokens" value="LITERAL_ELSE"/>
      <property name="tokens" value="LITERAL_FINALLY"/>
      <property name="tokens" value="LITERAL_IF"/>
      <property name="tokens" value="LITERAL_TRY"/>
    </module>

    <module name="RightCurly">
      <property name="option" value="alone"/>
    </module>

    </module>
</module>

    $ cat PropertyCacheFile.java 
final class PropertyCacheFile
{
    PropertyCacheFile()
    {
        if (true) 
        {
            //code
        }
        else 
        {
            //code
        }
            try 
            {
             // NCODE
            }
            catch (final IOException e) 
            {
                // SMTH
            }
            finally 
            {
                /// VALUES
            }
    }
}

$ java -jar checkstyle-6.5-all.jar -c checkstyle_checks.xml PropertyCacheFile.java 
Starting audit...
Audit done.

【讨论】:

  • 好主意,但没有喜悦。该文件是最新的 (6.5)。使用命令行,我得到相同的结果:PetriParser.java:771:9: warning: '}' should be on the same line.
  • 请在groups.google.com/forum/m/#!forum/checkstyle发帖,并请提供您的启动日志和所有文件
猜你喜欢
  • 2019-06-21
  • 2019-07-29
  • 1970-01-01
  • 2019-11-15
  • 2019-07-11
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多