如何在 Eclipse 自动格式化中删除注释后的空格?

How to remove spaces after comments in Eclipse auto formatting?

我正在为我的项目使用 OpenJML 插件,但 Eclipse 自动格式化与我的 JML 代码混淆。 JML写在//@符号后。

//@ requires password != null;
//@ ensures !isActive() && getPassword().testWord(password) ? isActive() && \result : isActive() == \old(isActive()) && !\result;

然而,Eclipse 自动格式化在 //@ 符号之间添加了一个 space,使我的 JML 代码无用。

// @ requires password != null;
// @ ensures !isActive() && getPassword().testWord(password) ? isActive() && \result : isActive() == \old(isActive()) && !\result;

有没有一种方法可以禁止在 //@ 符号之间添加 space,或者我可以完全禁止注释后的间距?

我试过更改格式化程序配置文件,但在那里找不到设置。

我也试过自动删除尾随的白色space,如下所述:How to auto-remove trailing whitespace in Eclipse? 但这也不起作用。我假设是因为我专门尝试更改评论的自动格式设置。

我的解决方案很简单,禁用行注释格式。

Window > Preferences > Java > Code Style > Formatter

编辑当前配置文件(如果这是默认配置文件,您需要重命名它)。

评论选项卡中,取消选中启用行评论格式

原因

即使可以删除那个 space 以便格式为您提供正确的

//@

这会影响每条评论,你可以说没什么大不了的。但是注释注释呢?

// @SuppressWarning("...") 

这将被格式化为

//@SuppressWarning("...") 

这将成为 OpenJML 的问题,这将是一个冲突。您可以在 User guide - 4.2 Syntactic conflicts with @

中看到更多相关信息

另一种解决方案,对于注释或 JML,都是禁用格式化程序,但老实说,这将无法使用:

// @formatter:off 
...
// @formatter:on

这些标签之间的所有内容都不会被格式化(如果 formatter:on 被省略,文件中之后的所有内容都不会被格式化