diff --git a/build-logic/convention/src/main/kotlin/PipelineJacocoConventionPlugin.kt b/build-logic/convention/src/main/kotlin/PipelineJacocoConventionPlugin.kt index 748397d2a4..b45cdd57e0 100644 --- a/build-logic/convention/src/main/kotlin/PipelineJacocoConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/PipelineJacocoConventionPlugin.kt @@ -35,17 +35,30 @@ class PipelineJacocoConventionPlugin : Plugin { reports.xml.required.set(true) reports.html.required.set(false) // Disable html reports to decrease report upload/download time in github pipeline - val javaTree = fileTree("${project.buildDir}/intermediates/javac/debug/classes") { exclude(fileFilter) } - val kotlinTree = fileTree("${project.buildDir}/tmp/kotlin-classes/debug") { exclude(fileFilter) } + val javaTree = fileTree("${project.buildDir}/intermediates/javac/debug") { + include("**/classes/**") + exclude(fileFilter) + } + val kotlinTree = fileTree("${project.buildDir}") { + include("tmp/kotlin-classes/debug/**", "classes/kotlin/debug/**", "classes/kotlin/main/**") + exclude(fileFilter) + } classDirectories.setFrom(files(javaTree, kotlinTree)) - sourceDirectories.setFrom(files("${project.projectDir}/src/main/java")) + sourceDirectories.setFrom( + files( + "${project.projectDir}/src/main/java", + "${project.projectDir}/src/main/kotlin", + ), + ) executionData.setFrom( - fileTree("$buildDir") { + fileTree(buildDir) { include( - "jacoco/testDebugUnitTest.exec", - "outputs/code-coverage/connected/*coverage.ec", + "jacoco/testDebugUnitTest.exec", // Standard Gradle / Old AGP + "outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec", // Modern AGP Unit Tests + "outputs/code-coverage/connected/*coverage.ec", // Old AGP Instrumented Tests + "outputs/code_coverage/debugAndroidTest/connected/**/*.ec", // Modern AGP Instrumented Tests ) }, ) diff --git a/build-logic/convention/src/main/kotlin/PipelineSonarConventionPlugin.kt b/build-logic/convention/src/main/kotlin/PipelineSonarConventionPlugin.kt index d28c83b3e5..e69de29bb2 100644 --- a/build-logic/convention/src/main/kotlin/PipelineSonarConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/PipelineSonarConventionPlugin.kt @@ -1,40 +0,0 @@ -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.kotlin.dsl.configure -import org.sonarqube.gradle.SonarExtension -import java.io.File - -class PipelineSonarConventionPlugin : Plugin { - override fun apply(target: Project) { - with(target) { - with(pluginManager) { - apply("org.sonarqube") - } - - extensions.configure { - properties { - property("sonar.projectName", "Simprints ID") - property("sonar.c.file.suffixes", "-") - property("sonar.java.coveragePlugin", "jacoco") - } - } - - subprojects { - extensions.configure { - properties { - // Fix for https://community.sonarsource.com/t/random-sub-projects-fail-analysis-in-gradle-multi-projects-build/49777 - property("sonar.userHome", "$projectDir$cacheDir") - property("sonar.coverage.jacoco.xmlReportPaths", listOf("$projectDir$jacocoDir")) - } - } - } - } - } - - companion object { - private val cacheDir = "${File.separator}build${File.separator}.sonar" - private val jacocoDir = "${File.separator}build${File.separator}reports${File.separator}jacoco${File.separator}jacocoTestReport${File.separator}jacocoTestReport.xml" - private val sourceDir = "${File.separator}src${File.separator}main${File.separator}java${File.separator}com${File.separator}simprints" - private val binariesDir = "${File.separator}build${File.separator}" - } -} diff --git a/build-logic/sonarqube.gradle b/build-logic/sonarqube.gradle index 0683ef0329..1484ca0c70 100644 --- a/build-logic/sonarqube.gradle +++ b/build-logic/sonarqube.gradle @@ -12,9 +12,9 @@ sonarqube { property "sonar.java.coveragePlugin", "jacoco" } } - subprojects { sonarqube { + androidVariant = "debug" properties { property "sonar.java.binaries", "$projectDir$binariesDir" property "sonar.coverage.jacoco.xmlReportPaths", [ diff --git a/infra/config-store/src/main/java/com/simprints/infra/config/store/LastCallingPackageStore.kt b/infra/config-store/src/main/java/com/simprints/infra/config/store/LastCallingPackageStore.kt index 3133f497c8..1a92c745f5 100644 --- a/infra/config-store/src/main/java/com/simprints/infra/config/store/LastCallingPackageStore.kt +++ b/infra/config-store/src/main/java/com/simprints/infra/config/store/LastCallingPackageStore.kt @@ -17,7 +17,7 @@ class LastCallingPackageStore @Inject constructor( var lastCallingPackageName: String? get() = prefs.getString( KEY_LAST_CALLING_PACKAGE_NAME, - context.getString(com.simprints.infra.resources.R.string.default_commcare_package_name) + context.getString(com.simprints.infra.resources.R.string.default_commcare_package_name), ) set(value) { prefs.edit { @@ -33,4 +33,4 @@ class LastCallingPackageStore @Inject constructor( private const val PREF_FILE_NAME = "last_calling_package_store" private const val KEY_LAST_CALLING_PACKAGE_NAME = "last_calling_package_name" } -} \ No newline at end of file +} diff --git a/infra/resources/build.gradle.kts b/infra/resources/build.gradle.kts index c61c064110..5275c5da32 100644 --- a/infra/resources/build.gradle.kts +++ b/infra/resources/build.gradle.kts @@ -2,14 +2,6 @@ plugins { id("simprints.android.library") } -sonarqube { - /* - * We skip the infraresources module because it has no source code to analyse. This should be - * removed if that ever changes - */ - isSkipProject = true -} - android { namespace = "com.simprints.infra.resources" } diff --git a/infra/ui-base/src/main/java/com/simprints/infra/uibase/camera/qrscan/CameraHelper.kt b/infra/ui-base/src/main/java/com/simprints/infra/uibase/camera/qrscan/CameraHelper.kt index 7192207ad1..79335dc118 100644 --- a/infra/ui-base/src/main/java/com/simprints/infra/uibase/camera/qrscan/CameraHelper.kt +++ b/infra/ui-base/src/main/java/com/simprints/infra/uibase/camera/qrscan/CameraHelper.kt @@ -17,7 +17,6 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.qualifiers.ApplicationContext import java.util.concurrent.Executors -import javax.inject.Inject @ExcludedFromGeneratedTestCoverageReports( reason = "This is an injectable wrapper around cameraX and ML kit APIs. There is no business logic.",