how to access all classes and methods of a plugin in jenkins pipeline?

85 views
Skip to first unread message

jesus fernandez

unread,
Apr 11, 2021, 1:02:10 PM4/11/21
to Jenkins Users
I am a junior dev trying to lear about Jenkins, I have been learning on my own for a couple of months. Currently I have a pipeline (just for learning purposes) which runs static analysis on a folder, and then publish it, I have been able to send a report through email using jelly templates, from there I realized it is posbile to instantiate the classes of a plugin to use its methods so I went to the cppcheck javadoc here https://javadoc.jenkins.io/plugin/cppcheck/ and did some trial and error so I can get some values of my report and then do something else with them something, so I had something like this in my pipeline:
```
pipeline {
agent any

stages {
  stage('analysis') {
    steps {
      script{
        bat'cppcheck "E:/My_project/Source/" --xml --xml-version=2 . 2> cppcheck.xml'
      }
   }
}
stage('Test'){
  steps {
    script {
      publishCppcheck pattern:'cppcheck.xml'
      for (action in currentBuild.rawBuild.getActions()) {
        def name = action.getClass().getName()
        if (name == 'org.jenkinsci.plugins.cppcheck.CppcheckBuildAction') {
       def cppcheckaction = action
       def totalErrors = cppcheckaction.getResult().report.getNumberTotal()
       println totalErrors
       def warnings = cppcheckaction.getResult().statistics.getNumberWarningSeverity()
       println warnings
      }
    }
  }
}
}
}

}
```
which output is:
```
[Pipeline] echo
102
[Pipeline] echo
4
```

My logic (wrongly) tells me that if I can access to the report and statistics classes like that and uses their methods getNumberTotal() and getNumberWarningSeverity() respectively, therefore I should be able to also access the ```DiffState``` class in the same way and use the ```valueOf()``` method to get an enum of the new errors. But adding this to my pipeline:
```
def nueva = cppcheckaction.getResult().diffState.valueOf(NEW)
println nueva
```
Gives me an error:
```
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field org.jenkinsci.plugins.cppcheck.CppcheckBuildAction diffState
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:425)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:409)
...
```

Ullrich Hafner

unread,
Apr 11, 2021, 3:43:06 PM4/11/21
to Jenkins Users
Due to security considerations only methods marked with @Whitelisted are accessible in Groovy scripts. Does your getter have such an annotation?

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/ca24b1f9-b0a8-4e81-8101-0b25f8267602n%40googlegroups.com.

jesus fernandez

unread,
Apr 12, 2021, 4:16:36 AM4/12/21
to Jenkins Users

where can I see that? in the javadoc I do not see any method with that annotation, thoug I could use the getResults() with no problems

Ullrich Hafner

unread,
Apr 12, 2021, 8:28:33 AM4/12/21
to Jenkins Users
In the source code in GitHub?

You can also look for methods annotated with ExportedBean.

jesus fernandez

unread,
Apr 13, 2021, 7:32:14 AM4/13/21
to Jenkins Users
is there a javadoc for warnings-ng plugin? or just the github? I get a 404 when accesing the warnings-ng javadoc

Ullrich Hafner

unread,
Apr 14, 2021, 12:20:02 PM4/14/21
to Jenkins Users
I publish one, but never looked at the results. Does that work for other plugins?

jesus fernandez

unread,
Apr 14, 2021, 12:56:10 PM4/14/21
to jenkins...@googlegroups.com
yes all the other plugins I have checked so far have a woeking javadoc

You received this message because you are subscribed to a topic in the Google Groups "Jenkins Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-users/YTLljHneFuI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/050B3E4B-0105-4DD2-88A8-2E58373A84A5%40gmail.com.

Ullrich Hafner

unread,
Apr 14, 2021, 3:00:34 PM4/14/21
to Jenkins Users
Can you please file a bug report for the warnings plugin, it seems something broken in my build...

jesus fernandez

unread,
Apr 15, 2021, 9:21:20 AM4/15/21
to Jenkins Users
Yes I will do so
Reply all
Reply to author
Forward
0 new messages