Get rid of redundant Jsr305State

This commit is contained in:
Victor Petukhov
2021-06-02 17:37:26 +03:00
parent f46dc713d7
commit ea901d81fb
2 changed files with 15 additions and 13 deletions
@@ -29,8 +29,6 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) {
jspecifyState: String?, jspecifyState: String?,
nullabilityAnnotations: Array<String>?, nullabilityAnnotations: Array<String>?,
): JavaTypeEnhancementState { ): JavaTypeEnhancementState {
val jsr305State = parseJsr305State(jsr305Args)
val compatqualCheckerFrameworkAnnotationsReportLevel = when (supportCompatqualCheckerFrameworkAnnotations) { val compatqualCheckerFrameworkAnnotationsReportLevel = when (supportCompatqualCheckerFrameworkAnnotations) {
"enable" -> ReportLevel.STRICT "enable" -> ReportLevel.STRICT
"disable" -> ReportLevel.IGNORE "disable" -> ReportLevel.IGNORE
@@ -43,10 +41,9 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) {
getDefaultReportLevelForAnnotation(CHECKER_FRAMEWORK_COMPATQUAL_ANNOTATIONS_PACKAGE) getDefaultReportLevelForAnnotation(CHECKER_FRAMEWORK_COMPATQUAL_ANNOTATIONS_PACKAGE)
} }
} }
val jsr305Settings = parseJsr305State(jsr305Args)
val jspecifyReportLevel = parseJspecifyReportLevel(jspecifyState) val jspecifyReportLevel = parseJspecifyReportLevel(jspecifyState)
val nullabilityAnnotationReportLevels = parseNullabilityAnnotationReportLevels(nullabilityAnnotations) val nullabilityAnnotationReportLevels = parseNullabilityAnnotationReportLevels(nullabilityAnnotations)
val jsr305Settings = Jsr305Settings(jsr305State.global ?: ReportLevel.WARN, jsr305State.migration, jsr305State.usedDefined)
return JavaTypeEnhancementState(jsr305Settings) { return JavaTypeEnhancementState(jsr305Settings) {
when { when {
@@ -99,17 +96,12 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) {
return reportLevel return reportLevel
} }
private data class Jsr305State( private fun parseJsr305State(args: Array<String>?): Jsr305Settings {
val global: ReportLevel?,
val migration: ReportLevel?,
val usedDefined: Map<FqName, ReportLevel>
)
private fun parseJsr305State(args: Array<String>?): Jsr305State {
var global: ReportLevel? = null var global: ReportLevel? = null
var migration: ReportLevel? = null var migration: ReportLevel? = null
val userDefined = mutableMapOf<FqName, ReportLevel>() val userDefined = mutableMapOf<FqName, ReportLevel>()
val compilerOption = "-Xjsr305" val compilerOption = "-Xjsr305"
val defaultSettings = Jsr305Settings.DEFAULT
fun parseJsr305UnderMigration(item: String): ReportLevel? { fun parseJsr305UnderMigration(item: String): ReportLevel? {
val rawState = item.split(":").takeIf { it.size == 2 }?.get(1) val rawState = item.split(":").takeIf { it.size == 2 }?.get(1)
@@ -156,7 +148,14 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) {
} }
} }
} }
return Jsr305State(global, migration, userDefined)
val globalLevel = global ?: defaultSettings.globalLevel
return Jsr305Settings(
globalLevel = globalLevel,
migrationLevel = migration ?: getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalLevel),
userDefinedLevelForSpecificAnnotation = defaultSettings.userDefinedLevelForSpecificAnnotation
)
} }
private fun reportUnrecognizedReportLevel(item: String, sourceCompilerOption: String) { private fun reportUnrecognizedReportLevel(item: String, sourceCompilerOption: String) {
@@ -55,10 +55,13 @@ fun getDefaultJsr305Settings(): Jsr305Settings {
} else { } else {
jsr305Settings.reportLevelBefore jsr305Settings.reportLevelBefore
} }
val migrationLevel = if (globalReportLevel == ReportLevel.WARN) null else globalReportLevel val migrationLevel = getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalReportLevel)
return Jsr305Settings(globalReportLevel, migrationLevel) return Jsr305Settings(globalReportLevel, migrationLevel)
} }
fun getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalReportLevel: ReportLevel) =
if (globalReportLevel == ReportLevel.WARN) null else globalReportLevel
fun getDefaultReportLevelForAnnotation(annotationFqName: FqName) = getReportLevelForAnnotation(annotationFqName, emptyMap()) fun getDefaultReportLevelForAnnotation(annotationFqName: FqName) = getReportLevelForAnnotation(annotationFqName, emptyMap())
fun getReportLevelForAnnotation(annotation: FqName, configuredReportLevels: Map<FqName, ReportLevel>): ReportLevel { fun getReportLevelForAnnotation(annotation: FqName, configuredReportLevels: Map<FqName, ReportLevel>): ReportLevel {