3

从我读到的关于 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

我没有看到,是否有办法自动应用这些建议的更改。我从命令行运行容易出错。任何和所有的帮助表示赞赏!让我知道我是否可以澄清任何事情。

4

2 回答 2

3

没有办法直接自动应用它们。

但是,您可以让 Error Prone 吐出包含修复程序的补丁文件。参考补丁文档

要对 Error Prone 编译器内置的检查应用建议的修复,您将在编译器调用中添加两个编译器标志:

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

...

您可以直接检查补丁文件,并将其应用于您的源:

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

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

于 2019-09-09T09:10:30.030 回答
1

虽然当前没有记录,但可以直接将建议的更改应用于受影响的源代码。一个通过传递来做到这一点-XepPatchLocation:IN_PLACE

修改原始示例,调用变为:

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

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

于 2020-05-10T11:01:26.290 回答