Anki-Android icon indicating copy to clipboard operation
Anki-Android copied to clipboard

CI: Check for Android Studio Warnings

Open david-allison opened this issue 1 year ago • 6 comments

Following on from:

  • https://github.com/ankidroid/Anki-Android/issues/13282

We should:

  • Have CI run Android Studio in headless mode to obtain the results from Code -> Analyze Code
    • This command is likely inspect.sh/studio.sh analyze
  • Define a baseline of files where we accept issues
  • Fail if a file NOT included in the baseline has warnings
  • Work using the above issue to remove the baseline, to ensure that we have no files with code analysis issues
  • Keep the baseline mechanism, to allow for Android Studio updates to introduce new issues without breaking the build
  • Future extension: Allow execution of this script within gradle
  • Future extension: move this into an Action on GitHub, as it would be useful to the ecosystem

Potential code (MIT licensed): https://github.com/efroemling/ballistica/blob/0dcad474d557b0b58b3da009d5de8092a6f3979b/tools/efrotools/code.py#L1153

david-allison avatar Dec 28 '23 09:12 david-allison

@david-allison can I start working on it?

Aditya13s avatar Dec 28 '23 15:12 Aditya13s

@Aditya13s Sure! Just to be warned, there'll be some experimentation involved. I know it can work, but not exactly how to implement it

david-allison avatar Dec 28 '23 19:12 david-allison

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar Mar 27 '24 19:03 github-actions[bot]

I work on it please assing me

CODE-RED-101 avatar Mar 30 '24 09:03 CODE-RED-101

Thank you!!! Note this may be somewhat complex to get right

david-allison avatar Mar 31 '24 01:03 david-allison

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar Jun 29 '24 01:06 github-actions[bot]

Had a quick try, doesn't seem like inspect.sh works

But I could be doing something incorrect

class com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker cannot be cast to class com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker (com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @747f8bbf; com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker is in unnamed module of loader com.intellij.util.lang.PathClassLoader @7a92922)

https://issuetracker.google.com/issues/245673546

➜  Anki-Android git:(dependency-updates) ✗ pwd
/Users/davidallison/StudioProjects/Anki-Android
➜  Anki-Android git:(dependency-updates) ✗ sh "/Applications/Android Studio.app/Contents/bin/inspect.sh" /Users/davidallison/StudioProjects/Anki-Android/ /Users/davidallison/StudioProjects/Anki-Android/.idea/inspectionProfiles/Project_Default.xml  /Users/davidallison/Documents/Temp/ASInspections -v2 -d "/Users/davidallison/StudioProjects/Anki-Android/AnkiDroid"

2024-08-02 18:33:55.910 studio[26168:72561708] allVms required 1.8*,1.8+
2024-08-02 18:33:55.911 studio[26168:72561712] Current Directory: /Users/davidallison/StudioProjects/Anki-Android
2024-08-02 18:33:55.911 studio[26168:72561712] parseVMOptions: STUDIO_VM_OPTIONS = (null)
2024-08-02 18:33:55.912 studio[26168:72561712] fullFileName is: /Applications/Android Studio.app/Contents/bin/studio.vmoptions
2024-08-02 18:33:55.912 studio[26168:72561712] fullFileName exists: /Applications/Android Studio.app/Contents/bin/studio.vmoptions
2024-08-02 18:33:55.912 studio[26168:72561712] parseVMOptions: /Applications/Android Studio.app/Contents/bin/studio.vmoptions
2024-08-02 18:33:55.912 studio[26168:72561712] parseVMOptions: /Applications/Android Studio.app.vmoptions
2024-08-02 18:33:55.913 studio[26168:72561712] parseVMOptions: /Users/davidallison/Library/Application Support/Google/AndroidStudio2024.1/studio.vmoptions
2024-08-02 18:33:55.913 studio[26168:72561712] parseVMOptions: platform=18 user=1 file=/Users/davidallison/Library/Application Support/Google/AndroidStudio2024.1/studio.vmoptions
CompileCommand: exclude com/intellij/openapi/vfs/impl/FilePartNodeRoot.trieDescend bool exclude = true
2024-08-02 18:33:56,453 [    271]   WARN - #c.i.s.ComponentManagerImpl - com.android.tools.idea.flags.StudioFlags <clinit> requests com.android.tools.idea.flags.StudioFlagSettings instance. Class initialization must not depend on services. Consider using instance of the service on-demand instead.
Starting up Android Studio Koala | 2024.1.1 (build AI-241.15989.150.2411.11948838)…done.
2024-08-02 18:33:56,614 [    432]   WARN - #c.i.n.i.NotificationGroupManagerImpl - Notification group Logcat is already registered (group=com.intellij.notification.NotificationGroup@5a32513c). Plugin descriptor: PluginDescriptor(name=Android, id=org.jetbrains.android, descriptorPath=plugin.xml, path=/Applications/Android Studio.app/Contents/plugins/android, version=241.15989.150.2411.11948838, package=null, isBundled=true)
Opening project…
2024-08-02 18:33:57,128 [    946]   WARN - #c.i.s.ComponentManagerImpl - org.jetbrains.kotlin.idea.gradleJava.scripting.roots.GradleBuildRootDataSerializer <clinit> requests com.intellij.util.gist.storage.GistStorage instance. Class initialization must not depend on services. Consider using instance of the service on-demand instead.
2024-08-02 18:33:57,586 [   1404]   WARN - #c.i.s.ComponentManagerImpl - com.android.tools.idea.res.ResourceUpdateTracer <clinit> requests com.android.tools.idea.res.ResourceUpdateTraceSettings instance. Class initialization must not depend on services. Consider using instance of the service on-demand instead.
2024-08-02 18:33:57,981 [   1799]   WARN - #com.android.tools.ndk.HotfixForOCInitialTablesBuildingActivity - Overriding OCInitialTablesBuildingActivity with HotfixForOCInitialTablesBuildingActivity
done.
Initializing project…Loaded the 'Project Default' profile from the file '/Users/davidallison/StudioProjects/Anki-Android/.idea/inspectionProfiles/Project_Default.xml'
done.
Inspecting with the 'Project Default' profile

2024-08-02 18:34:00,711 [   4529] SEVERE - #c.i.c.InspectionApplicationBase - class com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker cannot be cast to class com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker (com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @747f8bbf; com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker is in unnamed module of loader com.intellij.util.lang.PathClassLoader @7a92922)
java.lang.ClassCastException: class com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker cannot be cast to class com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker (com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @747f8bbf; com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker is in unnamed module of loader com.intellij.util.lang.PathClassLoader @7a92922)
	at com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker$Companion.getInstance(AutoImportProjectTracker.kt:357)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator.importProjects(GradleWarmupConfigurator.kt:122)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator.access$importProjects(GradleWarmupConfigurator.kt:55)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator$runWarmup$2.invoke(GradleWarmupConfigurator.kt:93)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator$runWarmup$2.invoke(GradleWarmupConfigurator.kt:92)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContextInner(coroutines.kt:320)
	at com.intellij.openapi.progress.CoroutinesKt.access$blockingContextInner(coroutines.kt:1)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContextScope$2.invokeSuspend(coroutines.kt:246)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContextScope$2.invoke(coroutines.kt)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContextScope$2.invoke(coroutines.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContextScope(coroutines.kt:244)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator.runWarmup(GradleWarmupConfigurator.kt:92)
	at org.jetbrains.plugins.gradle.GradleWarmupConfigurator$runWarmup$1.invokeSuspend(GradleWarmupConfigurator.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at com.intellij.openapi.progress.CoroutinesKt$runBlockingCancellable$1.invoke(coroutines.kt:132)
	at com.intellij.openapi.progress.CoroutinesKt$runBlockingCancellable$1.invoke(coroutines.kt:126)
	at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext$lambda$5(context.kt:107)
	at com.intellij.openapi.progress.impl.CoreProgressManager.silenceGlobalIndicator(CoreProgressManager.java:1022)
	at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext(context.kt:105)
	at com.intellij.openapi.progress.ContextKt.prepareThreadContext(context.kt:75)
	at com.intellij.openapi.progress.CoroutinesKt.runBlockingCancellable(coroutines.kt:126)
	at com.intellij.openapi.progress.CoroutinesKt.runBlockingCancellable(coroutines.kt:121)
	at org.jetbrains.plugins.gradle.GradleCommandLineProjectConfigurator.configureProject(GradleCommandLineProjectConfigurator.kt:20)
	at com.intellij.codeInspection.InspectionApplicationBase.configureProject(InspectionApplicationBase.java:448)
	at com.intellij.codeInspection.InspectionApplicationBase.lambda$runUnderProgress$21(InspectionApplicationBase.java:669)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:217)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
	at com.intellij.codeInspection.InspectionApplicationBase.runUnderProgress(InspectionApplicationBase.java:668)
	at com.intellij.codeInspection.InspectionApplicationBase.runAnalysis(InspectionApplicationBase.java:481)
	at com.intellij.codeInspection.InspectionApplicationBase.runAnalysisOnScope(InspectionApplicationBase.java:435)
	at com.intellij.codeInspection.InspectionApplicationBase.run(InspectionApplicationBase.java:217)
	at com.intellij.codeInspection.InspectionApplicationBase.execute(InspectionApplicationBase.java:163)
	at com.intellij.codeInspection.InspectionApplicationBase.startup(InspectionApplicationBase.java:122)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
2024-08-02 18:34:00,714 [   4532] SEVERE - #c.i.c.InspectionApplicationBase - Android Studio Koala | 2024.1.1  Build #AI-241.15989.150.2411.11948838
2024-08-02 18:34:00,714 [   4532] SEVERE - #c.i.c.InspectionApplicationBase - JDK: 17.0.10; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2024-08-02 18:34:00,714 [   4532] SEVERE - #c.i.c.InspectionApplicationBase - OS: Mac OS X
2024-08-02 18:34:00,715 [   4533] SEVERE - #c.i.c.InspectionApplicationBase - Last Action: 
class com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker cannot be cast to class com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker (com.android.tools.idea.projectsystem.gradle.RefreshOnlyAutoImportProjectTracker is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @747f8bbf; com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker is in unnamed module of loader com.intellij.util.lang.PathClassLoader @7a92922)
➜  Anki-Android git:(dependency-updates) ✗ 

david-allison avatar Aug 02 '24 17:08 david-allison

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar Oct 31 '24 17:10 github-actions[bot]

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar Jan 29 '25 19:01 github-actions[bot]

I'm tempted to close this, may not be feasible yet without upstream changes, or driving the GUI

david-allison avatar Feb 06 '25 07:02 david-allison

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar May 07 '25 08:05 github-actions[bot]