为什么 ICleanUp 运行 的选项与 ICleanUpOptionsInitializer 初始化的选项不同?

Why does an ICleanUp run with different options than what was initialized by the ICleanUpOptionsInitializer?

我有以下用于清理的插件配置:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
  <extension point="org.eclipse.jdt.ui.cleanUps">
      <cleanUp id="eclipsecs.saveaction" class="eclipsecs.saveaction.CheckFileCleanUp">
      </cleanUp>
      <cleanUpOptionsInitializer
            class="eclipsecs.saveaction.CheckFileCleanUpOptionsInitializer" cleanUpKind="saveAction">
      </cleanUpOptionsInitializer>
  </extension>
</plugin>

ICleanUp 和 ICleanUpOptionsInitializer 的实现只记录它们通过的 ICleanupOptions 实例。

public class CheckFileCleanUp implements ICleanUp {

    public static final String CLEANUP_ID = "com.mgmtp.eclipsecs.saveaction";

    private final ILog log;

    public CheckFileCleanUp() {
        this .log = Activator.getDefault().getLog();
    }

    @Override
    public void setOptions(final CleanUpOptions cleanUpOptions) {
        log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "setting options " + cleanUpOptions));
    }

    // other code ommited
}


public class CheckFileCleanUpOptionsInitializer implements ICleanUpOptionsInitializer  {

    private ILog log;

    public CheckFileCleanUpOptionsInitializer() {
        this.log = Activator.getDefault().getLog();
    }

    @Override
    public void setDefaultOptions(final CleanUpOptions options) {
        log.log(new  Status(IStatus.INFO, Activator.PLUGIN_ID, "initializing default options for checking file with checkstyle with options instance " + options));
        options.setOption(CheckFileCleanUp.CLEANUP_ID, CleanUpOptions.TRUE);
    }
}

在 eclipse 日志中,我看到为传递给清理本身和选项初始值设定项的每个清理选项编写了不同的哈希码。

即使选项初始值设定项确实启用了 CheckFile 清理,但传递给 CheckFile 清理的选项表明它未启用。

我需要做什么才能使用选项初始值设定项默认启用清理?

我用 eclipse mars 测试了这个。

正在使用的清理选项是从文件 .settings/org.eclipse.jdt.ui.prefs 加载的。对于已经存在的项目,该文件没有存储新创建的清理值。因此默认情况下禁用清理。

可以在文件中编辑该选项,或者可以按照 the tutorial 中指定的方式提供 ICleanUpConfigurationUI