incrementalLint invalidate for def inputFiles = Util.getAllInputs(project)
pick618 opened this issue · 8 comments
def inputFiles = Util.getAllInputs(project) //where change file?
project.task(getTaskName(flavor, buildType), type: OkLint) {
dependsOn getOriginTaskName(flavor, buildType)
inputs.files(inputFiles)
outputs.file(outputFile)
setGroup("verification")
if (flavor.length() <= 0 && buildType.length() <= 0) {
setDescription("Run lint incremental for all variants")
} else {
setDescription("Run lint incremental for $flavor$buildType build.")
}
}
String originTaskName = getOriginTaskName(flavor, buildType)//lint
Set<Task> originTasks = project.getTasksByName(originTaskName, false)
Task originTask = null
if (originTasks != null && originTasks.size() > 0) originTask = originTasks[0]
if (originTask == null) {
project.tasks.whenTaskAdded { task ->
if (task.name == originTaskName) {
if (incrementalLint) addIncrementalAndReport(project, task, inputFiles, outputFile)
}
}
} else {
if (incrementalLint) addIncrementalAndReport(project, originTask, inputFiles, outputFile) //where change file?
}
代码只是查找变化的文件对应的modulename,没有处理单独的文件呀
是的,因为其中的lint
以及unit-test
之类的,本身就需要依赖编译结果与依赖;而checkstyle
、pmd
等代码扫描本身就很快,再大的工程基本都是10s级别,这块做差分意义不是很大;因此这边暂时只做到module
级别。
如果你有什么更好的建议,欢迎PR或者issue。
嗯,我用gradle3.1.3的,3.1.0前后的jar包内容就不一样了,去除了LintGradleClient 等文件,采用ReflectiveLintRunner 反射LintGradleExecution 生成,LintGradleExecution 反射生成lintrequest LintGradleClient 实例,但是找不到这个的源码在哪里,想通过反射修改project request subset(files) 都没办法
是啊,gradle 和studio 一直在升级,请教下你这边有尝试过用gradle3.1.3 做增量文件升级吗,非常感谢
不好意思哈,没有研究过这块。
boolean isOnThisModule(String fileRelativePath) {//判断文件是否在module中
return fileRelativePath.startsWith(this.relativePath)
}
这个地方是否有bug,如果有android library执行:app:okcheckDebug ,库module 的相对路劲会以../ 开头..