Child pages
  • Violations
Skip to end of metadata
Go to start of metadata

Plugin Information

View Violations on the plugin site for more information.


This plug-in generates reports static code violation detectors such as checkstyle, pmd, cpd, findbugs, codenarc, fxcop, stylecop and simian.


This plugin is no longer maintained, you may want to use the Warnings Plugin: https://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin

Note: Since version 0.6.0 the violations plugin works with the jenkins maven2 project type..

Description

The violations plug-in scans for violation xml files of particular types in the build workspace, gathers the violations and reports on the numbers for each type. The currently supported types are:

type

url

version

maintainer

notes

checkstyle

http://checkstyle.sourceforge.net/

4.2

 

 

pmd

http://pmd.sourceforge.net

4.0

 

 

cpd

http://pmd.sourceforge.net/cpd.html

4.0

 

 

findbugs

http://findbugs.sourceforge.net/

1.3.3rc2

 

There are some issues with the maven plugin of findbugs - one needs to set the sourcepath field and it also appears that some violations are reported against incorrect files.

 

http://fb-contrib.sourceforge.net/

3.4.2

 

A findbugs plugin

pylint

http://www.logilab.org/857

 

redsolo

 

fxcop

http://blogs.msdn.com/fxcop/

1.35+

redsolo

 

stylecop

http://code.msdn.microsoft.com/sourceanalysis

4.2+

redsolo

 

simian

http://www.redhillconsulting.com.au/products/simian/

 

redsolo

 

gendarme

http://mono-project.com/Gendarme

 

 

 

jslint

http://www.jslint.com/lint.html


 

 

jcreport

http://www.jcoderz.org/fawkez/wiki/JcReport


 

 

pep8

https://github.com/jcrocholl/pep8

 

 

ok

codenarc

http://codenarc.sourceforge.net

 

 

 

perlcritic

http://perlcritic.com/

 

 

 

Configuration

Note: the following snapshots are from version 0.4, version 0.7 is similar (with pylint, fxcop, stylecop, simian and gendarme added).

Configuration should be easy, First you need to have activate the static code analysizers in your build. Then activate the Violations plugin as shown below. 
 
 

The fields are:

name

description

Per file display limit

This is used to limit the number of violations displayed per file per violation type.

type

The violation type.

sun icon

This is the lowest number of violations of this type to generate the sunny weather report. For example the value 10 means that violations 0 to 10 will cause a sunny report, 11 and higher will be cloudy or worse.

stormy icon

The is the lowest number of violations of this type to generate the stormy weather report.

XML filename pattern

This is an ant type pattern to match violation files of this type in the workspace. Multiple patterns may be separated by commas.

Source Path Pattern

This is an optional field. It is used to resolve classnames to source file names. It is only currently used by the findbugs violations type.

Faux Project Path

This is an optional field. It is used if you just want to run jenkins as a reporting engine for a project not in jenkins workspace. For example, the violations plugin has a jenkins job that cd's to the cvs directory, creates the checkstyle, pmd and cpd reports and the invokes violations plugin with the faux project path set to (PATH TO CVS DIR)/plugins/violations.

After configuration, the Violations plugin will collect violations from the next build. The following pages are created or modified.

Project Page

The project page is modified to add a violation icon ( ) and a violation trend graph:

Clicking on the violations link brings one to the current violations report. 

Build page


The build page also has the violations trend and the violations icon. Clinking on the violations link brings one to the violations report for this particular build.

 Violations report page

Note the following snapshots are from 0.4, 0.7 is similar, except that the +/- notation has been removed.

The start of the violations report page looks like this:

For each violation type a trend and file summary is shown as follows:
The order of the table can be changed by clinking on the column header.

 Per File Report

Linking on the file link brings on to the file report. This will show all the violations (up to a limit specified in the config page) of a file, Each violation has a line number, an icon representing the severity and a description of the violation. Hovering over the icon will give more detail on the violation - and for findbugs, this will be the long detailed message. After the list of violations, snipets from the source file will be shown for each violation. This will only happen if the violations plugin can find the file in question.

 
.
 Hovering over the violations icon on the highlighted line will cause a pop-up of the violations on the line:

Version History

Version 0.7.11:

  • Added perlcritic support.
  • Fixed XSS scripting vulnerabilities

Version 0.7.10:

  • Added cpplint support.

Version 0.7.9:

Version 0.7.8:

  • Moved over to jenkins and git

Version 0.7.7: upcoming

  • Fixed an absolute path handling in the violations report (JENKINS-3529)

Version 0.7.6: Aug 01, 2010

  • Add JSLint support
  • Add JcReport support

Version 0.7.5: Dec 29, 2009

  • Add Gendarme support
  • Update uses of deprecated APIs

Version 0.7.3: Feb 11, 2009

Version 0.7.1: August 25, 2008

Version 0.7.0: May 28, 2008

  • Enhancement: add support for stylecop

Version 0.6.0: May 5, 2008

  • Enhancement: add support for M2 job type
  • Enhancement: support for setting the build to unstable if the number of violations
    of a certain type exceed a threshold.

Version 0.5.8 April 22, 2008

  • Enhancement: add simian violations

Version 0.5.7 April 16, 2008

  • Bugfix(1550): fix for invalid decoding of some cpd.xml files
  • Bugfix(1558): fix for missing dependence on xpp3

Version 0.5.6 April 8, 2008

  • Bugfix(1129): fix for .. in paths in checkstyle reports

Version 0.5.5 March 30, 2008

  • Bugfix(1281) pmd priorities were incorrect
  • Bugfix(1217) reading of xml files used incorect character encoding
  • Feature(1217) allow user to specify encoding of source files
  • Feature readin in fb-contrib findbugs descriptions
  • Bugfix: fix of
    Version 0.5.4 Feb 25 2008
  • Bugfix: Fix so pylint errors are marked as errors.

Version 0.5.3 Oct 22 2007

  • Bugfix: Fix for cpd on dos

Version 0.5.2 Oct 10 2007

  • Bugfix: Fix a bug where the filename is an absolute dos type name (Brian Dueck)

Version 0.5.1 Sep 28 2007

  • Bugfix: remove use of a jdk6 constructor

Version 0.5 Sep 24 2007

  • Bugfix: fix serialization with slaves
  • Enhancement: add fxcop and pylint violations (Erik Ramfelt)
  • Enhancement: allow non xml report files
  • Enhancement:: change +/- to use colors

Version 0.4 Aug 15 2007

  • Bugfix: fix handling of findbugs for files without debug info JENKINS-722
  • Enhancement: show severity levels
  • Enhancement: provide trend graph for severity levels on the report page
  • Enhancement: add detail hover for findbugs on the file page
  • Enhancement: add  +- changes on the report and build pages.
  • Enhancement: make the file list table sortable.

Version 0.3 Aug 10 2007

  • Bugfixe: fix  NPEs when reading  findbugs violation files
  • Bugfix: in getting the sourcelines from findbugs violation files
  • Enhancement: allow user to optionally specify a source path pattern to resolve classes (used by the findbugs parser)
  • Enhancement:: allow user to optionally specify a different project path for resolving file names.

Version 0.2 Aug 08 2007

  • Bug fix for maven findbugs plugin

Version 0.1 Aug 08 2007

  • Initial release

59 Comments

  1. "Configuration should be easy"... um, ok.  Then where is this configuration page available from?  None of the configuration pages that I can find have a'Report Violations' check box like the one shown above.  Am I missing something?  How do I get to this page?

  2. Anonymous

    Yes, I am having the same problem. Can anyone point out where this page is?

     Thanks,

    Frank LaFond

    1. Anonymous

      I found it. To open up the display like the one shown above, look for a checkbox "Report Violations" on the "configure" page for the project to be analyzed. It will pop open the section shown above.

       - Frank.

      1. Anonymous

        I have installed last version of Hudson and last version it of violations plufins, but no chekbox appears. What is the Problem?

        1. Unknown User (peter.kitt.reilly@gmail.com)

          -- Stephen has just shown me the comments section of the wiki --

          The violations plugin currently only works for free-style projects and not for maven 2 hudson projects.

  3. Anonymous

    I am having the same problem. the plugin is started, i can't found de configuration page.

  4. Anonymous

    I tried to install lastest versions of hudson and this plug-in but the violations Icon and configuration page never apear

  5. Anonymous

    I've been having the same problem, graph shows up as a broken image. Started with latest version of violations (.4) and hudson 1.32.

  6. Anonymous

    PLEASE!!!!!! post any solution for this Issue!!!

  7. Please use the issue tracker for filing issues, so that it gets proper attention.

  8. Anonymous

    Maybe this plugin doesn't work with your project type (e.g. native m2)?

  9. Anonymous

    For the "graph shows up as a broken image" issue, see here:

    https://hudson.dev.java.net/issues/show_bug.cgi?id=820

  10. Anonymous

    What directory is the "XML filename pattern" relative to? i.e. I have an ant based build that outputs my PMD report to a file called build/reports/pmd/pmd_report.xml. I've tried specifying an XML filename pattern value as "build/reports/pmd/pmd_report.xml" but the Hudson build output shows "pmd no report".

     Any ideas?

    1. Anonymous

      Hi, I'm also having problems with this. I have an ant based build that output a checkstyle report, but when i put the path to the report file in the "XML filename pattern" field hudson can't find it. Any help would be much appreciated.

  11. Anonymous

    Firstly thx for the great plugin.

    Secondly I hit a small snag. When using the plugin with checkstyle, cpd and pmd, I notice a good integration between the cpd and checkstyle report. Ie. when clicking an entry I get an overview of the cpd and checkstyle violations, linked to the appropriate code snippets. Form pmd however this integration is not available.

    Could pmd be integrated in the same way? Otherwise point me in the appropriate direction for fixing it myself (wink)

    thx

    1. Unknown User (peter.kitt.reilly@gmail.com)

      There are two known possible reasons: 

      1.  The PMD from the the maven pmd plugin does not contain complete information on the location of source files.  If this is your case, you need to set the base directory of source files in the violation plugin.
      2. If the class files do not have debug information (for example if they are compiled with ant's <javac> without setting the debug attribute), the pmd code is not in a position to know the source files and the line number of the violation, so the violations plugin using the class name instead.

      The PMD from the the maven pmd plugin does not contain complete information on the location of source files

  12. Anonymous

    Do I have to install PMD to use it?
    I allways get an error in the console log:
    java.io.IOException: Expecting tag pmd
    at hudson.plugins.violations.parse.AbstractParser.expectNextTag(AbstractParser.java:268)
    at hudson.plugins.violations.types.pmd.PMDParser.execute(PMDParser.java:38)
    at hudson.plugins.violations.parse.AbstractTypeParser.parse(AbstractTypeParser.java:60)
    at hudson.plugins.violations.ViolationsCollector.doType(ViolationsCollector.java:158)
    at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:103)
    at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:27)
    at hudson.FilePath.act(FilePath.java:280)
    at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:73)
    at hudson.model.Build$RunnerImpl.post2(Build.java:138)
    at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:244)
    at hudson.model.Run.run(Run.java:597)
    at hudson.model.Build.run(Build.java:103)
    at hudson.model.ResourceController.execute(ResourceController.java:70)
    at hudson.model.Executor.run(Executor.java:62)
     
     I am using unmodified pmd 4.0 rules

    1. I recommend you file an issue in the issue tracker.

    2. Unknown User (peter.kitt.reilly@gmail.com)

      Most likely you have an incorrect file specification, and non pmd xml files have been included in the fileset given to the violations plugin.

  13. Unknown User (carlos.abreu@accurate.com.br)

    Hi everyone, i would like to know if it possible to customize the Checkstyle validation properties. Just like in eclipse IDE, because i have a custom checkstyle configuration file and i wanna use him.

    Thanks in advance,

    Carlos Abreu 

  14. Unknown User (bpons)

    Well i'm systematically getting this error when i try to use checkstyle rules :FATAL: Expecting tag checkstyle
    java.io.IOException: Expecting tag checkstyle
    at hudson.plugins.violations.parse.AbstractParser.expectNextTag(AbstractParser.java:268)
    at hudson.plugins.violations.types.checkstyle.CheckstyleParser.execute(CheckstyleParser.java:39)
    at hudson.plugins.violations.parse.AbstractTypeParser.parse(AbstractTypeParser.java:59)
    at hudson.plugins.violations.ViolationsCollector.doType(ViolationsCollector.java:158)
    at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:103)

    How come you expect a checkstyle tag in a checkstyle.xml file?

    1. Unknown User (peter.kitt.reilly@gmail.com)

      You need to specific the checkstyle *result* file and not the checkstyle config file.

      So for example if the result file is build/checkstyle/raw.xml, use **/build/**/raw.xml.

      If the result file is target/checkstyle-result.xml (default maven checkstyle:checkstyle),

      use **/target/checkstyle-result.xml.

  15. Unknown User (rafael.munoz@gmail.com)

    How can I integrate CPD with this?

    I'm using the last CPD version which is the one point by the http://pmd.sourceforge.net/cpd.html (corresponding a PMD 4.2.1) but it's generating a simple text file, not a XML file that the violations plugin can understand.

    Do I have to use another CPD version? If I have to, how can I do it? PMD and CPD share the same library (pmd-4.2.1.jar).

  16. Unknown User (peter.hrastnik@sonydadc.com)

    Is there a way to customize the mapping between the violation type's severity and the violation plugin's severities? I'm asking because for checkstyle, the checkstyle severity "error" (the highest severity level in checkstyle) is mapped to "medium high" in the violation plugin. As a result, in the case of checkstyle the violation report is misleading because it shows only medium and low violations, although checkstyle errors may be present.
    So I think "error" should be really mapped to "high" in order to be represented accordingly in the violations report.

    Thanx for the great plugin,
        Peter.

  17. Unknown User (gilad.gruber)

    I amusing hudson 1.233 and when I try to use the violations plugin I get the following exception:

    14/07/2008 17:25:51 hudson.ExpressionFactory2$JexlExpression evaluate
    WARNING: Caught exception evaluating: it.findReport(). Reason: java.lang.NullPointerException
    java.lang.NullPointerException
            at hudson.plugins.violations.hudson.maven.ViolationsAggregatedReport.init(ViolationsAggregatedReport.java:60)
            at hudson.plugins.violations.hudson.maven.ViolationsAggregatedReport.<init>(ViolationsAggregatedReport.java:28)
            at hudson.plugins.violations.hudson.maven.ViolationsMavenAggregatedBuildAction.getReport(ViolationsMavenAggregatedBuildAction.java:54)
            at hudson.plugins.violations.hudson.maven.ViolationsMavenAggregatedBuildAction.getReport(ViolationsMavenAggregatedBuildAction.java:23)
            at hudson.plugins.violations.ViolationsReport.findViolationsReport(ViolationsReport.java:486)
            at hudson.plugins.violations.hudson.AbstractViolationsBuildAction.findReport(AbstractViolationsBuildAction.java:150)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:259)
            at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
            at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
            at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
            at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
            at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
            at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:71)
            at org.apache.commons.jelly.tags.core.SetTag.doTag(SetTag.java:84)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
            at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
            at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.impl.StaticTag.doTag(StaticTag.java:65)
            at org.apache.commons.jelly.impl.StaticTagScript.run(StaticTagScript.java:112)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:42)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:42)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:80)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.tags.core.JellyTag.doTag(JellyTag.java:45)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:96)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)
            at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:186)

    Any ideas?

     THanks in advance,

    Gilad

  18. Could this plugin be extened to read file output from SourceMonitor (http://www.campwoodsw.com/sourcemonitor.html)?

  19. Unknown User (mdonrseif)

    Im quite seasoned in Python an pylint but very unfamilar with the java way of doing things. It seems that to use hudson with pylint I need one or many "violation xml files". Do I understand correct that the "violation xml files" should be the output of the checker tools?

    I have problems to understand how things have to fit together to get the pylint output into hudson.

    Any hints?

    1. Unknown User (mdonrseif)

      The XML part threw me off. I now found out that running

      pylint -f parseable mymodule | tee pylint.out

      and entering "**/pylint.out" into the "XML filename pattern" fieled in the Violations configuration has the desired effect.

      --md

  20. Unknown User (sebestenyb)

    Hello

    also need some help with some path issues.
    I have the hudson install in

    /home/hudson/.hudson

    I have a project in my workspace:

    home/hudson/.hudson/jobs/MyProject/workspace/ContactForm/

    The source directory is:

    home/hudson/.hudson/jobs/MyProject/workspace/ContactForm/src/

    I can generate and pickup the pmd.xml file as below:

    home/hudson/.hudson/jobs/MyProject/workspace/ContactForm/pmd.xml

    The FlexPMD generates the pmd.xml with looks-like full paths:

    home/hudson/.hudson/jobs/MyProject/workspace/ContactForm/src/com/arcad/projects/solerati/contactform/views/ColorsList.mxml

    So what do I have to write into the config of the plugin to get the Violations to pick up the sources, and link them in the file details page?

    Thanks in advance, B

  21. Unknown User (anders.forsgren@gmail.com)

    Does anyone know if it is possible to have multiple instances of the same violation plugin?
    E.g. run fxcop twice with different rulesets and show the results as two lines in the graph?

    Thanks, A

  22. Unknown User (ubaldo)

    As a matter of fact, in the Source Path Pattern, provide a directory pattern to make it work like src/*, not a file pattern like src//.java

    I've seen some posts that use such patterns.

  23. Unknown User (rj-guerra)

    Hello there,

    after several builds of the Violations plugin using fxCop to analyze my assemblies the trend graph does not display any results.

    The build report indicates the violations that occurred but indeed the graph is empty.

    Please check the screenshot here: http://yfrog.com/5s91728307p

    Any idea why this might be happening ?

    Thanks in advance,

    Ricardo

  24. Unknown User (zhenxin0603@163.com)

    Sorry, I do not speak English, my main language is Chinese, but can understand simple English the.
    Here is a patch for the solution in Windows, file path handling stylecop wrong question. Hope to add the new version as soon as possible release, thank you

    Index: src/main/java/hudson/plugins/violations/types/stylecop/StyleCopParser.java
    ===================================================================
    --- src/main/java/hudson/plugins/violations/types/stylecop/StyleCopParser.java	(revision 34783)
    +++ src/main/java/hudson/plugins/violations/types/stylecop/StyleCopParser.java	(working copy)
    @@ -136,6 +136,7 @@
                 } else {
                     displayName = reportParentFile.getPath() + File.separator + getString(element,"Source");
                 }
    +            displayName = new File(displayName).getCanonicalPath().replace(new File("").getCanonicalPath(), "").substring(1).replace("\\", "/");
                 FullFileModel fileModel = model.getFileModel(displayName);
                 fileModel.addViolation(violation);
             }
    
  25. Hello,

    I have a problem witj this plugin and JSLINT. In order to have an analysis by Violations, I need to have jslint result in XML format. I did so.. but I have the error : + bash jslint-to-xml.sh file.js /blabla/workspace/
    ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception
    java.io.IOException: Expecting tag jslint

    the thing is that I don't know what is the correct format expected by Violation. Do you have any info on this?
    Regards,

    Maxime

    1. i had this problem when the XML filename pattern was set to *.xml -> match any xml file, so not only jslint xml output

      check your XML filename pattern ? check output formatter of jslint is xml ?

  26. Can you add suport to csslint xml ? it is exactly the output from jslint ...

  27. We have a very large codebase with a lot of errors, even with a limited set of rules.  We'd like to play the CI game, but Violations has to make a ton of HTML pages on each build, causing a 15-minute delay on a 25-second checkstyle run.  Is there any way to turn off the HTML generation for each individual error?  We don't really need the list of filenames with their number of failures, and we really don't need a detailed view of the failures for each class.  Ideal would be only the files whose failures changed during a build, but no list at all would also be great.

    Thanks,

    Eric

  28. Can you recommend how to use cpplint?  I get that this plug-in is aggrogating the output XML of CPPLINT, but I can not figure out how to get CPPLINT to actually output XML.  Is there another Jenkins Plug-in? Or is it assumed that this is a simple build script?  IE 'python cpplint.py myProject/SourceCode/*'

    I can run the actual cpplint.py like my example above but I don't get any .xml output files.  Just a log off the issues in the console.

    Any help is appreciated.

  29. I have this configured to display my fxcop output and the trend chart works well, but when i click one of the files with violations it takes me to blank webpage.  

  30. TIP For StyleCop

    Always push the output xml file to the root of the workspace otherwise the link to the files will not work and it will generate very ugly long paths that show the whole Jenkins folder: Program Files/Jenkins .... /Code/File.cs

    1. Unknown User (padma.guruvelli@gmail.com)

      Hi ,

      I am facing the same problem, for me the o/p file is getting created in at the intermediate path in the workspace, in a build folder parallel to source.

      As you mentioned it shows me the complete path except the c: , but if i click on it it doesn't show anything, its blank.

  31. Unknown User (davedelfino)

    I had also a problem with StyleCop. In the overview the files with StyleCop-Errors were shown correctly. But when i clicked on the link to see the details-page, i only got a blank page with the exclemation-mark-pic.

    It seems to be a problem with reading the violation-plugin-generated xml-file, where the SyleCop-Violations are stored in.

    I fixed this problem with these changes (StyleCopParser.java and StyleCopDescriptor.java)

    Basicly i copied the logic from SimianParser and Descriptor and changed it, so it can deal with the StyleCop.violations.xml:

    StyleCopParser.java
    package hudson.plugins.violations.types.stylecop;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.xmlpull.v1.XmlPullParserException;
    
    import hudson.plugins.violations.model.FullFileModel;
    import hudson.plugins.violations.model.Severity;
    import hudson.plugins.violations.model.Violation;
    import hudson.plugins.violations.parse.AbstractTypeParser;
    import hudson.plugins.violations.util.StringUtil;
    
    /**
     * Parser for Stylecop XML files.
     */
    public class StyleCopParser extends AbstractTypeParser {
    
        class DuplicationBlock {
            String absolutePath;
            String fileName;
            int startLineNumber;
            int endLineNumber;
            String Source;
            String Message;
        }
    
        static final String TYPE_NAME = "stylecop";
        private static final int LOW_LIMIT = 10;
        private static final int MEDIUM_LIMIT = 50;
    
        @Override
        protected void execute() throws IOException, XmlPullParserException {
            expectNextTag("StyleCopViolations");
            getParser().next();
            parseSetElement();
            endElement();
        }
    
    
        private void parseSetElement() throws IOException, XmlPullParserException {
            List<DuplicationBlock> blocks = new ArrayList<DuplicationBlock>();
            while (skipToTag("Violation")) {
                blocks.add(parseBlockElement());
                getParser().next();
                endElement();
    
            }
    
            for (DuplicationBlock block : blocks) {
    
                Violation violation = createViolation(block);
    
                FullFileModel fileModel = getFileModel(block.absolutePath);
                fileModel.addViolation(violation);
            }
        }
    
    
        private DuplicationBlock parseBlockElement() throws XmlPullParserException, IOException {
            DuplicationBlock block = new DuplicationBlock();
            block.absolutePath = fixAbsolutePath(checkNotBlank("Source")).replace('\\', '/');
            block.fileName = new File(block.absolutePath).getName();
            block.startLineNumber = Integer.parseInt(getString("LineNumber"));
            block.endLineNumber = Integer.parseInt(getString("LineNumber")) + 1;
    
            String temp = getString("RuleNamespace");
            int i = temp.lastIndexOf('.');
            if (i != -1) {
            	block.Source = temp.substring(i);
            } else {
            	block.Source = getString("RuleId");
            }
    
            String ruleId = getString("RuleId");
    
            getParser().next();
            block.Message = getParser().getText() + " (" + ruleId + ")";
    
    
            return block;
        }
    
    
        /**
         * Create a violation from the duplication block
         * @param block the block to create a violation from
         * @return a violation
         */
        private Violation createViolation(DuplicationBlock block) {
            Violation violation = new Violation();
            violation.setType(TYPE_NAME);
            violation.setSource(block.Source);
            violation.setLine(block.startLineNumber);
            violation.setSeverity(Severity.MEDIUM);
            violation.setSeverityLevel(Severity.MEDIUM_VALUE);
    
            violation.setPopupMessage(block.Message);
            violation.setMessage(block.Message);
    
            return violation;
        }
    
    }
    
    StyleCopDescriptor.java
    package hudson.plugins.violations.types.stylecop;
    
    import hudson.plugins.violations.TypeDescriptor;
    import hudson.plugins.violations.ViolationsParser;
    
    /**
     * The descriptor class for StyleCop (MS Source Analysis) violations type.
     * http://code.msdn.microsoft.com/sourceanalysis/
     */
    public class StyleCopDescriptor extends TypeDescriptor {
    
        /** The one and only instance of the descriptor. */
        public static final StyleCopDescriptor DESCRIPTOR = new StyleCopDescriptor();
    
        private StyleCopDescriptor() {
            super(StyleCopParser.TYPE_NAME);
        }
    
        /**
         * Create a parser for the Simian violation type.
         * @return a new Simian parser.
         */
        @Override
        public ViolationsParser createParser() {
            return new StyleCopParser();
        }
    }
    

    Downloads: 

    plugn: violations.hpi

    classes: StyleCopParser.class StyleCopDescriptor.class

    1. Hy David,

      Same is happening to me, but can't find those files. I just have the compiled files (*.class). Do you have them, or did you create and compile them?

      Thanks,

      Marc

      1. Unknown User (davedelfino)

        I compiled the plugin and installed the new violations.hpi file

        Therefore i replaced the old violations.hpi file in the "plugins"-folder and deleted the "plugins/violations" folder.

        Then restart Jenkins, and the new plugin will be installed.

        1. Ah, ok! I think that this is out-of-reach of my knowledge...

          However, I tried what Kat Lim Ruiz says and it worked, so I will stay on this solution.

          Thank you both!

  32. Jenkins 1.475 Violation Plugin 0.7.10 VS2010 FxCop 10

    The following Managed C++ fxcop report extract

          <Namespace Name="Example">
           <Types>
            <Type Name="DelegateWrapper<Example::DataContainer *,void>" Kind="Class" Accessibility="Public" ExternallyVisible="True">
             <Members>
              <Member Name="#Delegate" Kind="Field" Static="False" Accessibility="Public" ExternallyVisible="True">
               <Messages>
                <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">
                 <Issue Certainty="90" Level="Error">Because field 'DelegateWrapper<Example::DataContainer *,void>::Delegate' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it.</Issue>
                </Message>
               </Messages>
              </Member>
             </Members>
            </Type>
            <Type Name="DelegateWrapper<Example::DataContainer *,void>+delegate_type" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">
             <Messages>
              <Message TypeName="NestedTypesShouldNotBeVisible" Category="Microsoft.Design" CheckId="CA1034" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">
               <Issue Certainty="90" Level="Error">Do not nest type 'DelegateWrapper<Example::DataContainer *,void>::delegate_type'. Alternatively, change its accessibility so that it is not externally visible.</Issue>
              </Message>
             </Messages>
            </Type>
            <Type Name="ExampleDelegate" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">
             <Messages>
              <Message TypeName="UseGenericEventHandlerInstances" Category="Microsoft.Design" CheckId="CA1003" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">
               <Issue Certainty="95" Level="Error">Remove 'ExampleDelegate' and replace its usage with EventHandler<T></Issue>
              </Message>
             </Messages>
            </Type>
            <Type Name="ManagedClass" Kind="Class" Accessibility="Public" ExternallyVisible="True">
             <Members>
              <Member Name="#OnExampleEvent" Kind="Event" Static="False" Accessibility="Family" ExternallyVisible="True">
               <Messages>
                <Message TypeName="DeclareEventHandlersCorrectly" Category="Microsoft.Design" CheckId="CA1009" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">
                 <Issue Name="Second" Certainty="95" Level="Error" Path="xxxxxx\cplusplusbreaksfxcopplugin" File="managedclass.h" Line="57">Declare the second parameter of 'ExampleDelegate' as an EventArgs, or an instance of a type that extends EventArgs, named 'e'.</Issue>
                </Message>
               </Messages>
              </Member>
             </Members>
            </Type>
           </Types>
          </Namespace>
          <Namespace Name="Example">

           <Types>

            <Type Name="DelegateWrapper<Example::DataContainer *,void>" Kind="Class" Accessibility="Public" ExternallyVisible="True">

             <Members>

              <Member Name="#Delegate" Kind="Field" Static="False" Accessibility="Public" ExternallyVisible="True">

               <Messages>

                <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

                 <Issue Certainty="90" Level="Error">Because field 'DelegateWrapper<Example::DataContainer *,void>::Delegate' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it.</Issue>

                </Message>

               </Messages>

              </Member>

             </Members>

            </Type>

            <Type Name="DelegateWrapper<Example::DataContainer *,void>+delegate_type" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">

             <Messages>

              <Message TypeName="NestedTypesShouldNotBeVisible" Category="Microsoft.Design" CheckId="CA1034" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

               <Issue Certainty="90" Level="Error">Do not nest type 'DelegateWrapper<Example::DataContainer *,void>::delegate_type'. Alternatively, change its accessibility so that it is not externally visible.</Issue>

              </Message>

             </Messages>

            </Type>

            <Type Name="ExampleDelegate" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">

             <Messages>

              <Message TypeName="UseGenericEventHandlerInstances" Category="Microsoft.Design" CheckId="CA1003" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

               <Issue Certainty="95" Level="Error">Remove 'ExampleDelegate' and replace its usage with EventHandler<T></Issue>

              </Message>

             </Messages>

            </Type>

            <Type Name="ManagedClass" Kind="Class" Accessibility="Public" ExternallyVisible="True">

             <Members>

              <Member Name="#OnExampleEvent" Kind="Event" Static="False" Accessibility="Family" ExternallyVisible="True">

               <Messages>

                <Message TypeName="DeclareEventHandlersCorrectly" Category="Microsoft.Design" CheckId="CA1009" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

                 <Issue Name="Second" Certainty="95" Level="Error" Path="xxxxxx\cplusplusbreaksfxcopplugin" File="managedclass.h" Line="57">Declare the second parameter of 'ExampleDelegate' as an EventArgs, or an instance of a type that extends EventArgs, named 'e'.</Issue>

                </Message>

               </Messages>

              </Member>

             </Members>

            </Type>

           </Types>

          </Namespace>      <Namespace Name="Example">

           <Types>

            <Type Name="DelegateWrapper<Example::DataContainer *,void>" Kind="Class" Accessibility="Public" ExternallyVisible="True">

             <Members>

              <Member Name="#Delegate" Kind="Field" Static="False" Accessibility="Public" ExternallyVisible="True">

               <Messages>

                <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

                 <Issue Certainty="90" Level="Error">Because field 'DelegateWrapper<Example::DataContainer *,void>::Delegate' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it.</Issue>

                </Message>

               </Messages>

              </Member>

             </Members>

            </Type>

            <Type Name="DelegateWrapper<Example::DataContainer *,void>+delegate_type" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">

             <Messages>

              <Message TypeName="NestedTypesShouldNotBeVisible" Category="Microsoft.Design" CheckId="CA1034" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

               <Issue Certainty="90" Level="Error">Do not nest type 'DelegateWrapper<Example::DataContainer *,void>::delegate_type'. Alternatively, change its accessibility so that it is not externally visible.</Issue>

              </Message>

             </Messages>

            </Type>

            <Type Name="ExampleDelegate" Kind="Delegate" Accessibility="Public" ExternallyVisible="True">

             <Messages>

              <Message TypeName="UseGenericEventHandlerInstances" Category="Microsoft.Design" CheckId="CA1003" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

               <Issue Certainty="95" Level="Error">Remove 'ExampleDelegate' and replace its usage with EventHandler<T></Issue>

              </Message>

             </Messages>

            </Type>

            <Type Name="ManagedClass" Kind="Class" Accessibility="Public" ExternallyVisible="True">

             <Members>

              <Member Name="#OnExampleEvent" Kind="Event" Static="False" Accessibility="Family" ExternallyVisible="True">

               <Messages>

                <Message TypeName="DeclareEventHandlersCorrectly" Category="Microsoft.Design" CheckId="CA1009" Status="Active" Created="2012-07-27 11:27:19Z" FixCategory="Breaking">

                 <Issue Name="Second" Certainty="95" Level="Error" Path="xxxxxx\cplusplusbreaksfxcopplugin" File="managedclass.h" Line="57">Declare the second parameter of 'ExampleDelegate' as an EventArgs, or an instance of a type that extends EventArgs, named 'e'.</Issue>

                </Message>

               </Messages>

              </Member>

             </Members>

            </Type>

           </Types>

          </Namespace>

    I believe is causing the following error :-

    ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception

    java.io.FileNotFoundException: E:\xxxxxx\violations\file\Example.DelegateWrapper<Example::DataContainer *,void>.xml (The filename, directory name, or volume label syntax is incorrect)

          at java.io.FileOutputStream.open(Native Method)

          at java.io.FileOutputStream.<init>(FileOutputStream.java:179)

          at java.io.FileOutputStream.<init>(FileOutputStream.java:131)

          at hudson.FilePath.write(FilePath.java:1474)

          at hudson.plugins.violations.generate.ExecuteFilePath.execute(ExecuteFilePath.java:40)

          at hudson.plugins.violations.generate.GenerateXML.execute(GenerateXML.java:47)

          at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:122)

          at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:25)

          at hudson.FilePath.act(FilePath.java:842)

          at hudson.FilePath.act(FilePath.java:824)

          at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:74)

          at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36)

          at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717)

          at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:692)

          at hudson.model.Build$BuildExecution.post2(Build.java:183)

          at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:639)

          at hudson.model.Run.execute(Run.java:1513)

          at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)

          at hudson.model.ResourceController.execute(ResourceController.java:88)

          at hudson.model.Executor.run(Executor.java:236)

  33. I cannot compile the violations plugin successfully by maven 2.0.11.

    Log posted below and ask for help:

    mvn.bat -f d:\temp\violations\pom.xml

    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Jenkins Violations plugin
    [INFO]    task-segment: [package]
    [INFO] ------------------------------------------------------------------------
    [INFO] [enforcer:display-info

    Unknown macro: {execution}

    ]
    [INFO] Maven Version: 2.0.11
    [INFO] JDK Version: 1.7.0_06 normalized as: 1.7.0-6
    [INFO] OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
    [INFO] [localizer:generate

    Unknown macro: {execution}

    ]
    [INFO] [resources:resources]
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 20 resources
    -----------------------------------------------------
    this realm = app0.child-container[org.jenkins-ci.tools:maven-hpi-plugin]
    urls[0] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jenkins-ci/tools/maven-hpi-plugin/1.64/maven-hpi-plugin-1.64.jar
    urls[1] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/maven-archiver/2.0.1/maven-archiver-2.0.1.jar
    urls[2] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar
    urls[3] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-4/plexus-archiver-1.0-alpha-4.jar
    urls[4] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/maven-jetty-plugin/6.1.1/maven-jetty-plugin-6.1.1.jar
    urls[5] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-el/commons-el/1.0/commons-el-1.0.jar
    urls[6] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty/6.1.1/jetty-6.1.1.jar
    urls[7] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-util/6.1.1/jetty-util-6.1.1.jar
    urls[8] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/servlet-api-2.5/6.1.1/servlet-api-2.5-6.1.1.jar
    urls[9] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/maven-plugin-tools-api/2.0/maven-plugin-tools-api-2.0.jar
    urls[10] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-plus/6.1.1/jetty-plus-6.1.1.jar
    urls[11] = file:/C:/Documents and Settings/w42895/.m2/repository/javax/mail/mail/1.4/mail-1.4.jar
    urls[12] = file:/C:/Documents and Settings/w42895/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar
    urls[13] = file:/C:/Documents and Settings/w42895/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0.1B-rc4/geronimo-spec-jta-1.0.1B-rc4.jar
    urls[14] = file:/C:/Documents and Settings/w42895/.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar
    urls[15] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-naming/6.1.1/jetty-naming-6.1.1.jar
    urls[16] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-management/6.1.1/jetty-management-6.1.1.jar
    urls[17] = file:/C:/Documents and Settings/w42895/.m2/repository/mx4j/mx4j/3.0.1/mx4j-3.0.1.jar
    urls[18] = file:/C:/Documents and Settings/w42895/.m2/repository/mx4j/mx4j-tools/3.0.1/mx4j-tools-3.0.1.jar
    urls[19] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jsp-2.1/6.1.1/jsp-2.1-6.1.1.jar
    urls[20] = file:/C:/Documents and Settings/w42895/.m2/repository/org/eclipse/jdt/core/3.1.1/core-3.1.1.jar
    urls[21] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jsp-api-2.1/6.1.1/jsp-api-2.1-6.1.1.jar
    urls[22] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin/1.0-alpha-4/maven-archetype-plugin-1.0-alpha-4.jar
    urls[23] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-core/1.0-alpha-4/maven-archetype-core-1.0-alpha-4.jar
    urls[24] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.2/plexus-velocity-1.1.2.jar
    urls[25] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-collections/commons-collections/2.0/commons-collections-2.0.jar
    urls[26] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
    urls[27] = file:/C:/Documents and Settings/w42895/.m2/repository/velocity/velocity/1.4/velocity-1.4.jar
    urls[28] = file:/C:/Documents and Settings/w42895/.m2/repository/velocity/velocity-dep/1.4/velocity-dep-1.4.jar
    urls[29] = file:/C:/Documents and Settings/w42895/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
    urls[30] = file:/C:/Documents and Settings/w42895/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
    urls[31] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-creator/1.0-alpha-4/maven-archetype-creator-1.0-alpha-4.jar
    urls[32] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-model/1.0-alpha-4/maven-archetype-model-1.0-alpha-4.jar
    urls[33] = file:/C:/Documents and Settings/w42895/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
    urls[34] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/maven-stapler-plugin/1.15/maven-stapler-plugin-1.15.jar
    urls[35] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/stapler/1.100/stapler-1.100.jar
    urls[36] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-discovery/commons-discovery/0.4/commons-discovery-0.4.jar
    urls[37] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
    urls[38] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
    urls[39] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar
    urls[40] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/localizer/localizer/1.7/localizer-1.7.jar
    urls[41] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/json-lib/2.1/json-lib-2.1-jdk15.jar
    urls[42] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-lang/commons-lang/2.3/commons-lang-2.3.jar
    urls[43] = file:/C:/Documents and Settings/w42895/.m2/repository/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar
    urls[44] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/tiger-types/1.1/tiger-types-1.1.jar
    urls[45] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-fileupload/commons-fileupload/1.2.1/commons-fileupload-1.2.1.jar
    urls[46] = file:/C:/Documents and Settings/w42895/.m2/repository/qdox/qdox/1.6.1/qdox-1.6.1.jar
    urls[47] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/2.0.2/maven-compiler-plugin-2.0.2.jar
    urls[48] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-api/1.5.3/plexus-compiler-api-1.5.3.jar
    urls[49] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-manager/1.5.3/plexus-compiler-manager-1.5.3.jar
    urls[50] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-javac/1.5.3/plexus-compiler-javac-1.5.3.jar
    urls[51] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/maven-jellydoc-plugin/1.3/maven-jellydoc-plugin-1.3.jar
    urls[52] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/jellydoc-annotations/1.3/jellydoc-annotations-1.3.jar
    urls[53] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/taglib-xml-writer/1.3/taglib-xml-writer-1.3.jar
    urls[54] = file:/C:/Documents and Settings/w42895/.m2/repository/com/sun/xml/txw2/txw2/20090102/txw2-20090102.jar
    urls[55] = file:/C:/Documents and Settings/w42895/.m2/repository/net/java/dev/textile-j/textile-j/2.2.864/textile-j-2.2.864.jar
    urls[56] = file:/C:/Documents and Settings/w42895/.m2/repository/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.jar
    urls[57] = file:/C:/Documents and Settings/w42895/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
    urls[58] = file:/C:/Documents and Settings/w42895/.m2/repository/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar
    urls[59] = file:/C:/Documents and Settings/w42895/.m2/repository/jdom/jdom/1.0/jdom-1.0.jar
    urls[60] = file:/C:/Documents and Settings/w42895/.m2/repository/xom/xom/1.0/xom-1.0.jar
    urls[61] = file:/C:/Documents and Settings/w42895/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar
    urls[62] = file:/C:/Documents and Settings/w42895/.m2/repository/xalan/xalan/2.6.0/xalan-2.6.0.jar
    urls[63] = file:/C:/Documents and Settings/w42895/.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar
    urls[64] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/reporting/maven-reporting-impl/2.0.1/maven-reporting-impl-2.0.1.jar
    urls[65] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar
    urls[66] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/doxia/doxia-core/1.0-alpha-6/doxia-core-1.0-alpha-6.jar
    urls[67] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0-alpha-6/doxia-site-renderer-1.0-alpha-6.jar
    urls[68] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-6/plexus-i18n-1.0-beta-6.jar
    Number of imports: 10
    import: org.codehaus.classworlds.Entry@a6c57a42
    import: org.codehaus.classworlds.Entry@12f43f3b
    import: org.codehaus.classworlds.Entry@20025374
    import: org.codehaus.classworlds.Entry@f8e44ca4
    import: org.codehaus.classworlds.Entry@92758522
    import: org.codehaus.classworlds.Entry@ebf2705b
    import: org.codehaus.classworlds.Entry@bb25e54
    import: org.codehaus.classworlds.Entry@bece5185
    import: org.codehaus.classworlds.Entry@3fee8e37
    import: org.codehaus.classworlds.Entry@3fee19d8
    this realm = plexus.core
    urls[0] = file:/D:/jenkins/apache-maven-2.0.11/lib/maven-2.0.11-uber.jar
    Number of imports: 10
    import: org.codehaus.classworlds.Entry@a6c57a42
    import: org.codehaus.classworlds.Entry@12f43f3b
    import: org.codehaus.classworlds.Entry@20025374
    import: org.codehaus.classworlds.Entry@f8e44ca4
    import: org.codehaus.classworlds.Entry@92758522
    import: org.codehaus.classworlds.Entry@ebf2705b
    import: org.codehaus.classworlds.Entry@bb25e54
    import: org.codehaus.classworlds.Entry@bece5185
    import: org.codehaus.classworlds.Entry@3fee8e37
    import: org.codehaus.classworlds.Entry@3fee19d8
    -----------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Internal error in the plugin manager executing goal 'org.jenkins-ci.tools:maven-hpi-plugin:1.64:apt-compile': Unable to find the mojo 'org.jenkins-ci.tools:maven-hpi-plugin:1.64:apt-compile' in the plugin 'org.jenkins-ci.tools:maven-hpi-plugin'
    com.sun.mirror.apt.AnnotationProcessorFactory
    [INFO] ------------------------------------------------------------------------
    [INFO] For more information, run Maven with the -e switch
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 20 seconds
    [INFO] Finished at: Tue Aug 28 08:59:41 CST 2012
    [INFO] Final Memory: 38M/90M
    [INFO] ------------------------------------------------------------------------
    [INFO] Scanning for projects...

    [INFO] ------------------------------------------------------------------------

    [INFO] Building Jenkins Violations plugin

    [INFO]    task-segment: [package]

    [INFO] ------------------------------------------------------------------------

    [INFO] [enforcer:display-info

    Unknown macro: {execution}

    ]

    [INFO] Maven Version: 2.0.11

    [INFO] JDK Version: 1.7.0_06 normalized as: 1.7.0-6

    [INFO] OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1

    [INFO] [localizer:generate

    Unknown macro: {execution}

    ]

    [INFO] [resources:resources]

    [INFO] Using 'UTF-8' encoding to copy filtered resources.

    [INFO] Copying 20 resources

    -----------------------------------------------------

    this realm = app0.child-container[org.jenkins-ci.tools:maven-hpi-plugin]

    urls[0] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jenkins-ci/tools/maven-hpi-plugin/1.64/maven-hpi-plugin-1.64.jar

    urls[1] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/maven-archiver/2.0.1/maven-archiver-2.0.1.jar

    urls[2] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar

    urls[3] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0-alpha-4/plexus-archiver-1.0-alpha-4.jar

    urls[4] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/maven-jetty-plugin/6.1.1/maven-jetty-plugin-6.1.1.jar

    urls[5] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-el/commons-el/1.0/commons-el-1.0.jar

    urls[6] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty/6.1.1/jetty-6.1.1.jar

    urls[7] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-util/6.1.1/jetty-util-6.1.1.jar

    urls[8] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/servlet-api-2.5/6.1.1/servlet-api-2.5-6.1.1.jar

    urls[9] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/maven-plugin-tools-api/2.0/maven-plugin-tools-api-2.0.jar

    urls[10] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-plus/6.1.1/jetty-plus-6.1.1.jar

    urls[11] = file:/C:/Documents and Settings/w42895/.m2/repository/javax/mail/mail/1.4/mail-1.4.jar

    urls[12] = file:/C:/Documents and Settings/w42895/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar

    urls[13] = file:/C:/Documents and Settings/w42895/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0.1B-rc4/geronimo-spec-jta-1.0.1B-rc4.jar

    urls[14] = file:/C:/Documents and Settings/w42895/.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar

    urls[15] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-naming/6.1.1/jetty-naming-6.1.1.jar

    urls[16] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jetty-management/6.1.1/jetty-management-6.1.1.jar

    urls[17] = file:/C:/Documents and Settings/w42895/.m2/repository/mx4j/mx4j/3.0.1/mx4j-3.0.1.jar

    urls[18] = file:/C:/Documents and Settings/w42895/.m2/repository/mx4j/mx4j-tools/3.0.1/mx4j-tools-3.0.1.jar

    urls[19] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jsp-2.1/6.1.1/jsp-2.1-6.1.1.jar

    urls[20] = file:/C:/Documents and Settings/w42895/.m2/repository/org/eclipse/jdt/core/3.1.1/core-3.1.1.jar

    urls[21] = file:/C:/Documents and Settings/w42895/.m2/repository/org/mortbay/jetty/jsp-api-2.1/6.1.1/jsp-api-2.1-6.1.1.jar

    urls[22] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin/1.0-alpha-4/maven-archetype-plugin-1.0-alpha-4.jar

    urls[23] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-core/1.0-alpha-4/maven-archetype-core-1.0-alpha-4.jar

    urls[24] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.2/plexus-velocity-1.1.2.jar

    urls[25] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-collections/commons-collections/2.0/commons-collections-2.0.jar

    urls[26] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar

    urls[27] = file:/C:/Documents and Settings/w42895/.m2/repository/velocity/velocity/1.4/velocity-1.4.jar

    urls[28] = file:/C:/Documents and Settings/w42895/.m2/repository/velocity/velocity-dep/1.4/velocity-dep-1.4.jar

    urls[29] = file:/C:/Documents and Settings/w42895/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar

    urls[30] = file:/C:/Documents and Settings/w42895/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar

    urls[31] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-creator/1.0-alpha-4/maven-archetype-creator-1.0-alpha-4.jar

    urls[32] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/archetype/maven-archetype-model/1.0-alpha-4/maven-archetype-model-1.0-alpha-4.jar

    urls[33] = file:/C:/Documents and Settings/w42895/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar

    urls[34] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/maven-stapler-plugin/1.15/maven-stapler-plugin-1.15.jar

    urls[35] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/stapler/1.100/stapler-1.100.jar

    urls[36] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-discovery/commons-discovery/0.4/commons-discovery-0.4.jar

    urls[37] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar

    urls[38] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar

    urls[39] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar

    urls[40] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/localizer/localizer/1.7/localizer-1.7.jar

    urls[41] = file:/C:/Documents and Settings/w42895/.m2/repository/org/kohsuke/stapler/json-lib/2.1/json-lib-2.1-jdk15.jar

    urls[42] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-lang/commons-lang/2.3/commons-lang-2.3.jar

    urls[43] = file:/C:/Documents and Settings/w42895/.m2/repository/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar

    urls[44] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/tiger-types/1.1/tiger-types-1.1.jar

    urls[45] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-fileupload/commons-fileupload/1.2.1/commons-fileupload-1.2.1.jar

    urls[46] = file:/C:/Documents and Settings/w42895/.m2/repository/qdox/qdox/1.6.1/qdox-1.6.1.jar

    urls[47] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/2.0.2/maven-compiler-plugin-2.0.2.jar

    urls[48] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-api/1.5.3/plexus-compiler-api-1.5.3.jar

    urls[49] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-manager/1.5.3/plexus-compiler-manager-1.5.3.jar

    urls[50] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-compiler-javac/1.5.3/plexus-compiler-javac-1.5.3.jar

    urls[51] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/maven-jellydoc-plugin/1.3/maven-jellydoc-plugin-1.3.jar

    urls[52] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/jellydoc-annotations/1.3/jellydoc-annotations-1.3.jar

    urls[53] = file:/C:/Documents and Settings/w42895/.m2/repository/org/jvnet/maven-jellydoc-plugin/taglib-xml-writer/1.3/taglib-xml-writer-1.3.jar

    urls[54] = file:/C:/Documents and Settings/w42895/.m2/repository/com/sun/xml/txw2/txw2/20090102/txw2-20090102.jar

    urls[55] = file:/C:/Documents and Settings/w42895/.m2/repository/net/java/dev/textile-j/textile-j/2.2.864/textile-j-2.2.864.jar

    urls[56] = file:/C:/Documents and Settings/w42895/.m2/repository/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.jar

    urls[57] = file:/C:/Documents and Settings/w42895/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar

    urls[58] = file:/C:/Documents and Settings/w42895/.m2/repository/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar

    urls[59] = file:/C:/Documents and Settings/w42895/.m2/repository/jdom/jdom/1.0/jdom-1.0.jar

    urls[60] = file:/C:/Documents and Settings/w42895/.m2/repository/xom/xom/1.0/xom-1.0.jar

    urls[61] = file:/C:/Documents and Settings/w42895/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar

    urls[62] = file:/C:/Documents and Settings/w42895/.m2/repository/xalan/xalan/2.6.0/xalan-2.6.0.jar

    urls[63] = file:/C:/Documents and Settings/w42895/.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar

    urls[64] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/reporting/maven-reporting-impl/2.0.1/maven-reporting-impl-2.0.1.jar

    urls[65] = file:/C:/Documents and Settings/w42895/.m2/repository/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar

    urls[66] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/doxia/doxia-core/1.0-alpha-6/doxia-core-1.0-alpha-6.jar

    urls[67] = file:/C:/Documents and Settings/w42895/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0-alpha-6/doxia-site-renderer-1.0-alpha-6.jar

    urls[68] = file:/C:/Documents and Settings/w42895/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-6/plexus-i18n-1.0-beta-6.jar

    Number of imports: 10

    import: org.codehaus.classworlds.Entry@a6c57a42

    import: org.codehaus.classworlds.Entry@12f43f3b

    import: org.codehaus.classworlds.Entry@20025374

    import: org.codehaus.classworlds.Entry@f8e44ca4

    import: org.codehaus.classworlds.Entry@92758522

    import: org.codehaus.classworlds.Entry@ebf2705b

    import: org.codehaus.classworlds.Entry@bb25e54

    import: org.codehaus.classworlds.Entry@bece5185

    import: org.codehaus.classworlds.Entry@3fee8e37

    import: org.codehaus.classworlds.Entry@3fee19d8

    this realm = plexus.core

    urls[0] = file:/D:/jenkins/apache-maven-2.0.11/lib/maven-2.0.11-uber.jar

    Number of imports: 10

    import: org.codehaus.classworlds.Entry@a6c57a42

    import: org.codehaus.classworlds.Entry@12f43f3b

    import: org.codehaus.classworlds.Entry@20025374

    import: org.codehaus.classworlds.Entry@f8e44ca4

    import: org.codehaus.classworlds.Entry@92758522

    import: org.codehaus.classworlds.Entry@ebf2705b

    import: org.codehaus.classworlds.Entry@bb25e54

    import: org.codehaus.classworlds.Entry@bece5185

    import: org.codehaus.classworlds.Entry@3fee8e37

    import: org.codehaus.classworlds.Entry@3fee19d8

    -----------------------------------------------------

    [INFO] ------------------------------------------------------------------------

    [ERROR] BUILD ERROR

    [INFO] ------------------------------------------------------------------------

    [INFO] Internal error in the plugin manager executing goal 'org.jenkins-ci.tools:maven-hpi-plugin:1.64:apt-compile': Unable to find the mojo 'org.jenkins-ci.tools:maven-hpi-plugin:1.64:apt-compile' in the plugin 'org.jenkins-ci.tools:maven-hpi-plugin'

    com.sun.mirror.apt.AnnotationProcessorFactory

    [INFO] ------------------------------------------------------------------------

    [INFO] For more information, run Maven with the -e switch

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 20 seconds

    [INFO] Finished at: Tue Aug 28 08:59:41 CST 2012

    [INFO] Final Memory: 38M/90M

    [INFO] ------------------------------------------------------------------------

    1. problem resolved.

      it is attributed to jre version(jre 7 is not prefer)

    2. problem resolved.

      it is attributed to jre version(jre 7 is not prefer)

  34. I installed the violations plugin and would like to generate cpplint output, however I simply do not know what to do to get it working.

    I have a simple checkout jenkins projekt. And I downloaded the cpplint.py. However, it doe not produce xml output AFAIR.

    Could you please point me to some direction, where to look further.

    1. ok, first of all:

      - the plugin parses the standard cpplint.py output, which is not xml

      but then:

      - during parsing of an outputfile, the plugin creates xml files, where it stores a report for each file

      - this file gets stored in the jenkins build dir

      - for me the file path is a complete file path I called cpplint.py, e.g. "C:\Users\user\.jenkins\jobs\project\builds\2012-10-11_11-02-55\violations\file\project\src\core\mission\main.cpp.xml" 

      - this works for relative paths, but throws an exception for full quallified paths, e.g., "C:\Users\user\.jenkins\jobs\project\builds\2012-10-11_11-02-55\violations\file\C:\Users\user\.jenkins\workspace\project\src\core\mission\main.cpp.xml"

      - eitther way, the individual file reports still wont work, "no violations", somehow the file does not get found, I guess

      1. Dear Christoph,

          I tried to execute cpplint through windows batch like below:

          cpplint.py --output=vs7 C:\Document\VAH_V3.0\Cpplint\Hello.cpp 2>C:\Document\VAH_V3.0\Cpplint\CpplintResutl.txt

          But the result always shown in the console in Jenkin and could not be written into CppLintResult.txt.

          I tried to read the result txt using violations plugin in Jenkins. It could read.

          Could you please give us a example for the cpplint check and result shown in Jenkins? Thank you so much~

      2. Dear Christoph,

          I tried to execute cpplint through windows batch like below:

          cpplint.py --output=vs7 C:\Document\VAH_V3.0\Cpplint\Hello.cpp 2>C:\Document\VAH_V3.0\Cpplint\CpplintResutl.txt

          But the result always shown in the console in Jenkin and could not be written into CppLintResult.txt.

          I tried to read the result txt using violations plugin in Jenkins. It could read.

          Could you please give us a example for the cpplint check and result shown in Jenkins? Thank you so much~

  35. I have a Jenkins job where I specify (something like) the following FxCop command:FxCopCmd.exe"/file:"test.dll" /out:"FxCop_Output.xml" /ignoregeneratedcode /project:"C:\Jenkins\extra\Modified_Rules.FxCop" /fo /s /searchgacWhen the Jenkins job is run it finds a number of code violations, and properly displays a graph as well as a list of file names with the number of violations in each file. However, if I click on file (that does not end in ".cs"), I get taken to a page with an exclamation point in a red triangle, however there is no code displayed, nor is there a list of FxCop errors.  I've linked to an screenshot of the issue I am seeing:

    http://i.stack.imgur.com/VNKF6.jpg

    Conversely, if I click on a C-Sharp file (ends with ".cs") I do get the code and can hover over the violations and get a description properly.

    Is there some sort of FxCop configuration I'm missing?  How can I get the Violations plugin to display the code violations for these files?

  36. Peter,
    any chance you can accept this pull request?
    It's a fix for JENKINS-14970 which I just ran into today.
    Thanks!

  37. This is a nice plugin "one for all" :-)

    Is there somone who is still maintaining this plugin?

    Is ther a chance to integrate some additonal scans? (like: https://www.owasp.org/index.php/OWASP_Dependency_Check)