Improve incremental KAPT logging

This commit improves incremental KAPT logging. It reports processor
stats using their actual names. Also, warning is printed if incremental
annotation processing is requested, but not all APs are incremental
This commit is contained in:
Ivan Gavrilovic
2019-06-21 23:52:29 +09:00
committed by Yan Zhulanow
parent 5cab6fd6cf
commit 6619106af2
3 changed files with 20 additions and 8 deletions
@@ -65,7 +65,6 @@ open class ProcessorLoader(private val options: KaptOptions, private val logger:
val nonIncremental = processorNames.filter { !processorsInfo.containsKey(it) } val nonIncremental = processorNames.filter { !processorsInfo.containsKey(it) }
return if (nonIncremental.isNotEmpty()) { return if (nonIncremental.isNotEmpty()) {
logger.info("Incremental KAPT support is disabled. Processors that are not incremental: ${nonIncremental.joinToString()}.")
processors.map { IncrementalProcessor(it, DeclaredProcType.NON_INCREMENTAL) } processors.map { IncrementalProcessor(it, DeclaredProcType.NON_INCREMENTAL) }
} else { } else {
processors.map { IncrementalProcessor(it, processorsInfo.getValue(it.javaClass.name)) } processors.map { IncrementalProcessor(it, processorsInfo.getValue(it.javaClass.name)) }
@@ -13,10 +13,7 @@ import com.sun.tools.javac.processing.JavacFiler
import com.sun.tools.javac.processing.JavacProcessingEnvironment import com.sun.tools.javac.processing.JavacProcessingEnvironment
import com.sun.tools.javac.tree.JCTree import com.sun.tools.javac.tree.JCTree
import org.jetbrains.kotlin.base.kapt3.KaptFlag import org.jetbrains.kotlin.base.kapt3.KaptFlag
import org.jetbrains.kotlin.kapt3.base.incremental.DeclaredProcType import org.jetbrains.kotlin.kapt3.base.incremental.*
import org.jetbrains.kotlin.kapt3.base.incremental.GeneratedTypesTaskListener
import org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor
import org.jetbrains.kotlin.kapt3.base.incremental.MentionedTypesTaskListener
import org.jetbrains.kotlin.kapt3.base.util.KaptBaseError import org.jetbrains.kotlin.kapt3.base.util.KaptBaseError
import org.jetbrains.kotlin.kapt3.base.util.isJava9OrLater import org.jetbrains.kotlin.kapt3.base.util.isJava9OrLater
import org.jetbrains.kotlin.kapt3.base.util.measureTimeMillisWithResult import org.jetbrains.kotlin.kapt3.base.util.measureTimeMillisWithResult
@@ -87,6 +84,20 @@ fun KaptContext.doAnnotationProcessing(
cacheManager?.updateCache(processors) cacheManager?.updateCache(processors)
sourcesStructureListener?.let {
if (logger.isVerbose) {
logger.info("Analyzing sources structure took ${it.time}[ms].")
}
}
if (cacheManager != null && processors.any { it.getRuntimeType() == RuntimeProcType.NON_INCREMENTAL }) {
val nonIncremental =
processors.filter { it.getRuntimeType() == RuntimeProcType.NON_INCREMENTAL }.map { it.processorName }
logger.warn(
"Incremental annotation processing requested, but support is disabled because the following " +
"processors are not incremental: ${nonIncremental.joinToString()}."
)
}
val log = compilerAfterAP.log val log = compilerAfterAP.log
val filer = processingEnvironment.filer as JavacFiler val filer = processingEnvironment.filer as JavacFiler
@@ -123,7 +134,7 @@ private fun showProcessorTimings(wrappedProcessors: List<ProcessorWrapper>, logg
} }
} }
private class ProcessorWrapper(private val delegate: Processor) : Processor by delegate { private class ProcessorWrapper(private val delegate: IncrementalProcessor) : Processor by delegate {
private var initTime: Long = 0 private var initTime: Long = 0
private val roundTime = mutableListOf<Long>() private val roundTime = mutableListOf<Long>()
@@ -136,7 +147,7 @@ private class ProcessorWrapper(private val delegate: Processor) : Processor by d
return result return result
} }
override fun init(processingEnv: ProcessingEnvironment?) { override fun init(processingEnv: ProcessingEnvironment) {
initTime += measureTimeMillis { initTime += measureTimeMillis {
delegate.init(processingEnv) delegate.init(processingEnv)
} }
@@ -161,7 +172,7 @@ private class ProcessorWrapper(private val delegate: Processor) : Processor by d
} }
fun renderSpentTime(): String { fun renderSpentTime(): String {
val processorName = delegate.javaClass.simpleName val processorName = delegate.processorName
val totalTime = initTime + roundTime.sum() val totalTime = initTime + roundTime.sum()
return "$processorName: " + return "$processorName: " +
@@ -23,6 +23,8 @@ class IncrementalProcessor(private val processor: Processor, val kind: DeclaredP
private var dependencyCollector = lazy { createDependencyCollector() } private var dependencyCollector = lazy { createDependencyCollector() }
val processorName: String = processor.javaClass.name
override fun init(processingEnv: ProcessingEnvironment) { override fun init(processingEnv: ProcessingEnvironment) {
if (kind == DeclaredProcType.NON_INCREMENTAL) { if (kind == DeclaredProcType.NON_INCREMENTAL) {
processor.init(processingEnv) processor.init(processingEnv)