# Support lint-baseline analysis

**URL:** <https://community.sonarsource.com/t/support-lint-baseline-analysis/134890>\
**Category:** SonarQube Cloud\
**Tags:** sonarqube-cloud, scanner\
**Created:** [February 10, 2025, 1:26pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890 "2025-02-10T13:26:22Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 10, 2025, 1:26pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/1 "2025-02-10T13:26:22Z")

</div>

Hi  
We’re using SonarCloud and Gradle Plugin v5.0.0.4638 in our Android project. We also use Android Lint in it and would like to see its report analyzed and presented in Sonar.  
The problem is that we’ve setup Lint to treat all warnings as errors and put all existing warnings into a `lint-baseline.xml` file. It means that in our master branch we expect `lint-results.xml` to be always empty and `lint-baseline.xml` is the file, which we want to analyze with Sonar - observe that the number of issues in it is going down.

But it look like Sonar only supports `lint-results.xml` analysis through the `sonar.androidLint.reportPaths` attribute.

Is it possible to analyze `lint-baseline.xml` with it? Is there an alternative attribute? Could you add one? The practice we follow is actually pretty common in the Android world.

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 11, 2025, 10:07am UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/2 "2025-02-11T10:07:11Z")

</div>

Hey there.

`sonar.androidLint.reportPaths` supports multiple (comma seperated) values, so nothing should prevent you from being able to pass in both files to the `sonar.androidLint.reportPaths` parameter.

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 11, 2025, 10:43am UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/3 "2025-02-11T10:43:11Z")

</div>

But will it analyze a file in the baseline format? I read that Sonar doesn’t support it

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 11, 2025, 10:45am UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/4 "2025-02-11T10:45:20Z")

</div>

The only difference in format is some metadata at the top.

Non-baseline:

```auto
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.7.3">

```

Baseline:

```auto
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.7.3" type="baseline" client="gradle" dependencies="false" name="AGP (8.7.3)" variant="all" version="8.7.3">

```

This does not effect parsing of the reports.

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 14, 2025, 10:35am UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/5 "2025-02-14T10:35:45Z")

</div>

@Colin somehow it doesn’t work.

My project structure is that I have 2 apps in the `src` folder, for each I have separate `lint-baseline.xml` file - `src/app/lint-baseline.xml` and `src/app-wear/lint-baseline.xml`.

I configured `sonar.androidLint.reportPaths` to point at these files in `sonar` block within module specific `build.gradle.kts`, i.e. in `app/build.gradle.kts` and `app-wear/build.gradle.kts`. However, it does not work. When I run `sonar` task I get the following errors:

> No issues information will be saved as the report file ‘/opt/atlassian/pipelines/agent/build/src/app/lint-baseline.xml’ can’t be read.

and

> No issues information will be saved as the report file ‘/opt/atlassian/pipelines/agent/build/src/app-wear/lint-baseline.xml’ can’t be read.

Any ideas about what’s wrong?

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 14, 2025, 4:39pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/6 "2025-02-14T16:39:46Z")

</div>

Hey there.

Here’s what I get after generating a baseline file and adding this to my module’s _build.gradle.kts_:

_ **build.gradle.kts:** _

```auto
sonar {
    properties {
        property("sonar.androidLint.reportPaths", "build/reports/lint-results-debug.xml,lint-baseline.xml")
    }
}

```

**Output:**

```auto
Sensor Import of Android Lint issues [kotlin]
Importing /Users/colinmueller/Source/architecture-samples/app/build/reports/lint-results-debug.xml
Importing /Users/colinmueller/Source/architecture-samples/app/lint-baseline.xml
Sensor Import of Android Lint issues [kotlin] (done) | time=35ms

```

Success 🎉

The error that you’re encountering will appear if the report file is found by the sensor, but **cannot be opened** or **has the wrong contents**.

> [@Uladzislau\_Yarmolin](#):
>
> > No issues information will be saved as the report file ‘/opt/atlassian/pipelines/agent/build/src/app/lint-baseline.xml’ can’t be read.

Goign back to my example project, when I blanked out _lint-baseline.xml_, I received this error:

```auto
No issues information will be saved as the report file '/Users/colinmueller/Source/architecture-samples/shared-test/lint-baseline.xml' can't be read.
com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [2,0]

```

When I remove my permissions to the _lint-baseline.xml_ (`chmod u-rw`), I get the same error (can’t be read) but a different follow-up error message.

```auto
No issues information will be saved as the report file '/Users/colinmueller/Source/architecture-samples/app/lint-baseline.xml' can't be read.
java.io.FileNotFoundException: /Users/colinmueller/Source/architecture-samples/app/lint-baseline.xml (Permission denied)

```

If you add `--info` or `--debug` to your pipeline, is there more to your error message?

I think this will ultimately be a case of the file not containing what’s expected, or not having the right permissions.

> **Open this section to find my successfully imported lint-baseline.xml**
>
> ```auto
> <?xml version="1.0" encoding="UTF-8"?>
> <issues format="6" by="lint 8.7.3" type="baseline" client="gradle" dependencies="false" name="AGP (8.7.3)" variant="all" version="8.7.3">
> 
> <issue
> id="NewApi"
> message="Call requires API level 24, or core library desugaring (current min is 21): `java.util.Collection#removeIf`"
> errorLine1=" entries.removeIf { it.value.isCompleted }"
> errorLine2=" ~~~~~~~~">
> <location
> file="src/main/java/com/example/android/architecture/blueprints/todoapp/data/source/local/FakeTaskDao.kt"
> line="66"
> column="21"/>
> </issue>
> </issues>
> 
> ```

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 14, 2025, 5:06pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/7 "2025-02-14T17:06:24Z")

</div>

@Colin I can assure you that both files have valid contents. Though they’re pretty big - 22k+ lines each.  
W/o adding `--debug` or `--info` flags, I can see that both messages are followed by an `NullPointerException`. One of which is  
`java.lang.NullPointerException: null`

While the other is

```auto
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "this.path" is null
   at org.sonar.api.batch.fs.internal.predicates.AbsolutePathPredicate.apply(AbsolutePathPredicate.java:32)
   at org.sonar.api.batch.fs.internal.predicates.OrPredicate.apply(OrPredicate.java:46)
   at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
   at java.base/java.util.HashMap$ValueSpliterator.tryAdvance(HashMap.java:1800)
   at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)
   at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)
   at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)
   at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)
   at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)
   at org.sonar.api.batch.fs.internal.DefaultFileSystem.inputFile(DefaultFileSystem.java:96)
   at org.sonar.scanner.scan.filesystem.MutableFileSystem.inputFile(MutableFileSystem.java:39)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintSensorKt.saveIssue(AndroidLintSensor.kt:75)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintSensorKt.importReport$lambda$1$lambda$0(AndroidLintSensor.kt:57)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintXmlReportReader.onEndElement(AndroidLintXmlReportReader.kt:62)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintXmlReportReader.read(AndroidLintXmlReportReader.kt:55)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintXmlReportReader.access$read(AndroidLintXmlReportReader.kt:34)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintXmlReportReader$Companion.read(AndroidLintXmlReportReader.kt:89)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintSensorKt.importReport(AndroidLintSensor.kt:57)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintSensorKt.access$importReport(AndroidLintSensor.kt:1)
   at org.sonarsource.kotlin.externalreport.androidlint.AndroidLintSensor.reportConsumer$lambda$1(AndroidLintSensor.kt:51)
   at org.sonarsource.kotlin.api.frontend.AbstractPropertyHandlerSensor.executeOnFiles(AbstractPropertyHandlerSensor.kt:55)
   at org.sonarsource.kotlin.api.frontend.AbstractPropertyHandlerSensor.execute(AbstractPropertyHandlerSensor.kt:45)
   at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:63)
   at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
   at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
   at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
   at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
   at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
   at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
   at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
   at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:190)
   at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:186)
   at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:183)
   at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:157)
   at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
   at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
   at org.sonar.scanner.bootstrap.ScannerContainer.doAfterStart(ScannerContainer.java:416)
   at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
   at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
   at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
   at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
   at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
   at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
   at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
   at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.base/java.lang.reflect.Method.invoke(Method.java:568)
   at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
   at jdk.proxy7/jdk.proxy7.$Proxy188.execute(Unknown Source)
   at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
   at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
   at org.sonarqube.gradle.SonarTask.run(SonarTask.java:131)
   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.base/java.lang.reflect.Method.invoke(Method.java:568)
   at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
   at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
   at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
   at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
   at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
   at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:229)
   at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:212)
   at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:195)
   at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:162)
   at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
   at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
   at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
   at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
   at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
   at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
   at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:42)
   at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:75)
   at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
   at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50)
   at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28)
   at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
   at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
   at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61)
   at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26)
   at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:69)
   at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:46)
   at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
   at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
   at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189)
   at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
   at org.gradle.internal.Either$Right.fold(Either.java:175)
   at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62)
   at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
   at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
   at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46)
   at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35)
   at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:75)
   at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:53)
   at java.base/java.util.Optional.orElseGet(Optional.java:364)
   at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:53)
   at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:35)
   at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
   at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
   at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49)
   at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27)
   at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71)
   at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39)
   at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
   at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
   at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:107)
   at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:56)
   at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:64)
   at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:43)
   at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:125)
   at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:56)
   at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36)
   at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
   at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
   at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
   at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75)
   at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41)
   at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35)
   at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:289)
   at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31)
   at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22)
   at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40)
   at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23)
   at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67)
   at java.base/java.util.Optional.orElseGet(Optional.java:364)
   at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67)
   at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39)
   at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46)
   at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34)
   at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:48)
   at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35)
   at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:61)
   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:127)
   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116)
   at org.gradle.api.internal.tasks.execution.ProblemsTaskPathTrackingTaskExecuter.execute(ProblemsTaskPathTrackingTaskExecuter.java:40)
   at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
   at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
   at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
   at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
   at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
   at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
   at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
   at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
   at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
   at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
   at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
   at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
   at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
   at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
   at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
   at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:85)
   at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
   at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
   at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:459)
   at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:376)
   at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
   at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
   at java.base/java.lang.Thread.run(Thread.java:840)

```

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 14, 2025, 5:07pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/8 "2025-02-14T17:07:24Z")

</div>

If I open a private message would you be able to share the file in full?

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 14, 2025, 5:11pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/9 "2025-02-14T17:11:09Z")

</div>

Unfortunately, I don’t think so ☹ At least not immediately, as idk if I can share this info.

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 14, 2025, 5:27pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/10 "2025-02-14T17:27:15Z")

</div>

Then I think we might be stuck. 😕

You could try cutting down the file to see if you can isolate the issue to a specific issue (think [git bisect](https://www.metaltoad.com/blog/beginners-guide-git-bisect-process-elimination) style) and create a minimal reproducer.

Or let’s say you took your existing file and removed everything except 1 issue – do you still face the issue? If yes, that’s an easy file to share. If not, the goal is to find the issue(s) that **do** cause the issue!

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [February 14, 2025, 5:28pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/11 "2025-02-14T17:28:02Z")

</div>

> [@Uladzislau\_Yarmolin](#):
>
> `AndroidLintSensor`

Could you please check out the NPE stacktrace, which I shared? It has Sonar classes in it. Also, I’ve just spotted that I didn’t capture a couple of top lines in it. Now it’s fixed.

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [February 17, 2025, 1:28pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/12 "2025-02-17T13:28:54Z")

</div>

I’ve checked the stacktrace and unfortunately it’s not telling us much! I’ve also tried to “mess up” some _lint-baseline.xml_ reports (removing attributes, etc.) and still can’t reproduce the issue. A minimal reproducer from your side would be best to track the issue down!

---

<div class="post-metadata">

**Author:** ![Uladzislau\_Yarmolin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/uladzislau_yarmolin/32/52736_2.png) [@Uladzislau\_Yarmolin](https://community.sonarsource.com/u/Uladzislau_Yarmolin)\
**Post date:** [March 6, 2025, 2:41pm UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/13 "2025-03-06T14:41:03Z")

</div>

@Colin I’m a but stuck ATM. I managed to come to the point, when I have a baseline, for which processing ends up with the messaged, which I mentioned above. If I cut it twice, then for any of the two resulting parts these messaged do not appear. But I also don’t see any evidence of success message in logs. Unfortunately, due to other issues, I can’t go and check that in the Sonar UI.

So, for baseline of around 350 lines length - no issue. For 700+ - the NPE.

Also, Idk if it effects anything, but our Lint setup contains custom rules and their violation is present in the baseline.

---

<div class="post-metadata">

**Author:** ![Colin](https://dub1.discourse-cdn.com/sonarsource/user_avatar/community.sonarsource.com/colin/32/55255_2.png) [@Colin](https://community.sonarsource.com/u/Colin)\
**Post date:** [March 7, 2025, 6:48am UTC](https://community.sonarsource.com/t/support-lint-baseline-analysis/134890/14 "2025-03-07T06:48:51Z")

</div>

Hey @Uladzislau_Yarmolin

I really want to help you, but I need examples of XML files that reproduce the issues you’re talking about.
