2

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

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

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

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

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

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

我也尝试过自动删除尾随空格,如下所述:如何在 Eclipse 中自动删除尾随空格?但这也没有用。我假设是因为我专门尝试更改评论自动格式。

4

1 回答 1

2

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

Window > Preferences > Java > Code Style > Formatter

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

注释选项卡中,取消选中启用行注释格式

原因

即使可以删除该空间,以便格式为您提供正确的

//@

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

// @SuppressWarning("...") 

这将被格式化为

//@SuppressWarning("...") 

这将成为 OpenJML 的一个问题,这将是一个冲突。您可以在用户指南中查看更多相关信息 - 4.2 与 @ 的语法冲突

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

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

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

于 2017-12-01T18:17:32.693 回答