如何在 Eclipse 中在非孤立大括号周围强制执行空行?

2022-09-03 08:09:40

Eclipse 格式工具 (Luna) 不考虑

  1. 在非函数声明上强制执行非孤立大括号之前和之后的 1 个空行。

for (...) {, , ,if (...) {} else {} catch (...) {

  1. 在孤立的右大括号之前强制执行 0 个空行。}

  2. 在孤立的右大括号后强制执行 1 个空行,除非后面跟着另一个孤立的右大括号(规则 2 胜过规则 3)。

术语:

  • 非孤立 = 与运算符/关键字配对
  • 非函数 = 不是类或方法声明

例:

                ...
                someCall();
            } // ORPHAN CLOSE BRACE - NO BLANK LINE BEFORE OR AFTER
        } // ORPHAN CLOSE BRACE – BLANK LINE AFTER 

        someOtherCall();
    } // ORPHAN CLOSE BRACE – NO BLANK LINE BEFORE

    ...
    String result;
    int foo = 1000;
                                           // a blank line
    for (int x = 0; x < foo; x++) {
                                           // a blank line
        if (x < value) {
                                           // a blank line
            try {
                                           // a blank line
                result = methodCall(x);
                result.setBar(outtaReach);
                handleResult(x, result);
                x = z % 5;
                                           // a blank line
            } catch (Exception ex) {
                                           // a blank line
                doSomething(x, ex);        // no blank line - orphan
            }
                                           // a blank line
        } else {
                                           // a blank line
            otherCall(x);                  // no blank line - orphan
        }                                  // no blank line - orphan
    }
                                           // a blank line
    ...

我这样做的原因是提高代码的可读性;我将让 JVM 处理优化。撇开关于我想要的格式样式的意见不谈,有没有办法在Eclipse中强制执行这种特定的空行样式?也许有一个插件来执行此操作,我还没有找到,或者我必须编写一个?

Eclipse 的 Java Code Formatter 的“空行”部分不提供强制实施或应用此功能的功能。请注意,我不想在没有大括号的代码块之间强制使用空行(请参阅上面的 和 代码块作为示例)。String | intresult | handleResult()

我最接近的设置是:

编译单元中的空行

  • 包裹申报前: 0
  • 包裹申报后:1
  • 进口前报关:1
  • 导入组之间:0
  • 进口报关后:1
  • 类声明之间:1

类声明中的空行

  • 首次申报前:1
  • 在同类声明之前:1
  • 在成员类声明之前:1
  • 字段声明之前:0
  • 方法声明之前:1
  • 在方法主体开始时:1

现有空行

  • 要保留的空行数:1

答案 1

看看JIndent插件;它是商业性的,但它可能能够实现您正在寻找的复杂规则。


答案 2

Uncrustify应该能够做到这一点。不幸的是,它不能作为Eclipse插件使用

http://uncrustify.sourceforge.net/


推荐