我在我的项目中使用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;
有没有办法可以禁用在//
和@
符号之间添加空格,或者我可以在评论完全后禁用间距的方式?
我已尝试更改格式化程序配置文件,但我无法在那里找到该设置。
我也尝试过自动删除尾随空格,如下所述:How to auto-remove trailing whitespace in Eclipse?但这也不起作用。我假设是因为我特意尝试更改注释自动格式化。
答案 0 :(得分:2)
我的解决方案很简单,禁用行注释格式化。
Window > Preferences > Java > Code Style > Formatter
编辑当前配置文件(如果这是默认配置文件,则需要重命名)。
在评论标签中,取消选中启用行评论格式。
即使可以删除该空格,以便格式化为您提供正确的
//@
这会影响每一条评论,而不是一件大事。但注释注释呢?
// @SuppressWarning("...")
这将格式化为
//@SuppressWarning("...")
这将成为OpenJML的一个问题,这将是一个冲突。您可以在User guide - 4.2 Syntactic conflicts with @
中查看更多相关信息对于注释或JML,另一个解决方案是禁用格式化程序,但这不可能是诚实的:
// @formatter:off
...
// @formatter:on
这些标签之间的所有内容都没有被格式化(如果省略formatter:on
,那么文件中的所有内容都不会被格式化