в общей библиотеке я хочу прочитать результаты PMD, FindBugs и CheckStyle.
У меня уже есть эта функциональность в моем шаблоне .jelly
электронной почты. Это выглядит так:
def pmd = it.getAction('hudson.plugins.pmd.PmdResultAction')
def fb = it.getAction('hudson.plugins.findbugs.FindBugsResultAction')
def cs = it.getAction('hudson.plugins.checkstyle.CheckStyleResultAction')
if (pmd != null || fb != null || cs != null) {
if (pmd != null) { println " PMD: " + pmd.result.numberOfWarnings }
if (fb != null) { println " FindBugs: " + fb.result.numberOfWarnings }
if (cs != null) { println " CheckStyle: " + cs.result.numberOfWarnings }
}
Это работает.
Теперь я хотел реализовать это в своем скриптовом конвейере:
def getAction(Class actionClass) {
// getCurrent() returns the currentBuild
return getCurrent().rawBuild.getAction(actionClass)
}
[...]
def pmd = build.getAction(PmdResultAction.class)
def fb = build.getAction(FindBugsResultAction.class)
def cs = build.getAction(CheckStyleResultAction.class)
def pmdCount = pmd ? pmd.result.numberOfWarnings : 0
def fbCount = fb ? fb.result.numberOfWarnings : 0
def csCount = cs ? cs.result.numberOfWarnings : 0
def warnings = []
if (pmdCount > 0) warnings << "PMD: " + pmdCount
if (fbCount > 0) warnings << "FB: " + fbCount
if (csCount > 0) warnings << "CS: " + csCount
Конечно, с правильным импортом
import hudson.plugins.pmd.PmdResultAction
import hudson.plugins.findbugs.FindBugsResultAction
import hudson.plugins.checkstyle.CheckStyleResultAction
Но это не с ERROR: hudson.plugins.findbugs.FindBugsResultAction
или ERROR: hudson.plugins.checkstyle.CheckStyleResultAction
, если я удаляю FindBugs.
Механизм в целом работает, потому что я могу успешно прочитать getAction(AbstractTestResultAction.class)
для результатов теста.
Есть идеи, как это сделать?