GithubHelp home page GithubHelp logo

Comments (41)

MatFl avatar MatFl commented on May 27, 2024 4

I would like to use spotbugs in our Android application, but creating a sourceSet and a javaCompile task for this seems so wrong.

If the SpotBugsTask would have a setter for the sourceDirs field, without using SourceSets we could get the required input from the AndroidSourceSets. Unfortunately the AndroidSourceSet does not implement the plain gradle SourceSet, so this does not work.

We can directly call setSource on the Task, but then spotbugs complains here:

return getProject().files(sourceDirs).plus(getSource());

that sourceDirs is not set. I actually don't understand the use for the sourceDir variable, because the setSourceSet also calls setSource. So in getAllSource the sources are added twice?

So if the SpotbugsTask either

  • provides a setSource method with a Set<File> parameter

or

  • gets rid of the sourceDirs variable in getAllSource

we could easily get Spotbugs to work with Android.

from spotbugs-gradle-plugin.

MatFl avatar MatFl commented on May 27, 2024 4

Defining a java sourceSet and compiling the java task is (in my opinion) nothing more than a dirty workaround.
Android already defines sourceSets and build tasks, which however aren't compatible with the java ones. It would be trivial to use them if the SpotbugsTask would provide one of the solutions I mentioned above...

from spotbugs-gradle-plugin.

peter-budo avatar peter-budo commented on May 27, 2024 3

Would really love to see this available. Could you share eta on release?

from spotbugs-gradle-plugin.

ZOlbrys avatar ZOlbrys commented on May 27, 2024 2

@KengoTODA Thanks for the response. I've added this, and now encounter a new error:

Zachs-MBP:SpotbugsExample Zach$ ./gradlew spotbugsMain

> Task :app:compileJava FAILED
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:3: error: package android.support.v7.app does not exist
import android.support.v7.app.AppCompatActivity;
                             ^
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:4: error: package android.os does not exist
import android.os.Bundle;
                 ^
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:6: error: cannot find symbol
public class MainActivity extends AppCompatActivity {
                                  ^
  symbol: class AppCompatActivity
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:9: error: cannot find symbol
    protected void onCreate(Bundle savedInstanceState) {
                            ^
  symbol:   class Bundle
  location: class MainActivity
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:8: error: method does not override or implement a method from a supertype
    @Override
    ^
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:10: error: cannot find symbol
        super.onCreate(savedInstanceState);
        ^
  symbol:   variable super
  location: class MainActivity
/Users/zach/Developer/Code/SpotbugsExample/app/src/main/java/com/example/zach/spotbugsexample/MainActivity.java:11: error: package R does not exist
        setContentView(R.layout.activity_main);
                        ^
7 errors


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

It looks like it's unable to find the sources/code for most of the android related classes.

from spotbugs-gradle-plugin.

mik9 avatar mik9 commented on May 27, 2024 2

Hi. I want to share my configuration of spotbugs for android project: https://gist.github.com/mik9/fdde79052fef7f03c4325734701a39d7

Latest working plugin version: 1.6.6. Maybe it helps.

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024 1

Thanks for your report, I also reproduced this problem in my local.

Then maybe we are facing something unknown, I'll wait contribution from gradle/android experts...

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024 1

No idea, I'm not Android guy...

from spotbugs-gradle-plugin.

tobiasKaminsky avatar tobiasKaminsky commented on May 27, 2024 1

Starting with 1.6.9 I do get

Error while evaluating property 'allSource' of task ':spotbugsGplayDebug'
> path may not be null or empty string. path='null'

which was fine on 1.6.6.

Config:

android.applicationVariants.all { variant ->
        String variantName = variant.name
        String capVariantName = variantName.substring(0, 1).toUpperCase() + variantName.substring(1);
        tasks.register("spotbugs${capVariantName}", SpotBugsTask) {
            ignoreFailures = false
            effort = "max"
            reportLevel = "medium"
            classes = fileTree("$project.buildDir/intermediates/javac/${variantName}/compile${capVariantName}JavaWithJavac/classes/")
            excludeFilter = file("${project.rootDir}/findbugs-filter.xml")
            pluginClasspath = project.configurations.spotbugsPlugins
            source = fileTree('src/main/java')
            classpath = files()
            include '**/*.java'
            exclude '**/gen/**'

            reports {
                xml.enabled = false
                html.enabled = true
                html {
                    destination = file("$project.buildDir/reports/spotbugs/spotbugs.html")
                }
            }
        }
    }

from spotbugs-gradle-plugin.

kenyee avatar kenyee commented on May 27, 2024 1

Nice...what's the hold up on getting the PR merged and released @KengoTODA ? Looks pretty straightforward...

from spotbugs-gradle-plugin.

welcome avatar welcome commented on May 27, 2024

Thanks for opening your first issue here! 😃
Please check our contributing guideline. Especially when you report a problem, make sure you share a Minimal, Complete, and Verifiable example to reproduce it in this issue.

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

@ZOlbrys please define sourceSet that is not generated by Android gradle plugin. Here we have document that describes how-to.

from spotbugs-gradle-plugin.

AEFeinstein avatar AEFeinstein commented on May 27, 2024

I experienced the same issue today. I'm not sure if it's a problem with spotbugs or something else, because the actual task that is failing for both @ZOlbrys and me is Execution failed for task ':app:compileJava'.

from spotbugs-gradle-plugin.

AEFeinstein avatar AEFeinstein commented on May 27, 2024

Upon further inspection, the :mobile:compileJava task didn't exist before adding spotbugs. Diffing the output of gradlew.bat tasks --all before and after adding spotbugs, these tasks are new:

mobile:spotbugsMain - Run SpotBugs analysis for main classes
mobile:checkstyleMain - Run Checkstyle analysis for main classes
mobile:pmdMain - Run PMD analysis for main classes
mobile:classes - Assembles main classes.
mobile:compileJava - Compiles main Java source.
mobile:processResources - Processes main resources.

Those tasks all fail because mobile:compileJava fails. Android gradle seems to have the following tasks to compile Java, maybe spotbugs should be dependent on one of them instead of :mobile:compileJava:

mobile:compileDebugAndroidTestJavaWithJavac
mobile:compileDebugJavaWithJavac
mobile:compileDebugUnitTestJavaWithJavac
mobile:compileReleaseJavaWithJavac
mobile:compileReleaseUnitTestJavaWithJavac

from spotbugs-gradle-plugin.

AEFeinstein avatar AEFeinstein commented on May 27, 2024

Adding the following task to my gradle file allowed spotbugs to run correctly:

task compileJava(overwrite: true) {
    dependsOn 'compileDebugJavaWithJavac'
    group = "build"
}

from spotbugs-gradle-plugin.

ZOlbrys avatar ZOlbrys commented on May 27, 2024

@AEFeinstein interesting - I'm still not getting this to work! I added that to my test project, but now I get this error:

Zachs-MBP:SpotbugsExample Zach$ ./gradlew spotbugsMain

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:spotbugsMain'.
> com.github.spotbugs.internal.SpotBugsReportsInternal.getEnabledReports()Ljava/util/Map;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
16 actionable tasks: 1 executed, 15 up-to-date
Zachs-MBP:SpotbugsExample Zach$ 

Is my gradle file setup incorrectly? I wasn't able to find exact documentation on this stuff.

from spotbugs-gradle-plugin.

AEFeinstein avatar AEFeinstein commented on May 27, 2024

@ZOlbrys I can't debug your particular problem, but here's my project with the plugin working
https://github.com/AEFeinstein/mtg-familiar
You can compare our gradle files and hopefully figure it out.

from spotbugs-gradle-plugin.

ZOlbrys avatar ZOlbrys commented on May 27, 2024

@AEFeinstein Thanks for reaching out! I saw the files your gradle files and setup mine in a similar manner. I still see the same error though - so no progress, maybe. @KengoTODA any thoughts on the issue above? #90 (comment)

from spotbugs-gradle-plugin.

AEFeinstein avatar AEFeinstein commented on May 27, 2024

@ZOlbrys what happens when you run gradlew.bat compileDebugJavaWithJavac and gradlew.bat compileJava?

from spotbugs-gradle-plugin.

ZOlbrys avatar ZOlbrys commented on May 27, 2024

@KengoTODA understood - thanks for the support so far though! Appreciate it :)

@AEFeinstein good news! I upgraded to Android Studio 3.3, and then ran the commands and that seems to have fixed my problem. I think the Android Studio update helped more than anything else - I see you were using a newer version of gradle as well... Anyways, I am able to run the tool now and verified that bugs are being reported.

Thanks for the assistance!

from spotbugs-gradle-plugin.

fredgrott avatar fredgrott commented on May 27, 2024

note @AEFeinstein has it wrong..

missing stuff wrap it the same way you flavors with buildtypes and one needs to add

variant.javaCompiler files to classpath for other project modules
also need classpath as it will no even run without that

my first run I just did it with the buildType of variant and got it to run correctly
now polishing it so it does product flavors correctly along with proper task renaming to spotbugsBuildTypeVariant task

also note do a first run so that you know what to set the filter file to as you want to exclude the all the android lib stuff and your 3rd party libs

However, I can confirm its working which is nice cause I still have problems attempting to use errorprone with kotlin right now..so its life saver

if anyone wants to take a look, the project I am putting it into with the
polished modifications of task setup is at my gitlab project of

https://gitlab.com/fred.grott/droikotlinkit

also note my solution points to the kotlin java classes correctly

so I hope it helps those who are still stuck with it not working..

just call me Android Gradle-Plugin expert :)

from spotbugs-gradle-plugin.

davidburstromspotify avatar davidburstromspotify commented on May 27, 2024

@MatFl I also came to the same conclusion: If there is no sourceSet set, the sourceDirs Set will be uninitialized. From my point of view, initializing it in the constructor with new HashSet() or Collections.emptySet() should do the trick.

from spotbugs-gradle-plugin.

fredgrott avatar fredgrott commented on May 27, 2024

okay let me add a brief code ex

its a multi module project with no app flavors

project.extensions.extraProperties.set('SpotBugsTask', com.github.spotbugs.SpotBugsTask)

spotbugs {
    toolVersion = '3.1.10'
    ignoreFailures = false

    excludeFilter = file("${rootDir}/config/findbugs-exclude-filter.xml")

    // Search better
    effort = 'max'
    // Report all
    reportLevel = 'low'
}

sourceSets {
    // we define `main` sourceSet here, so SpotBugs Gradle Plugin generates `spotbugsMain` task
    main {
        java.srcDirs = ['src/main/java']
    }
}
tasks.withType(com.github.spotbugs.SpotBugsTask) {
    dependsOn 'assembleDebug'
    group = "verification"

    classes = fileTree("build/inteermediates/javac/debug/") + fileTree("build/tmp/kotlin-classes/debug/")
    ignoreFailures = true
    classpath = files()
    // configure automatically generated tasks
    reports {
        xml.enabled = false
        html.enabled = true
        html {
            destination file("$project.buildDir/outputs/reports/spotbugs/spotbugs-debug.html")
            stylesheet resources.text.fromFile("$rootDir/config/fancy.xsl")
        }
    }
}
task compileJava(overwrite: true) {
    dependsOn 'compileDebugJavaWithJavac'
    group = "build"
}

so that is the general setup and works fine, note you will get a xerces xml parse warning on the referenced android framework classes but that can be ignored as far as I know

from spotbugs-gradle-plugin.

WonderCsabo avatar WonderCsabo commented on May 27, 2024

I agree with @MatFl . Before changing how getAllSource() behaves, SpotBugs worked well in our multi module Android project. It broke after updating the Spotbugs Gradle Plugin.

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

@WonderCsabo which version was working with your project? In my understanding, this plugin already behaved so when our organization forked.

from spotbugs-gradle-plugin.

WonderCsabo avatar WonderCsabo commented on May 27, 2024

Plugin Version 1.6.6 . It broke when changes added for getAllSource(), as explained above.

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

Nice share! It'll help our investigation.

from spotbugs-gradle-plugin.

tim4dev avatar tim4dev commented on May 27, 2024

Android Studio 3.4
gradle-5.1.1
classpath 'gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.6'
toolVersion = "3.1.12"
used product flavours.

All versions that are newer than 1.6.6 do not work.

from spotbugs-gradle-plugin.

dublinx333 avatar dublinx333 commented on May 27, 2024

Sorry, no help only observations: Why is this so difficult? Why is there no graceful AND meaningful (by that I mean output any semi-layman could read and understand) output. I call this trouble shooting at the DNA level/cellular level instead of the component level. I was truly saddened when I read "good news! I upgraded to Android Studio 3.3, and then ran the commands and that seems to have fixed my problem.". Imo, sadly nothing has fundamentally change in this 'area' in 35+ years. And this is even sadder. :(

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

Hello all, check #180 and help us to confirm that new plugin works with Android project. We'll release stable version right after SpotBugs 4.0.0 release.

from spotbugs-gradle-plugin.

henrychoi7 avatar henrychoi7 commented on May 27, 2024

Hi, I tried to use the SpotBugs Gradle Plugin v4.0.2 (which is SpotBugs 4.0.0) in a single Android project and got some errors like below:

* What went wrong:
Execution failed for task ':SpotBugsReports'.
> A failure occurred while executing com.github.spotbugs.snom.internal.SpotBugsRunnerForWorker$SpotBugsExecutor
   > Failed to run Gradle Worker Daemon
      > Process 'Gradle Worker Daemon 4' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

My build.gradle file is like below:

buildscript {
    ext.kotlin_version = "1.3.30"
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:3.6.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "com.google.gms:google-services:4.3.3"
        classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.0.2"
    }
}

apply plugin: "com.github.spotbugs"

tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
    classes = files("$project.buildDir/intermediates/javac")
//    source = fileTree('src/main/java')
    reports {
        // Enable HTML report only
        html.enabled = true
        xml.enabled = false
    }
}

task SpotBugsReports(type: com.github.spotbugs.snom.SpotBugsTask) {
    classes = files("$project.buildDir/intermediates/javac")
//    source = fileTree("src/main/java")
    reports {
        html.enabled = true
        xml.enabled = false
    }
}

The reason I commented the source property is that if I uncomment them, another error pops up like below:

> Could not set unknown property 'source' for task ':SpotBugsReports' of type com.github.spotbugs.snom.SpotBugsTask.

I don't know why but I can't set the source property. Is there anyone with this issue here?

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

@henrychoi7 Not only 4.0.2 but also 3.0.0 has no source property, in my understanding...

https://github.com/spotbugs/spotbugs-gradle-plugin/blob/3.0.0/src/main/java/com/github/spotbugs/SpotBugsTask.java

Let me confirm what is your expectation. Do you want to set the source directory to analyse?
Then sourceDirs should be the one.

https://spotbugs-gradle-plugin.netlify.com/com/github/spotbugs/snom/spotbugstask.html#sourceDirs

from spotbugs-gradle-plugin.

henrychoi7 avatar henrychoi7 commented on May 27, 2024

@KengoTODA Thank you!
I'll keep in mind with the reference. I was trying to set the source directory. But then again, if I type the command ./gradlew SpotBugsReports, I get the following error like below:

* What went wrong:
A problem occurred evaluating project ':app'.
> com/android/build/gradle/tasks/AndroidJavaCompile

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:227)
        at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:232)
        at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:49)
        at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
        at org.gradle.configuration.project.BuildScriptProcessor$1.run(BuildScriptProcessor.java:45)
        at org.gradle.internal.Factories$1.create(Factories.java:26)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:201)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:187)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:42)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:35)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:107)
        at org.gradle.internal.Factories$1.create(Factories.java:26)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:227)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:221)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:187)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:96)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:693)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:141)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:36)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:64)
        at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:55)
        at org.gradle.configuration.BuildOperatingFiringProjectsPreparer$ConfigureBuild.run(BuildOperatingFiringProjectsPreparer.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.BuildOperatingFiringProjectsPreparer.prepareProjects(BuildOperatingFiringProjectsPreparer.java:40)
        at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:198)
        at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:138)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:106)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:60)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:57)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:85)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:78)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:78)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:57)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:27)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.NoClassDefFoundError: com/android/build/gradle/tasks/AndroidJavaCompile
        at com.github.spotbugs.snom.internal.SpotBugsTaskFactory.lambda$generateForAndroid$5(SpotBugsTaskFactory.java:72)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1$1.run(DefaultCollectionCallbackActionDecorator.java:100)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:60)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:97)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:94)
        at org.gradle.api.internal.collections.CollectionFilter$1.execute(CollectionFilter.java:59)
        at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:163)
        at org.gradle.api.internal.plugins.DefaultPluginContainer$2.execute(DefaultPluginContainer.java:177)
        at org.gradle.api.internal.plugins.DefaultPluginContainer$2.execute(DefaultPluginContainer.java:169)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1$1.run(DefaultCollectionCallbackActionDecorator.java:100)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:60)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:97)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:94)
        at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:163)
        at org.gradle.api.internal.plugins.DefaultPluginContainer.withId(DefaultPluginContainer.java:181)
        at com.github.spotbugs.snom.internal.SpotBugsTaskFactory.generateForAndroid(SpotBugsTaskFactory.java:68)
        at com.github.spotbugs.snom.internal.SpotBugsTaskFactory.generate(SpotBugsTaskFactory.java:31)
        at com.github.spotbugs.snom.SpotBugsPlugin.createTasks(SpotBugsPlugin.java:49)
        at com.github.spotbugs.snom.SpotBugsPlugin.apply(SpotBugsPlugin.java:45)
        at com.github.spotbugs.snom.SpotBugsPlugin.apply(SpotBugsPlugin.java:23)
        at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:43)
        at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:51)
        at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:181)
        at org.gradle.api.internal.plugins.DefaultPluginManager.access$300(DefaultPluginManager.java:51)
        at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:276)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:159)
        at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:156)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:49)
        at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:156)
        at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:136)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:129)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:38)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:93)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:152)
        at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:49)
        at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:41)
        at org.gradle.api.Script$apply.callCurrent(Unknown Source)
        at build_1dpe2085z9d703ego26q3jczw.run(/Users/xx/xx/app/build.gradle:129)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
        ... 129 more

Therefore, I can't set apply plugin: "com.github.spotbugs" in the build.gradle (app). Any ideas to this type of issue? If I set apply plugin: "com.github.spotbugs" in the build.gradle (project), it doesn't show the error (but it throws another error). Another error looks like below:

* What went wrong:
Execution failed for task ':app:SpotBugsReports'.
> No value has been specified for this provider.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:SpotBugsReports'.
        at org.gradle.execution.plan.DefaultExecutionPlan.resolveMutations(DefaultExecutionPlan.java:658)
        at org.gradle.execution.plan.DefaultExecutionPlan.getResolvedMutationInfo(DefaultExecutionPlan.java:594)
        at org.gradle.execution.plan.DefaultExecutionPlan.selectNext(DefaultExecutionPlan.java:549)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$2.transform(DefaultPlanExecutor.java:176)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$2.transform(DefaultPlanExecutor.java:163)
        at org.gradle.internal.resources.DefaultResourceLockCoordinationService.withStateLock(DefaultResourceLockCoordinationService.java:45)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:163)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.IllegalStateException: No value has been specified for this provider.
        at org.gradle.api.internal.provider.Providers$1.get(Providers.java:32)
        at org.gradle.api.internal.provider.DefaultProperty.get(DefaultProperty.java:157)
        at org.gradle.api.internal.provider.AbstractMappingProvider.get(AbstractMappingProvider.java:45)
        at org.gradle.api.internal.provider.AbstractMappingProvider.get(AbstractMappingProvider.java:45)
        at org.gradle.api.internal.provider.AbstractMappingProvider.get(AbstractMappingProvider.java:45)
        at org.gradle.api.internal.provider.DefaultProperty.get(DefaultProperty.java:157)
        at com.github.spotbugs.snom.SpotBugsReport.getDestination(SpotBugsReport.java:59)
        at com.github.spotbugs.snom.internal.SpotBugsHtmlReport_Decorated.getDestination(Unknown Source)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1$1.create(AbstractNestedRuntimeBeanNode.java:80)
        at org.gradle.util.SingleMessageLogger.whileDisabled(SingleMessageLogger.java:467)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1.get(AbstractNestedRuntimeBeanNode.java:76)
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:167)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue.call(AbstractNestedRuntimeBeanNode.java:148)
        at org.gradle.util.GUtil.uncheckedCall(GUtil.java:461)
        at org.gradle.util.DeferredUtil.unpackNestableDeferred(DeferredUtil.java:64)
        at org.gradle.util.DeferredUtil.unpack(DeferredUtil.java:38)
        at org.gradle.api.internal.tasks.properties.FileParameterUtils.resolveOutputFilePropertySpecs(FileParameterUtils.java:109)
        at org.gradle.execution.plan.DefaultExecutionPlan$8$1.run(DefaultExecutionPlan.java:619)
        at org.gradle.execution.plan.DefaultExecutionPlan.withDeadlockHandling(DefaultExecutionPlan.java:679)
        at org.gradle.execution.plan.DefaultExecutionPlan.access$900(DefaultExecutionPlan.java:90)
        at org.gradle.execution.plan.DefaultExecutionPlan$8.visitOutputFileProperty(DefaultExecutionPlan.java:612)
        at org.gradle.api.internal.tasks.properties.annotations.AbstractOutputPropertyAnnotationHandler.visitPropertyValue(AbstractOutputPropertyAnnotationHandler.java:51)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode.visitProperties(AbstractNestedRuntimeBeanNode.java:59)
        at org.gradle.api.internal.tasks.properties.bean.NestedRuntimeBeanNode.visitNode(NestedRuntimeBeanNode.java:42)
        at org.gradle.api.internal.tasks.properties.DefaultPropertyWalker.visitProperties(DefaultPropertyWalker.java:41)
        at org.gradle.api.internal.tasks.TaskPropertyUtils.visitProperties(TaskPropertyUtils.java:42)
        at org.gradle.execution.plan.DefaultExecutionPlan.resolveMutations(DefaultExecutionPlan.java:609)
        ... 10 more

I think the last error seems to be lack of report destination source (at com.github.spotbugs.snom.internal.SpotBugsHtmlReport_Decorated.getDestination(Unknown Source).

from spotbugs-gradle-plugin.

KengoTODA avatar KengoTODA commented on May 27, 2024

Thanks for updating information!
This is known issue, it seems that Android Gradle plugin deleted AndroidJavaCompile task 🤔

Their release note has no description about it, so I'm still not sure how we should fix this issue.
Do you have any idea about why they removed the task? 😭

One workaround, is that, apply the base plugin and create SpotBugsTask by your own. Then it won't touch AndroidJavaCompile class so it should work.

from spotbugs-gradle-plugin.

henrychoi7 avatar henrychoi7 commented on May 27, 2024

Oh, I didn't know that was a known issue and I'm not sure why they removed AndroidJavaCompile task.. I also tried to find the relevant issue from Google's IssueTracker but, I couldn't find anything about why they removed the task except this.

I solved the problem above by creating my own task. Thank you again! 😄 I'm not very professional about Android Gradle plugin but, there must be a way to solve this issue to be native support for Android..

from spotbugs-gradle-plugin.

seadowg avatar seadowg commented on May 27, 2024

One workaround, is that, apply the base plugin and create SpotBugsTask by your own. Then it won't touch AndroidJavaCompile class so it should work.

@KengoTODA do you have example of how to "create SpotBugsTask"? We're running into this issue but not quite sure how to apply the workaround! Excuse the lack of gradle skillz.

from spotbugs-gradle-plugin.

kenyee avatar kenyee commented on May 27, 2024

@KengoTODA : FYI, AndroidJavaCompile has been totally removed. You can pin the spotbugsTask against the JavaCompile task instead. Verified it w/ the Android tools folks.

from spotbugs-gradle-plugin.

kenyee avatar kenyee commented on May 27, 2024

Looks like a pretty simple change:

from spotbugs-gradle-plugin.

kenyee avatar kenyee commented on May 27, 2024

I can do a PR but I don't see any dev readme on how to test/validate this plugin...

from spotbugs-gradle-plugin.

davidburstromspotify avatar davidburstromspotify commented on May 27, 2024

I already have a PR up for it: #252

from spotbugs-gradle-plugin.

bansan85 avatar bansan85 commented on May 27, 2024

I can confirm that adding:

tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
    dependsOn 'assembleDebug'.
    classes = files("${project.buildDir}/intermediates/javac/variant")
}

makes following error disappear:

> Task :lib:compileJava FAILED
XXXX.java:5: error: package android.util does not exist
import android.util.Log;
                   ^
XXXX.java:22: error: cannot find symbol
    Log.e("tag", "message");
    ^
  symbol:   variable Log
  location: class AGenesis
2 errors

But instead, I have:

> Task :lib:spotbugsMain
Scanning archives (8 / 8)
2 analysis passes to performG [5s]
Pass 1: Analyzing classes (19 / 19) - 100% complete
Pass 2: Analyzing classes (6 / 6) - 100% complete
Done with analysis
The following classes needed for analysis were missing:
  android.util.Log
The following classes needed for analysis were missing:
  android.util.Log

from spotbugs-gradle-plugin.

bansan85 avatar bansan85 commented on May 27, 2024

And to fix last error:

tasks.withType(com.github.spotbugs.snom.SpotBugsTask) { taski ->
    doFirst {
        taski.setAuxClassPaths(project.files(taski.getAuxClassPaths().getFiles(), project.android.getBootClasspath()))
    }
    dependsOn 'assembleDebug'.
    classes = files("${project.buildDir}/intermediates/javac/variant")
}

This makes pass spotbugs for my Android project.

from spotbugs-gradle-plugin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.