容易出错的问题可以自动应用建议的修复吗?

Can Error Prone Auto-Apply Suggested Fixes?

根据我对 Error Prone 的了解,我发现它实际上会建议修复代码中的样式错误。即来自 https://errorprone.info/docs/installation:

ERROR: example/myproject/BUILD:29:1: Java compilation in rule '//example/myproject:hello'
examples/maven/error_prone_should_flag/src/main/java/Main.java:20: error: [DeadException] Exception created but not thrown
    new Exception();
    ^
    (see http://errorprone.info/bugpattern/DeadException)
  Did you mean 'throw new Exception();'?
1 error

我没有看到是否有办法自动应用这些建议的更改。我在命令行中 运行 容易出错。任何帮助表示赞赏!如果我能澄清任何事情,请告诉我。

无法直接自动应用它们。

但是,您可以让 Error Prone 吐出包含修复的补丁文件。参考patching documentation:

To apply the suggested fixes for checks built in to the Error Prone compiler, you’ll add two compiler flags to your compiler invocation:

-XepPatchChecks:MissingOverride,DefaultCharset,DeadException
-XepPatchLocation:/full/path/to/your/source/root

...

You can inspect the patch file directly, and apply it to your source with:

cd /full/path/to/your/source/root
patch -p0 -u -i error-prone.patch

(请注意关于这是实验性的免责声明)

虽然不是最新的 documented,但 可以直接将建议的更改应用到受影响的源代码。一个通过传递 -XepPatchLocation:IN_PLACE:

修改原来的例子,调用变为:

-XepPatchChecks:MissingOverride,DefaultCharset,DeadException
-XepPatchLocation:IN_PLACE

强烈建议仅当原始文件由版本控制系统管理时才使用此功能。然后可以很容易地使用例如检查结果。 git diff 并使用例如恢复git checkout -- ..