我想为我的公司android项目编写一些自定义lint规则。我正在阅读一些教程并成功创建了一个示例规则。
问题是我使用的是 @Deprecated JavaScanner API。我正在阅读官方谷歌文档located here,但它不是最新的。 我试图深入了解现有规则,发现this google git repository但它也使用了弃用的API。所以我的问题是
1)有没有最新的文档,但我根本找不到它?
2)是否有可用的当前lint规则的git存储库?所以我可以分析一下吗?
谢谢!
答案 0 :(得分:1)
好的,我已经找到了JavaScanner的替代品。它并不是我在下面提出的两个问题,但它解决了弃用界面问题所以我决定发布一个答案。
根据这个谷歌群组 - 自 JavaScanner 以来API已更改两次。
第一次更改是 JavaPsiScanner 但是他们 "没有广泛宣传,因为我已经知道我们想要切换到UAST(它仍在开发中)"
第二次也是最后一次更改是 UastScanner。因此,现在应该将它用于Java类。
你甚至可以找到Tor Norbye写的短documentation(上面的第7条评论)
答案 1 :(得分:0)
在Android项目中实现自定义规则的一种简单方法是使用基于Regex的整理工具AnyLint。它是用Swift编写的,因此目前仅在macOS和Linux上可用(Windows支持为in the works)。但是,您实际上并不需要Swift知识来使用它,只需遵循它的文档即可。
这是对任何一种语言实施自定义规则的最简单,最快的方法,基本上并支持示例验证,甚至自动更正。
例如,您可以编写一个自定义规则来防止出现多个空行(支持自动更正):
#!/usr/local/bin/swift-sh
import AnyLint // @Flinesoft ~> 0.6.0
try Lint.logSummaryAndExit(arguments: CommandLine.arguments) {
// MARK: - Variables
let kotlinFiles: Regex = #"^app/src/main/kotlin/.*\.kt$"#
let javaFiles: Regex = #"^app/src/main/java/.*\.java$"#
let xmlFiles: Regex = #"^app/src/main/res/.*\.xml$"#
let gradleFiles: Regex = #"^.*\.gradle$"#
// MARK: MultilineWhitespaces
try Lint.checkFileContents(
checkInfo: "MultilineWhitespaces: Restrict whitespace lines to a maximum of one.",
regex: #"\n( *\n){2,}"#,
matchingExamples: ["}\n \n \n\nclass", "}\n\n\nvoid"],
nonMatchingExamples: ["}\n \n class"],
includeFilters: [kotlinFiles, javaFiles, xmlFiles, gradleFiles],
autoCorrectReplacement: "\n\n",
autoCorrectExamples: [
["before": "}\n \n \n\n class", "after": "}\n\n class"],
["before": "}\n\n\nvoid", "after": "}\n\nvoid"],
]
)
}
我希望这会有所帮助。