Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-61058

Checkstyle, PMD and CPD publishers missing after plugin updates

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Incomplete
    • Icon: Major Major
    • warnings-ng-plugin
    • None
    • Jenkins 2.2.04.1
      Warnings NextGen Plug in 7.3.0
      Legacy CheckStyle Plugin = None
      Legacy PMD Plugin = None

      Issue: Prior to recently updating a few Jenkins Plugins, we were successfully using the Warnings Next Gen Plug in, and following those plugin updates, the build fails and we are shown the referenced Error Message...which seems to be a net result of changes to the "tools" related to Static Analysis.

      Initial review of the stack trace has been challenging, but after weeding through, my assumption is that there is a new conflict with the CPS / Script Security Feature

       

      Error = java.lang.NoSuchMethodError: No such DSL method 'spotBugs

       

      Additional Info 

      • The reference to .cps workflow tells me that potentially with the plugin update(s), something is potentially an issue with the Workflow CPS plugin, but regrettably I cant seem to find a way to get the config to work, and I dont want to just 
      •  There is a publisher listed below for spot bugs, but it does not match the Warnings Next Gen docs of "spotBugs", the value / method referenced below is, which represents an unexpected change"spotBugsPublisher"
      • Also noted that there are no publishers available for PMD, CPD or Checkstyle any longer

       

      DSL Entry, which previously worked

      steps {
      
              // Compile / Static Analysis
              warnError('Static Analysis has FAILED') {
      
                  sh "mvn install -e -U -DskipTests -Pstatic-analysis -Padobe-public"
              }
      
              archiveArtifacts artifacts: ('**/target/checkstyle-result.xml')
              archiveArtifacts artifacts: ('**/target/spotbugsXml.xml')
              archiveArtifacts artifacts: ('**/target/pmd.xml')
              archiveArtifacts artifacts: ('**/target/cpd.xml')
              archiveArtifacts artifacts: ('**/target/site/jacoco/jacoco.xml')
      
              //Sonarqube analysis
              warnError('Sonarqube Analysis has FAILED') {
      
                  sh "mvn sonar:sonar -Dsonar.branch.name=${env.BRANCH_NAME}"
              }
      
      
              //Script protocol is needed here, otherwise Pipeline will throw an error
              //TODO Remediate post build publish issue, as it would not be anticipated that the script variable would be needed here - https://github.com/jenkinsci/job-dsl-plugin/wiki/Script-Security
              script {
      
                  checkstyle = scanForIssues tool: checkStyle(pattern: '**/target/checkstyle-result.xml')
                  publishIssues issues: [checkstyle]
      
                  pmd = scanForIssues tool: pmdParser(pattern: '**/target/pmd.xml')
                  publishIssues issues: [pmd]
      
                  cpd = scanForIssues tool: cpd(pattern: '**/target/cpd.xml')
                  publishIssues issues: [cpd]
      
                  spotbugs = scanForIssues tool: spotBugs(pattern: '**/target/spotbugsXml.xml')
                  publishIssues issues: [spotbugs]
      
                  maven = scanForIssues tool: mavenConsole()
                  publishIssues issues: [maven]
              }
          }
      }
      
      

       

      Console Error for  Spotbugs...but similar appeared for checkStyle, pmdParser and cpd

      java.lang.NoSuchMethodError: No such DSL method 'spotBugs' found among steps [ansiColor, archive, bat, bbs_checkout, build, catchError, checkout, createDeploymentEvent, createDynatraceDeploymentEvent, deleteDir, dir, dockerFingerprintFrom, dockerFingerprintRun, echo, emailext, emailextrecipients, envVarsForTool, error, fileExists, findFiles, getContext, git, input, isUnix, jiraAddComment, jiraAddWatcher, jiraAssignIssue, jiraAssignableUserSearch, jiraComment, jiraDeleteAttachment, jiraDeleteIssueLink, jiraDeleteIssueRemoteLink, jiraDeleteIssueRemoteLinks, jiraDownloadAttachment, jiraEditComment, jiraEditComponent, jiraEditIssue, jiraEditVersion, jiraGetAttachmentInfo, jiraGetComment, jiraGetComments, jiraGetComponent, jiraGetComponentIssueCount, jiraGetFields, jiraGetIssue, jiraGetIssueLink, jiraGetIssueLinkTypes, jiraGetIssueRemoteLink, jiraGetIssueRemoteLinks, jiraGetIssueTransitions, jiraGetIssueWatches, jiraGetProject, jiraGetProjectComponents, jiraGetProjectStatuses, jiraGetProjectVersions, jiraGetProjects, jiraGetServerInfo, jiraGetVersion, jiraIssueSelector, jiraJqlSearch, jiraLinkIssues, jiraNewComponent, jiraNewIssue, jiraNewIssueRemoteLink, jiraNewIssues, jiraNewVersion, jiraNotifyIssue, jiraSearch, jiraTransitionIssue, jiraUploadAttachment, jiraUserSearch, junit, library, libraryResource, load, lock, mail, milestone, nexusArtifactUploader, nexusPolicyEvaluation, nexusPublisher, node, nodesByLabel, parallel, perfSigDynatraceReports, powershell, properties, publishHTML, pwd, pwsh, readCSV, readFile, readJSON, readManifest, readMavenPom, readProperties, readTrusted, readYaml, recordDynatraceCustomSession, recordDynatraceSession, resolveScm, retry, script, selectRun, sendSplunkConsoleLog, sendSplunkFile, setGerritReview, sh, sha1, slackSend, slackUploadFile, sleep, sshagent, stage, stash, step, svn, tee, timeout, timestamps, tm, tool, touch, unarchive, unstable, unstash, unzip, validateDeclarativePipeline, waitForQualityGate, waitUntil, warnError, withContext, withCredentials, withDockerContainer, withDockerRegistry, withDockerServer, withEnv, withMaven, withNPM, wrap, writeCSV, writeFile, writeJSON, writeMavenPom, writeYaml, ws, xunit, zip] or symbols [AUnit, BbS, BitbucketSCMStep, BitbucketWebhookTriggerImpl, BoostTest, CTest, CUnit, Check, CppTest, CppUnit, Custom, FPCUnit, GoogleTest, JUnit, MSTest, MbUnit, NUnit2, NUnit3, PHPUnit, QtTest, UnitTest, Valgrind, absolute, activateDTConfiguration, all, allOf, always, and, ant, antFromApache, antOutcome, antTarget, any, anyOf, apiToken, architecture, archiveArtifacts, artifact, artifactManager, artifactResolver, artifactsPublisher, associateTag, audit-trail, authorizationMatrix, batchFile, bitBucketTrigger, bitbucket, bitbucketBranchDiscovery, bitbucketForkDiscovery, bitbucketPublicRepoPullRequestFilter, bitbucketPullRequestDiscovery, bitbucketPush, bitbucketSshCheckout, bitbucketTagDiscovery, bitbucketTrustEveryone, bitbucketTrustNobody, bitbucketTrustProject, bitbucketTrustTeam, bitbucketWebhookConfiguration, bitbucketWebhookRegistration, bitbucketpr, booleanParam, branch, brokenBuildSuspects, brokenTestsSuspects, buildButton, buildDescription, buildDiscarder, buildFailureAnalyzer, buildName, buildNumber, buildParameter, buildSelector, buildingTag, bzt, caseInsensitive, caseSensitive, certificate, changeAbandoned, changeMerged, changeRequest, changeRestored, changelog, changeset, checkoutToSubdirectory, chlAtuoAction, choice, choiceParam, cleanWs, clock, cloud, command, commentAdded, commentAddedContains, concordionPublisher, configFile, configFileProvider, copyArtifactPermission, copyArtifacts, createMemoryDump, createTag, createThreadDump, credentials, cron, crumb, cucumber, culprits, default, defaultFolderConfiguration, defaultView, deleteComponents, demand, dependenciesFingerprintPublisher, dependency-check, dependencyCheck, dependencyCheckPublisher, dependencyTrackPublisher, dependencycheck, developers, disableConcurrentBuilds, disableResume, displayName, docker, dockerCert, dockerfile, downstream, draftPublished, dumb, durabilityHint, embUnit, envInject, envVars, environment, environmentDashboard, equals, executor, expression, extendedChoice, failed, fallback, file, fileParam, filePath, findbugsPublisher, fingerprint, frameOptions, freeStyle, freeStyleJob, fromScm, fromSource, gerrit, git, gitBranchDiscovery, gitHubBranchDiscovery, gitHubBranchHeadAuthority, gitHubForkDiscovery, gitHubTagDiscovery, gitHubTrustContributors, gitHubTrustEveryone, gitHubTrustNobody, gitHubTrustPermissions, gitParameter, gitTagDiscovery, github, githubAccessToken, githubPush, globalConfigFiles, gtester, headRegexFilter, headWildcardFilter, http, hyperlink, hyperlinkToModels, inheriting, inheritingGlobal, installSource, invokerPublisher, isRestartedRun, jacoco, jacocoPublisher, jdk, jdkInstaller, jgit, jgitapache, jgivenPublisher, jnlp, jobDsl, jobName, junitPublisher, label, lastCompleted, lastDuration, lastFailure, lastGrantedAuthorities, lastStable, lastSuccess, lastSuccessful, lastWithArtifacts, latestSavedBuild, legacy, legacySCM, list, local, location, logParser, logRotator, loggedInUsersCanDoAnything, manualApplication, masterBuild, maven, maven3Mojos, mavenErrors, mavenLinkerPublisher, mavenMojos, mavenWarnings, modernSCM, moveComponents, myView, newContainerPerStage, node, nodeProperties, nodejs, nodejsci, nonInheriting, none, not, notifyBitbucket, notifyStash, openTasksPublisher, or, overrideIndexTriggers, paneStatus, parallelsAlwaysFailFast, parameterized, parameters, passed, password, patchsetCreated, pattern, perfReport, perfSigReports, performanceReport, performanceTest, perfpublisher, permalink, permanent, pipeline-model, pipeline-model-docker, pipelineGraphPublisher, pipelineMaven, pipelineTriggers, plainText, plugin, pollSCM, preserveStashes, previous, privateStateChanged, projectKeyRegexFilter, projectNameRegexFilter, projectNamingStrategy, proxy, queueItemAuthenticator, quietPeriod, rateLimitBuilds, recipients, refUpdated, relative, requestor, resourceRoot, rule, run, runParam, s3CopyArtifact, s3Upload, sSHLauncher, saved, schedule, scmRetryCount, script, scriptApproval, scriptApprovalLink, search, security, selectedApplication, shell, skipDefaultCheckout, skipStagesAfterUnstable, skipped, slackNotifier, slave, snapshotDependencies, sourceRegexFilter, sourceWildcardFilter, specific, splunkinsJobOption, spotbugsPublisher, ssh, sshUserPrivateKey, stackTrace, standard, startSession, status, stopSession, string, stringParam, swapSpace, tag, testCase, text, textParam, timezone, tmpSpace, toolLocation, topicChanged, triggeredBy, triggering, unsecured, upstream, upstreamDevelopers, url, userSeed, usernameColonPassword, usernamePassword, veracode, veracodeDynamicRescan, viewsTabBar, weather, wipStateChanged, withAnt, withSonarQubeEnv, workspace, xUnitDotNet, zfs, zip] or globals [currentBuild, docker, env, fileLoader, params, pipeline, scm, splunkins]

            Unassigned Unassigned
            jaydubb12 Jason Wolf
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: