【问题标题】:Can Error Prone Auto-Apply Suggested Fixes?可以自动应用建议的修复吗?
【发布时间】:2019-08-01 21:07:51
【问题描述】:

从我阅读的有关 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

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

【问题讨论】:

    标签: java command-line lint errorprone


    【解决方案1】:

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

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

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

    -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
    

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多