From 8df729c9f1789ee9e0044570d87e691b6ad8587f Mon Sep 17 00:00:00 2001 From: Guillermo Mazzola Date: Fri, 14 Mar 2025 14:46:39 +0100 Subject: [PATCH] Fixing CI (adding `detekt` issues to baseline) --- .github/workflows/main.yml | 2 +- build.gradle.kts | 4 ++ gradle/libs.versions.toml | 5 +- .../detekt-baseline.xml | 57 +++++++++++++++++ .../detekt-baseline.xml | 13 ++++ .../detekt-baseline.xml | 19 ++++++ .../detekt-baseline.xml | 8 +++ leakcanary/leakcanary-app/detekt-baseline.xml | 16 +++++ .../leakcanary-core/detekt-baseline.xml | 13 ++++ .../detekt-baseline.xml | 7 +++ .../leakcanary-jvm-test/detekt-baseline.xml | 7 +++ .../leakcanary-test-core/detekt-baseline.xml | 8 +++ .../detekt-baseline.xml | 9 +++ .../detekt-baseline.xml | 7 +++ .../object-watcher/detekt-baseline.xml | 7 +++ .../plumber-android-core/detekt-baseline.xml | 7 +++ plumber/plumber-android/detekt-baseline.xml | 7 +++ .../detekt-baseline.xml | 9 +++ shark/shark-android/detekt-baseline.xml | 59 ++++++++++++++++++ shark/shark-cli/detekt-baseline.xml | 16 +++++ shark/shark-graph/detekt-baseline.xml | 49 +++++++++++++++ shark/shark-hprof-test/detekt-baseline.xml | 7 +++ shark/shark-hprof/detekt-baseline.xml | 16 +++++ shark/shark-log/detekt-baseline.xml | 7 +++ shark/shark-test/detekt-baseline.xml | 7 +++ shark/shark/detekt-baseline.xml | 61 +++++++++++++++++++ 26 files changed, 425 insertions(+), 2 deletions(-) create mode 100644 leakcanary/leakcanary-android-core/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-android-instrumentation/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-android-release/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-android-utils/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-app/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-core/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-deobfuscation-gradle-plugin/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-jvm-test/detekt-baseline.xml create mode 100644 leakcanary/leakcanary-test-core/detekt-baseline.xml create mode 100644 object-watcher/object-watcher-android-core/detekt-baseline.xml create mode 100644 object-watcher/object-watcher-android/detekt-baseline.xml create mode 100644 object-watcher/object-watcher/detekt-baseline.xml create mode 100644 plumber/plumber-android-core/detekt-baseline.xml create mode 100644 plumber/plumber-android/detekt-baseline.xml create mode 100644 samples/leakcanary-android-sample/detekt-baseline.xml create mode 100644 shark/shark-android/detekt-baseline.xml create mode 100644 shark/shark-cli/detekt-baseline.xml create mode 100644 shark/shark-graph/detekt-baseline.xml create mode 100644 shark/shark-hprof-test/detekt-baseline.xml create mode 100644 shark/shark-hprof/detekt-baseline.xml create mode 100644 shark/shark-log/detekt-baseline.xml create mode 100644 shark/shark-test/detekt-baseline.xml create mode 100644 shark/shark/detekt-baseline.xml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b514bccb1..42bd1ed49 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -101,7 +101,7 @@ jobs: ./gradlew leakcanary:leakcanary-android-core:connectedCheck leakcanary:leakcanary-android:connectedCheck leakcanary:leakcanary-android-instrumentation:connectedCheck --no-build-cache --no-daemon --stacktrace - name: Upload results if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.api-level }}-${{ matrix.arch }}-instrumentation-test-results path: | diff --git a/build.gradle.kts b/build.gradle.kts index c8aaa5698..375e99403 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -84,6 +84,10 @@ subprojects { } } + dependencies { + "detektPlugins"(rootProject.libs.detekt.formatting) + } + extensions.configure { config = rootProject.files("config/detekt-config.yml") parallel = true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9cd723ada..c2f5045e8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,6 +21,7 @@ coroutines = "1.7.3" androidXTest = "1.1.0" androidXJunit = "1.1.3" workManager = "2.7.0" +detekt = "1.23.8" androidMinSdk = "14" androidCompileSdk = "34" @@ -30,7 +31,7 @@ gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ve gradlePlugin-dokka = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version = "1.8.10" } gradlePlugin-binaryCompatibility = { module = "org.jetbrains.kotlinx:binary-compatibility-validator", version = "0.13.1" } gradlePlugin-mavenPublish = { module = "com.vanniktech:gradle-maven-publish-plugin", version = "0.25.2" } -gradlePlugin-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version = "1.6.0" } +gradlePlugin-detekt = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } gradlePlugin-keeper = { module = "com.slack.keeper:keeper", version = "0.7.0" } gradlePlugin-sqldelight = { module = "app.cash.sqldelight:gradle-plugin", version = "2.0.0-alpha05" } @@ -39,6 +40,8 @@ coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", ve kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } +detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } + # We don't need the latest version of AndroidX (there are no bugs that impact what LeakCanary # relies on), we're sticking a bit older because most apps will be using a more recent version # and they'll automatically resolve to higher version without having to necessarily resort to a diff --git a/leakcanary/leakcanary-android-core/detekt-baseline.xml b/leakcanary/leakcanary-android-core/detekt-baseline.xml new file mode 100644 index 000000000..c86f672af --- /dev/null +++ b/leakcanary/leakcanary-android-core/detekt-baseline.xml @@ -0,0 +1,57 @@ + + + + + ChainWrapping:HeapDumpRenderer.kt$HeapDumpRenderer$&& + ChainWrapping:LeakCanaryTextView.kt$LeakCanaryTextView$+ + ChainWrapping:SquigglySpanRenderer.kt$SquigglySpanRenderer.Companion$|| + FinalNewline:HeapAnalysisTable.kt$leakcanary.internal.activity.db.HeapAnalysisTable.kt + FinalNewline:LeakTraceTable.kt$leakcanary.internal.activity.db.LeakTraceTable.kt + FinalNewline:LeakTraceWrapper.kt$leakcanary.internal.activity.screen.LeakTraceWrapper.kt + FinalNewline:LeakTraceWrapperTest.kt$leakcanary.internal.activity.screen.LeakTraceWrapperTest.kt + FinalNewline:LeaksDbHelper.kt$leakcanary.internal.activity.db.LeaksDbHelper.kt + FinalNewline:NotificationReceiver.kt$leakcanary.internal.NotificationReceiver.kt + FinalNewline:NotificationType.kt$leakcanary.internal.NotificationType.kt + FinalNewline:Screen.kt$leakcanary.internal.navigation.Screen.kt + FinalNewline:Serializables.kt$leakcanary.internal.Serializables.kt + FinalNewline:SimpleListAdapter.kt$leakcanary.internal.activity.ui.SimpleListAdapter.kt + FinalNewline:TimeFormatter.kt$leakcanary.internal.activity.ui.TimeFormatter.kt + FinalNewline:UiUtils.kt$leakcanary.internal.activity.ui.UiUtils.kt + MaximumLineLength:HeapDumpTrigger.kt$HeapDumpTrigger$ + MaximumLineLength:LeakActivity.kt$LeakActivity$ + MaximumLineLength:LeakScreen.kt$LeakScreen$ + MaximumLineLength:LogcatEventListener.kt$LogcatEventListener$ + MaximumLineLength:WorkManagerHeapAnalyzer.kt$WorkManagerHeapAnalyzer$ + MultiLineIfElse:AndroidDebugHeapAnalyzer.kt$AndroidDebugHeapAnalyzer$result + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$"${ extra( className.substring( 0, packageEnd ) ) }.$styledClassName" + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$END + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$START + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$leakTrace.leakingObject + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$leakTrace.referencePath[elementIndex( position + 1 )].originObject + MultiLineIfElse:DisplayLeakAdapter.kt$DisplayLeakAdapter$styledClassName + MultiLineIfElse:HeapAnalysisFailureScreen.kt$HeapAnalysisFailureScreen$"" + MultiLineIfElse:HeapDumpControl.kt$HeapDumpControl$Yup + MultiLineIfElse:LeakScreen.kt$LeakScreen$"" + MultiLineIfElse:LeakScreen.kt$LeakScreen$"<br><br>" + "A <font color='#FFCC32'>Library Leak</font> is a leak caused by a known bug in 3rd party code that you do not have control over. " + "(<a href=\"https://square.github.io/leakcanary/fundamentals-how-leakcanary-works/#4-categorizing-leaks\">Learn More</a>)<br><br>" + "<b>Leak pattern</b>: ${selectedLeak.pattern}<br><br>" + "<b>Description</b>: ${parseLinks(selectedLeak.description)}" + MultiLineIfElse:LeakTable.kt$LeakTable$cursor.getLong(0) + MultiLineIfElse:LeakTable.kt$LeakTable$throw IllegalStateException( "No id found for leak with signature '${leak.signature}'" ) + MultiLineIfElse:LeakTraceWrapper.kt$LeakTraceWrapper$null + MultiLineIfElse:Notifications.kt$Notifications$Notification.Builder(context) + NoBlankLineBeforeRbrace:HeapDumpsScreen.kt$HeapDumpsScreen$ + NoBlankLineBeforeRbrace:LeakCanaryConfigTest.kt$LeakCanaryConfigTest$ + NoConsecutiveBlankLines:DisplayLeakConnectorView.kt$DisplayLeakConnectorView$ + NoConsecutiveBlankLines:InternalLeakCanary.kt$InternalLeakCanary$ + NoConsecutiveBlankLines:LeakCanary.kt$LeakCanary.Config.Builder$ + NoConsecutiveBlankLines:LeakCanaryAndroidInternalUtils.kt$ + NoConsecutiveBlankLines:RenderHeapDumpScreen.kt$ + NoMultipleSpaces:LogcatEventListener.kt$LogcatEventListener$ + NoMultipleSpaces:NotificationEventListener.kt$NotificationEventListener$ + NoSemicolons:NotificationType.kt$NotificationType.LEAKCANARY_MAX$; + SpacingAroundComma:NotificationEventListener.kt$NotificationEventListener$, + SpacingAroundCurly:TvEventListener.kt$TvEventListener${ + SpacingAroundKeyword:InternalLeakCanary.kt$InternalLeakCanary$for + SpacingAroundKeyword:LogcatEventListener.kt$LogcatEventListener$when + StringTemplate:DisplayLeakAdapter.kt$DisplayLeakAdapter$${leakingStatusReason} + StringTemplate:LeakScreen.kt$LeakScreen$${word} + + diff --git a/leakcanary/leakcanary-android-instrumentation/detekt-baseline.xml b/leakcanary/leakcanary-android-instrumentation/detekt-baseline.xml new file mode 100644 index 000000000..fbc2a8486 --- /dev/null +++ b/leakcanary/leakcanary-android-instrumentation/detekt-baseline.xml @@ -0,0 +1,13 @@ + + + + + MaximumLineLength:NoLeakAssertionFailedError.kt$NoLeakAssertionFailedError.Companion$ + MultiLineIfElse:InstrumentationHeapAnalyzer.kt$InstrumentationHeapAnalyzer$result + NoConsecutiveBlankLines:DetectLeaksAfterTestSuccess.kt$ + NoConsecutiveBlankLines:LeakAssertions.kt$ + NoConsecutiveBlankLines:SkipLeakDetection.kt$ + StringTemplate:AndroidDetectLeaksAssert.kt$AndroidDetectLeaksAssert$${classSimpleName} + StringTemplate:AndroidDetectLeaksAssert.kt$AndroidDetectLeaksAssert$${methodName} + + diff --git a/leakcanary/leakcanary-android-release/detekt-baseline.xml b/leakcanary/leakcanary-android-release/detekt-baseline.xml new file mode 100644 index 000000000..6a21f51a4 --- /dev/null +++ b/leakcanary/leakcanary-android-release/detekt-baseline.xml @@ -0,0 +1,19 @@ + + + + + CommentSpacing:GoodAndroidVersionInterceptor.kt$GoodAndroidVersionInterceptor$// findObjectById() sometimes failing. See #1759 + FinalNewline:BackgroundTrigger.kt$leakcanary.BackgroundTrigger.kt + FinalNewline:ConditionalInterceptor.kt$leakcanary.ConditionalInterceptor.kt + FinalNewline:Friendly.kt$leakcanary.internal.friendly.Friendly.kt + FinalNewline:GoodAndroidVersionInterceptor.kt$leakcanary.GoodAndroidVersionInterceptor.kt + FinalNewline:HeapAnalysisInterceptor.kt$leakcanary.HeapAnalysisInterceptor.kt + FinalNewline:HeapAnalysisJob.kt$leakcanary.HeapAnalysisJob.kt + FinalNewline:MinimumElapsedSinceStartInterceptor.kt$leakcanary.MinimumElapsedSinceStartInterceptor.kt + FinalNewline:MinimumMemoryInterceptor.kt$leakcanary.MinimumMemoryInterceptor.kt + FinalNewline:OncePerPeriodInterceptor.kt$leakcanary.OncePerPeriodInterceptor.kt + FinalNewline:SaveResourceIdsInterceptor.kt$leakcanary.SaveResourceIdsInterceptor.kt + MaximumLineLength:OncePerPeriodInterceptor.kt$OncePerPeriodInterceptor$ + MultiLineIfElse:RealHeapAnalysisJob.kt$RealHeapAnalysisJob$null + + diff --git a/leakcanary/leakcanary-android-utils/detekt-baseline.xml b/leakcanary/leakcanary-android-utils/detekt-baseline.xml new file mode 100644 index 000000000..4dbd08450 --- /dev/null +++ b/leakcanary/leakcanary-android-utils/detekt-baseline.xml @@ -0,0 +1,8 @@ + + + + + FinalNewline:LogcatSharkLog.kt$leakcanary.LogcatSharkLog.kt + FinalNewline:Objects.kt$leakcanary.internal.Objects.kt + + diff --git a/leakcanary/leakcanary-app/detekt-baseline.xml b/leakcanary/leakcanary-app/detekt-baseline.xml new file mode 100644 index 000000000..ef4dd6e33 --- /dev/null +++ b/leakcanary/leakcanary-app/detekt-baseline.xml @@ -0,0 +1,16 @@ + + + + + FinalNewline:Color.kt$org.leakcanary.ui.theme.Color.kt + FinalNewline:Theme.kt$org.leakcanary.ui.theme.Theme.kt + FinalNewline:Type.kt$org.leakcanary.ui.theme.Type.kt + MaximumLineLength:LeakScreen.kt$LeakViewModel$ + MultiLineIfElse:LeakTraceWrapper.kt$LeakTraceWrapper$null + NoBlankLineBeforeRbrace:ClientAppAnalysesScreen.kt$ + NoConsecutiveBlankLines:TreeMapScreen.kt$ + ParameterListWrapping:DatabaseModule.kt$DatabaseModule$( app: Application, @WriteAheadLoggingEnabled wolEnabled: Boolean ) + SpacingAroundKeyword:HeapRepository.kt$HeapRepository$if + StringTemplate:LeakScreen.kt$${leakingStatusReason} + + diff --git a/leakcanary/leakcanary-core/detekt-baseline.xml b/leakcanary/leakcanary-core/detekt-baseline.xml new file mode 100644 index 000000000..468db87ee --- /dev/null +++ b/leakcanary/leakcanary-core/detekt-baseline.xml @@ -0,0 +1,13 @@ + + + + + MaximumLineLength:DumpingRepeatingScenarioObjectGrowthDetector.kt$DumpingRepeatingScenarioObjectGrowthDetector$ + MaximumLineLength:ObjectGrowthWarmupHeapDumperTest.kt$ObjectGrowthWarmupHeapDumperTest$ + NoConsecutiveBlankLines:DatetimeFormattedHeapDumpFileProvider.kt$ + NoConsecutiveBlankLines:DumpingRepeatingScenarioObjectGrowthDetector.kt$ + NoConsecutiveBlankLines:DumpingRepeatingScenarioObjectGrowthDetectorTest.kt$DumpingRepeatingScenarioObjectGrowthDetectorTest$ + NoConsecutiveBlankLines:ObjectGrowthWarmupHeapDumperTest.kt$ObjectGrowthWarmupHeapDumperTest$ + NoUnusedImports:HeapDumpFileProvider.kt$leakcanary.HeapDumpFileProvider.kt + + diff --git a/leakcanary/leakcanary-deobfuscation-gradle-plugin/detekt-baseline.xml b/leakcanary/leakcanary-deobfuscation-gradle-plugin/detekt-baseline.xml new file mode 100644 index 000000000..e15cf4ce6 --- /dev/null +++ b/leakcanary/leakcanary-deobfuscation-gradle-plugin/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + NoUnusedImports:LeakCanaryLeakDeobfuscationPlugin.kt$com.squareup.leakcanary.deobfuscation.LeakCanaryLeakDeobfuscationPlugin.kt + + diff --git a/leakcanary/leakcanary-jvm-test/detekt-baseline.xml b/leakcanary/leakcanary-jvm-test/detekt-baseline.xml new file mode 100644 index 000000000..b39c1773c --- /dev/null +++ b/leakcanary/leakcanary-jvm-test/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + NoConsecutiveBlankLines:HotSpotHeapDumper.kt$ + + diff --git a/leakcanary/leakcanary-test-core/detekt-baseline.xml b/leakcanary/leakcanary-test-core/detekt-baseline.xml new file mode 100644 index 000000000..b09c0cf4b --- /dev/null +++ b/leakcanary/leakcanary-test-core/detekt-baseline.xml @@ -0,0 +1,8 @@ + + + + + StringTemplate:TestHeapDumpFileProvider.kt$TestHeapDumpFileProvider$${classSimpleName} + StringTemplate:TestHeapDumpFileProvider.kt$TestHeapDumpFileProvider$${escapedMethodName} + + diff --git a/object-watcher/object-watcher-android-core/detekt-baseline.xml b/object-watcher/object-watcher-android-core/detekt-baseline.xml new file mode 100644 index 000000000..6d933b59e --- /dev/null +++ b/object-watcher/object-watcher-android-core/detekt-baseline.xml @@ -0,0 +1,9 @@ + + + + + FinalNewline:Applications.kt$leakcanary.internal.Applications.kt + FinalNewline:InstallableWatcher.kt$leakcanary.InstallableWatcher.kt + FinalNewline:LeakCanaryDelegate.kt$leakcanary.internal.LeakCanaryDelegate.kt + + diff --git a/object-watcher/object-watcher-android/detekt-baseline.xml b/object-watcher/object-watcher-android/detekt-baseline.xml new file mode 100644 index 000000000..e0163d5d3 --- /dev/null +++ b/object-watcher/object-watcher-android/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + ParameterListWrapping:MainProcessAppWatcherInstaller.kt$MainProcessAppWatcherInstaller$( uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array<out String>? ) + + diff --git a/object-watcher/object-watcher/detekt-baseline.xml b/object-watcher/object-watcher/detekt-baseline.xml new file mode 100644 index 000000000..3b7845b14 --- /dev/null +++ b/object-watcher/object-watcher/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + MultiLineIfElse:DeletableObjectReporter.kt$object : TrackedObjectReachability { override val isStronglyReachable: Boolean get() = false override val isRetained: Boolean get() = false } + + diff --git a/plumber/plumber-android-core/detekt-baseline.xml b/plumber/plumber-android-core/detekt-baseline.xml new file mode 100644 index 000000000..222c98c56 --- /dev/null +++ b/plumber/plumber-android-core/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + SafeCast:AndroidLeakFixes.kt$AndroidLeakFixes.Companion$if (it is HandlerThread) it else null + + diff --git a/plumber/plumber-android/detekt-baseline.xml b/plumber/plumber-android/detekt-baseline.xml new file mode 100644 index 000000000..c4c92352c --- /dev/null +++ b/plumber/plumber-android/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + ParameterListWrapping:PlumberInstaller.kt$PlumberInstaller$( uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array<out String>? ) + + diff --git a/samples/leakcanary-android-sample/detekt-baseline.xml b/samples/leakcanary-android-sample/detekt-baseline.xml new file mode 100644 index 000000000..61bf24759 --- /dev/null +++ b/samples/leakcanary-android-sample/detekt-baseline.xml @@ -0,0 +1,9 @@ + + + + + FinalNewline:LeakingService.kt$com.example.leakcanary.LeakingService.kt + FinalNewline:LeakingSingleton.kt$com.example.leakcanary.LeakingSingleton.kt + FinalNewline:LeakingThread.kt$com.example.leakcanary.LeakingThread.kt + + diff --git a/shark/shark-android/detekt-baseline.xml b/shark/shark-android/detekt-baseline.xml new file mode 100644 index 000000000..05c50fc3c --- /dev/null +++ b/shark/shark-android/detekt-baseline.xml @@ -0,0 +1,59 @@ + + + + + ChainWrapping:AndroidObjectInspectorsTest.kt$AndroidObjectInspectorsTest$&& + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.ACCESSIBILITY_NODE_INFO__MORIGINALTEXT$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.ACTIVITY_CHOOSE_MODEL$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.ACTIVITY_MANAGER_MCONTEXT$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.APP_WIDGET_HOST_CALLBACKS$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.AUDIO_MANAGER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.AUDIO_MANAGER__MCONTEXT_STATIC$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.BACKDROP_FRAME_RENDERER__MDECORVIEW$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.BLOCKING_QUEUE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.CLIPBOARD_UI_MANAGER__SINSTANCE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.CONNECTIVITY_MANAGER__SINSTANCE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.EDITTEXT_BLINK_MESSAGEQUEUE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.INPUT_METHOD_MANAGER_IS_TERRIBLE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.INSTRUMENTATION_RECOMMEND_ACTIVITY$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.LAYOUT_TRANSITION$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.MAPPER_CLIENT$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.MEDIA_SCANNER_CONNECTION$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.MEDIA_SESSION_LEGACY_HELPER__SINSTANCE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.PERSONA_MANAGER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.RESOURCES__MCONTEXT$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SPAN_CONTROLLER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SPEECH_RECOGNIZER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SPELL_CHECKER$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SPELL_CHECKER_SESSION$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.TEXT_LINE__SCACHED$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.USER_MANAGER__SINSTANCE$+ + ChainWrapping:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.VIEW_CONFIGURATION__MCONTEXT$+ + ChainWrapping:AndroidServices.kt$AndroidServices$&& + ChainWrapping:LegacyHprofTest.kt$LegacyHprofTest$&& + Filename:AndroidReferenceMatcher_XIAMI__RESOURCES_IMPL_Test.kt$shark.AndroidReferenceMatcher_XIAMI__RESOURCES_IMPL_Test.kt + FinalNewline:AndroidResourceIdNames.kt$shark.AndroidResourceIdNames.kt + FinalNewline:AndroidServices.kt$shark.AndroidServices.kt + FinalNewline:Resources.kt$shark.Resources.kt + MaximumLineLength:AndroidObjectInspectors.kt$AndroidObjectInspectors.CONTEXT_FIELD$ + MaximumLineLength:AndroidObjectInspectors.kt$AndroidObjectInspectors.CONTEXT_WRAPPER$ + MaximumLineLength:AndroidObjectInspectors.kt$AndroidObjectInspectors.OBJECT_ANIMATOR$ + MaximumLineLength:AndroidObjectInspectors.kt$AndroidObjectInspectors.VIEW$ + MaximumLineLength:AndroidObjectInspectors.kt$AndroidObjectInspectors.VIEW_ROOT_IMPL$ + MaximumLineLength:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.INPUT_METHOD_MANAGER_IS_TERRIBLE$ + MaximumLineLength:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.SPEN_GESTURE_MANAGER$ + MaximumLineLength:HprofRetainedHeapPerfTest.kt$HprofRetainedHeapPerfTest$ + MaximumLineLength:LegacyHprofTest.kt$LegacyHprofTest$ + MultiLineIfElse:AndroidExtensions.kt$null + MultiLineIfElse:AndroidObjectInspectors.kt$AndroidObjectInspectors.TOAST$false + MultiLineIfElse:AndroidObjectInspectors.kt$AndroidObjectInspectors.VIEW_ROOT_IMPL$"" + MultiLineIfElse:HprofRetainedHeapPerfTest.kt$HprofRetainedHeapPerfTest$"" + MultiLineIfElse:LegacyHprofTest.kt$LegacyHprofTest$throw IllegalStateException( "Unexpected, should have 1 leaking status ${reporter.leakingReasons} or one label ${reporter.labels}" ) + NoConsecutiveBlankLines:AndroidReferenceMatchers.kt$ + NoConsecutiveBlankLines:AndroidReferenceMatchers.kt$AndroidReferenceMatchers.ACTIVITY_CHOOSE_MODEL$ + SpacingAroundCurly:AndroidResourceIdNamesTest.kt$AndroidResourceIdNamesTest${ + SpacingAroundKeyword:AndroidMetadataExtractor.kt$AndroidMetadataExtractor$when + + diff --git a/shark/shark-cli/detekt-baseline.xml b/shark/shark-cli/detekt-baseline.xml new file mode 100644 index 000000000..ddb2d02ef --- /dev/null +++ b/shark/shark-cli/detekt-baseline.xml @@ -0,0 +1,16 @@ + + + + + FinalNewline:DeobfuscateHprofCommand.kt$shark.DeobfuscateHprofCommand.kt + FinalNewline:StripHprofCommand.kt$shark.StripHprofCommand.kt + MaximumLineLength:DumpProcessCommand.kt$DumpProcessCommand.Companion$ + MaximumLineLength:HeapGrowthCommand.kt$HeapGrowthCommand$ + MaximumLineLength:StripHprofCommand.kt$StripHprofCommand$ + MultiLineIfElse:InteractiveCommand.kt$InteractiveCommand$"" + NoConsecutiveBlankLines:Neo4JCommand.kt$ + NoConsecutiveBlankLines:Neo4JCommand.kt$Neo4JCommand.Companion$ + SpacingAroundParens:HeapGrowthCommand.kt$HeapGrowthCommand$( + StringTemplate:InteractiveCommand.kt$InteractiveCommand$${instanceCount} + + diff --git a/shark/shark-graph/detekt-baseline.xml b/shark/shark-graph/detekt-baseline.xml new file mode 100644 index 000000000..b9ecb141b --- /dev/null +++ b/shark/shark-graph/detekt-baseline.xml @@ -0,0 +1,49 @@ + + + + + ChainWrapping:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$+ + EqualsWithHashCodeExist:SortedBytesMapTest.kt$SortedBytesMapTest$Entry : Comparable + FinalNewline:ByteSubArray.kt$shark.internal.ByteSubArray.kt + FinalNewline:CloseableHeapGraph.kt$shark.CloseableHeapGraph.kt + FinalNewline:FieldValuesReader.kt$shark.internal.FieldValuesReader.kt + FinalNewline:HeapField.kt$shark.HeapField.kt + FinalNewline:IndexedObject.kt$shark.internal.IndexedObject.kt + FinalNewline:LruCache.kt$shark.internal.LruCache.kt + FinalNewline:SortedBytesMap.kt$shark.internal.SortedBytesMap.kt + MaximumLineLength:ByteArrayTimSort.kt$ByteArrayTimSort$ + MaximumLineLength:HeapObject.kt$HeapObject.HeapInstance$ + MaximumLineLength:HprofHeapGraphEdgeCasesTest.kt$HprofHeapGraphEdgeCasesTest$ + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$INITIAL_TMP_STORAGE_LENGTH + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$break@outer + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$len.ushr(1) + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$mergeHi(base1, len1, base2, len2) + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$mergeLo(base1, len1, base2, len2) + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$min(newSize, (a.size / entrySize).ushr(1)) + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$minCapacity + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$minGallop = 0 + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$n-- + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort$return + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$lastOfs = m + 1 + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$left = mid + 1 + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$ofs = m + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$ofs = maxOfs + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$return + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$return 1 + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$right = mid + MultiLineIfElse:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$start++ + MultiLineIfElse:HeapObject.kt$HeapObject.HeapClass$PrimitiveType.byteSizeByHprofType.getValue(it.type) + MultiLineIfElse:HeapObject.kt$HeapObject.HeapInstance$offset + count + MultiLineIfElse:HprofInMemoryIndex.kt$HprofInMemoryIndex$className + MultiLineIfElse:HprofInMemoryIndex.kt$HprofInMemoryIndex$this + MultiLineIfElse:UnsortedByteEntries.kt$UnsortedByteEntries$entries + NoConsecutiveBlankLines:HeapObject.kt$HeapObject.HeapObjectArray$ + NoConsecutiveBlankLines:HeapObject.kt$HeapObject.HeapPrimitiveArray$ + NoConsecutiveBlankLines:UnsortedByteEntries.kt$ + NoMultipleSpaces:ByteArrayTimSort.kt$ByteArrayTimSort$ + NoMultipleSpaces:ByteArrayTimSort.kt$ByteArrayTimSort.Companion$ + SpacingAroundCurly:HprofInMemoryIndex.kt$HprofInMemoryIndex.Builder${ + SpacingAroundKeyword:HprofInMemoryIndex.kt$HprofInMemoryIndex$while + SpacingAroundOperators:HprofHeapGraph.kt$HprofHeapGraph$?: + + diff --git a/shark/shark-hprof-test/detekt-baseline.xml b/shark/shark-hprof-test/detekt-baseline.xml new file mode 100644 index 000000000..21a5af47b --- /dev/null +++ b/shark/shark-hprof-test/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + FinalNewline:ProguardMappingHelper.kt$shark.ProguardMappingHelper.kt + + diff --git a/shark/shark-hprof/detekt-baseline.xml b/shark/shark-hprof/detekt-baseline.xml new file mode 100644 index 000000000..632a22e10 --- /dev/null +++ b/shark/shark-hprof/detekt-baseline.xml @@ -0,0 +1,16 @@ + + + + + FinalNewline:ConstantMemoryMetricsDualSourceProvider.kt$shark.ConstantMemoryMetricsDualSourceProvider.kt + FinalNewline:GcRoot.kt$shark.GcRoot.kt + FinalNewline:ProguardMappingReader.kt$shark.ProguardMappingReader.kt + FinalNewline:ProguardMappingTest.kt$shark.ProguardMappingTest.kt + FinalNewline:RandomAccessHprofReader.kt$shark.RandomAccessHprofReader.kt + FinalNewline:ValueHolder.kt$shark.ValueHolder.kt + NoConsecutiveBlankLines:ConstantMemoryMetricsDualSourceProvider.kt$ConstantMemoryMetricsDualSourceProvider$ + NoConsecutiveBlankLines:FileSourceProvider.kt$ + NoMultipleSpaces:HprofReaderPrimitiveArrayTest.kt$HprofReaderPrimitiveArrayTest$ + NoUnusedImports:ThrowingCancelableFileSourceProvider.kt$shark.ThrowingCancelableFileSourceProvider.kt + + diff --git a/shark/shark-log/detekt-baseline.xml b/shark/shark-log/detekt-baseline.xml new file mode 100644 index 000000000..c488dd7f9 --- /dev/null +++ b/shark/shark-log/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + FinalNewline:SharkLogTest.kt$shark.SharkLogTest.kt + + diff --git a/shark/shark-test/detekt-baseline.xml b/shark/shark-test/detekt-baseline.xml new file mode 100644 index 000000000..f4e41b491 --- /dev/null +++ b/shark/shark-test/detekt-baseline.xml @@ -0,0 +1,7 @@ + + + + + FinalNewline:JvmTestHeapDumper.kt$shark.JvmTestHeapDumper.kt + + diff --git a/shark/shark/detekt-baseline.xml b/shark/shark/detekt-baseline.xml new file mode 100644 index 000000000..ba9856a2f --- /dev/null +++ b/shark/shark/detekt-baseline.xml @@ -0,0 +1,61 @@ + + + + + FinalNewline:AppSingletonInspector.kt$shark.AppSingletonInspector.kt + FinalNewline:FieldIdReader.kt$shark.internal.FieldIdReader.kt + FinalNewline:HeapAnalysis.kt$shark.HeapAnalysis.kt + FinalNewline:HeapAnalysisException.kt$shark.HeapAnalysisException.kt + FinalNewline:HeapAnalysisStringRenderingTest.kt$shark.HeapAnalysisStringRenderingTest.kt + FinalNewline:HprofHeapGraphTest.kt$shark.HprofHeapGraphTest.kt + FinalNewline:KeyedWeakReferenceFinder.kt$shark.KeyedWeakReferenceFinder.kt + FinalNewline:LeakNodeStatus.kt$shark.LeakNodeStatus.kt + FinalNewline:LeakTraceObject.kt$shark.LeakTraceObject.kt + FinalNewline:ShallowSizeCalculatorTest.kt$shark.internal.ShallowSizeCalculatorTest.kt + FinalNewline:UnreachableObjectRenderingTest.kt$shark.UnreachableObjectRenderingTest.kt + MaximumLineLength:AndroidNativeSizeMapper.kt$AndroidNativeSizeMapper$ + MaximumLineLength:DominatorTree.kt$DominatorTree$ + MaximumLineLength:HeapAnalysis.kt$Leak$ + MaximumLineLength:KeyedWeakReferenceFinder.kt$KeyedWeakReferenceFinder$ + MaximumLineLength:ObjectDominators.kt$ObjectDominators$ + MaximumLineLength:RetainedSizeTest.kt$RetainedSizeTest$ + MultiLineIfElse:ClassReferenceReader.kt$ClassReferenceReader$mapOrNull + MultiLineIfElse:FieldInstanceReferenceReader.kt$FieldInstanceReferenceReader$mapOrNull + MultiLineIfElse:HeapAnalysis.kt$HeapAnalysisSuccess$"" + MultiLineIfElse:HeapAnalysis.kt$HeapAnalysisSuccess$"\n" + applicationLeaks.joinToString( "\n\n" ) + "\n" + MultiLineIfElse:HeapAnalysis.kt$HeapAnalysisSuccess$"\n" + libraryLeaks.joinToString( "\n\n" ) + "\n" + MultiLineIfElse:HeapAnalysis.kt$HeapAnalysisSuccess$"\n" + metadata.map { "${it.key}: ${it.value}" }.joinToString( "\n" ) + MultiLineIfElse:HeapAnalysis.kt$HeapAnalysisSuccess$"\n" + unreachableObjects.joinToString( "\n\n" ) + "\n" + MultiLineIfElse:HeapAnalyzer.kt$HeapAnalyzer$result + MultiLineIfElse:InternalSharedExpanderHelpers.kt$InternalSharedHashMapReferenceReader$null + MultiLineIfElse:InternalSharedExpanderHelpers.kt$InternalSharedWeakHashMapReferenceReader$null + MultiLineIfElse:ObjectDominators.kt$ObjectDominators$" \"${heapObject.readAsJavaString()}\"" + MultiLineIfElse:ObjectDominators.kt$ObjectDominators$"" + MultiLineIfElse:ObjectDominators.kt$ObjectDominators$when (val heapObject = graph.findObjectById(objectId)) { is HeapClass -> "class ${heapObject.name}" is HeapInstance -> heapObject.instanceClassName is HeapObjectArray -> heapObject.arrayClassName is HeapPrimitiveArray -> heapObject.arrayClassName } + MultiLineIfElse:RealLeakTracerFactory.kt$RealLeakTracerFactory$statusPair + MultiLineIfElse:RealLeakTracerFactory.kt$RealLeakTracerFactory.ShortestPath$null + NoBlankLineBeforeRbrace:HeapDumps.kt$ + NoBlankLineBeforeRbrace:UnreachableObjectRenderingTest.kt$UnreachableObjectRenderingTest$ + NoConsecutiveBlankLines:AndroidReferenceReadersHprofTest.kt$ + NoConsecutiveBlankLines:DominatorTree.kt$ + NoConsecutiveBlankLines:HeapAnalysisStringRenderingTest.kt$HeapAnalysisStringRenderingTest$ + NoConsecutiveBlankLines:HeapAnalyzer.kt$HeapAnalyzer$ + NoConsecutiveBlankLines:KeyedWeakReferenceMirror.kt$ + NoConsecutiveBlankLines:PrioritizingShortestPathFinder.kt$ + NoMultipleSpaces:HeapAnalyzer.kt$HeapAnalyzer$ + NoMultipleSpaces:JavaLocalReferenceReader.kt$JavaLocalReferenceReader$ + NoMultipleSpaces:ObjectDominators.kt$ObjectDominators$ + NoSemicolons:ApacheHarmonyInstanceRefReaders.kt$ApacheHarmonyInstanceRefReaders.HASH_SET$; + NoSemicolons:LeakNodeStatus.kt$LeakNodeStatus.UNKNOWN$; + NoSemicolons:LeakTraceObject.kt$LeakTraceObject.LeakingStatus.UNKNOWN$; + NoSemicolons:OpenJdkInstanceRefReaders.kt$OpenJdkInstanceRefReaders.HASH_SET$; + NoUnusedImports:AndroidReferenceReaders.kt$shark.AndroidReferenceReaders.kt + NoUnusedImports:OpenJdkInstanceRefReadersTest.kt$shark.OpenJdkInstanceRefReadersTest.kt + SpacingAroundCurly:JavaLocalReferenceReader.kt$JavaLocalReferenceReader$} + SpacingAroundKeyword:DelegatingObjectReferenceReader.kt$DelegatingObjectReferenceReader$when + SpacingAroundOperators:JavaLocalReferenceReader.kt$JavaLocalReferenceReader$?: + StringTemplate:ObjectGrowthDetector.kt$ObjectGrowthDetector$${owningClassSimpleName} + StringTemplate:ObjectGrowthDetector.kt$ObjectGrowthDetector$${refName} + StringTemplate:ShortestPathObjectNode.kt$ShortestPathObjectNode$${increase} + +