如何使用Spotless Java代码格式化程序在本地字段和方法上强制使用“this”关键字?

xzabzqsa  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(175)

我想使用Spotless强制使用'this'关键字。例如:getTowerData().recordMapthis.getTowerData().recordMap
我正在使用Gradle运行Spotless,当前配置如下:

spotless {
    java {
        importOrder('emu.grasscutter', '', 'java', 'javax', '\\#java', '\\#')
        googleJavaFormat('1.15.0')
        formatAnnotations()
        endWithNewline()
        indentWithTabs(2); indentWithSpaces(4)
        toggleOffOn()
    }
}

目前,我已经尝试使用:

custom('this', {
    // Force use of 'this.' keyword
    it.replaceAll('^\\s*(?!public|private|protected)(?!class|interface|enum|@interface)\\b(?!return)\\w+\\b', 'this.$0')
})

但这导致:

Step 'google-java-format' found problem in 'src\main\java\emu\grasscutter\auth\AuthenticationSystem.java':
null
java.lang.reflect.InvocationTargetException
Caused by: com.google.googlejavaformat.java.FormatterException: 1:2: error: class, interface, enum, or record expected
x8diyxa7

x8diyxa71#

在devatherock的评论中,提到了Gradle的checkstyle插件,并解决了这个问题。虽然它不是专门的Spotless,但它是解决这个问题的最佳方案。

相关问题