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

StyleCop support in Violations plugin can't deal with absolute paths.

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • violations-plugin
    • None
    • Platform: PC, OS: Windows XP

      Using version 0.7.3 of the Violations plugin.

      I'm building a .Net project and using Stylecop 4.3. I've generated the stylecop
      XML report using StyleCopCmd on my Visual Studio 2k5 solution file and it
      generated XML like this:

      stylecop-output.xml:
      <?xml version="1.0" standalone="yes"?>
      <StyleCopReport xmlns="http://stylecopcmd.sourceforge.net/StyleCopReport.xsd">
      <Solutions>
      <ID>0</ID>
      <Location>D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\OrderManagement.sln</Location>
      <Name>OrderManagement</Name>
      <Projects>
      <ID>0</ID>
      <Location>D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\OrderManagement\OrderManagement.csproj</Location>
      <Name>OrderManagement</Name>
      <SolutionID>0</SolutionID>
      <SourceCodeFiles>
      <ID>0</ID>
      <Path>D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\OrderManagement\config\IOperatorIdManagerConfiguration.cs</Path>
      <TimeStamp>2009-04-16T08:35:49+10:00</TimeStamp>
      <Type>CS</Type>
      <Name>IOperatorIdManagerConfiguration.cs</Name>
      <CodeProjectID>0</CodeProjectID>
      </SourceCodeFiles>
      ... etc

      stylecop-output.violations.xml:
      <StyleCopViolations>
      <Violation
      Section="Root.com.gsjbw.traderworkstation.services.clientordermanagement.config.ConfigUtils.CreateConfigurationException%string%string[]"
      LineNumber="18" Source="D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\OrderManagement\config\ConfigUtils.cs"
      RuleNamespace="Microsoft.StyleCop.CSharp.DocumentationRules"
      Rule="ElementsMustBeDocumented" RuleId="SA1600">The method must have a
      documentation header.</Violation>
      <Violation
      Section="Root.com.gsjbw.traderworkstation.services.clientordermanagement.config.ISonicJmsConfiguration.JmsDelayEnabled"
      LineNumber="34" Source="D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\OrderManagement\config\ISonicJmsConfiguration.cs"
      RuleNamespace="Microsoft.StyleCop.CSharp.DocumentationRules"
      Rule="ElementsMustBeDocumented" RuleId="SA1600">The property must have a
      documentation header.</Violation>

      Etc...

      NOTE the absolute path names for the Source attribute.

      With the violations plugin enabled for the build and "XML filename pattern"
      set to "*/build/stylecop-output.xml" I get the following exception. Note I
      have not set the "Faux Project Directory" or "Source Path Pattern" settings to
      anything. If this is the problem what should I be setting them to? They
      documentation is not clear. My code does not existing in a single directory
      like Java code usually does. All code is beneath this directory though:
      D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev

      The exception text:

      FATAL: D:\CI\jobs\TW
      COMS\builds\2009-04-21_15-23-54\violations\file\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\build\D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\Shared\ServiceUtility\exception\GSJBWTimeoutException.cs.xml
      (The filename, directory name, or volume label syntax is incorrect)
      java.io.FileNotFoundException: D:\CI\jobs\TW
      COMS\builds\2009-04-21_15-23-54\violations\file\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\OrderManagement\build\D:\CI\jobs\TW
      COMS\workspace\twcoms_v\Order_Management_Products_VOB\TraderWorkstationMS\Dev\Shared\ServiceUtility\exception\GSJBWTimeoutException.cs.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:906)
      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:124)
      at
      hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:27)
      at hudson.FilePath.act(FilePath.java:552)
      at
      hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:77)
      at
      hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:56)
      at
      hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:372)
      at
      hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:360)
      at hudson.model.Build$RunnerImpl.post2(Build.java:183)
      at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:345)
      at hudson.model.Run.run(Run.java:943)
      at hudson.model.Build.run(Build.java:112)
      at hudson.model.ResourceController.execute(ResourceController.java:93)
      at hudson.model.Executor.run(Executor.java:119)

          [JENKINS-3529] StyleCop support in Violations plugin can't deal with absolute paths.

          orj76 created issue -

          I have pushed a new version of the plugin (0.7.4) can you check if it
          fixes the problem?

          peterkittreilly added a comment - I have pushed a new version of the plugin (0.7.4) can you check if it fixes the problem?
          peterkittreilly made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]

          wajrboy added a comment -

          Hi,

          I've also run into the same problem with Hudson 1.309, Violations Plugin 0.7.4
          and StyleCop 4.3 running on Windows XP SP3. The Violations Plugin is configured
          to look for *//StyleCopViolations.xml with no Source Path and no Faux Project
          Path. I get the following error:

          FATAL: C:\Documents and Settings\username\.hudson\jobs\software\builds\2009-06-
          15_14-43-35\violations\file\hudson_lag_snap\Client\Contrib\SourceAnalysis\v4.3
          \Reports\C:\Documents and
          Settings\username\.hudson\jobs\software\workspace\hudson_lag_snap\Client\Common\
          Controls\ContextSaveProvider.cs.xml (The filename, directory name, or volume
          label syntax is incorrect)
          java.io.FileNotFoundException: C:\Documents and
          Settings\username\.hudson\jobs\software\builds\2009-06-15_14-43-35
          \violations\file\hudson_lag_snap\Client\Contrib\SourceAnalysis\v4.3
          \Reports\C:\Documents and
          Settings\username\.hudson\jobs\software\workspace\hudson_lag_snap\Client\Common\
          Controls\ContextSaveProvider.cs.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:1058)
          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:124)
          at hudson.plugins.violations.ViolationsCollector.invoke
          (ViolationsCollector.java:27)
          at hudson.FilePath.act(FilePath.java:635)
          at hudson.plugins.violations.ViolationsPublisher.perform
          (ViolationsPublisher.java:77)
          at hudson.tasks.BuildStepCompatibilityLayer.perform
          (BuildStepCompatibilityLayer.java:56)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep
          (AbstractBuild.java:372)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep
          (AbstractBuild.java:360)
          at hudson.model.Build$RunnerImpl.post2(Build.java:183)
          at hudson.model.AbstractBuild$AbstractRunner.post
          (AbstractBuild.java:345)
          at hudson.model.Run.run(Run.java:947)
          at hudson.model.Build.run(Build.java:112)
          at hudson.model.ResourceController.execute(ResourceController.java:93)
          at hudson.model.Executor.run(Executor.java:119)

          wajrboy added a comment - Hi, I've also run into the same problem with Hudson 1.309, Violations Plugin 0.7.4 and StyleCop 4.3 running on Windows XP SP3. The Violations Plugin is configured to look for * / /StyleCopViolations.xml with no Source Path and no Faux Project Path. I get the following error: FATAL: C:\Documents and Settings\username\.hudson\jobs\software\builds\2009-06- 15_14-43-35\violations\file\hudson_lag_snap\Client\Contrib\SourceAnalysis\v4.3 \Reports\C:\Documents and Settings\username\.hudson\jobs\software\workspace\hudson_lag_snap\Client\Common\ Controls\ContextSaveProvider.cs.xml (The filename, directory name, or volume label syntax is incorrect) java.io.FileNotFoundException: C:\Documents and Settings\username\.hudson\jobs\software\builds\2009-06-15_14-43-35 \violations\file\hudson_lag_snap\Client\Contrib\SourceAnalysis\v4.3 \Reports\C:\Documents and Settings\username\.hudson\jobs\software\workspace\hudson_lag_snap\Client\Common\ Controls\ContextSaveProvider.cs.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:1058) 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:124) at hudson.plugins.violations.ViolationsCollector.invoke (ViolationsCollector.java:27) at hudson.FilePath.act(FilePath.java:635) at hudson.plugins.violations.ViolationsPublisher.perform (ViolationsPublisher.java:77) at hudson.tasks.BuildStepCompatibilityLayer.perform (BuildStepCompatibilityLayer.java:56) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep (AbstractBuild.java:372) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep (AbstractBuild.java:360) at hudson.model.Build$RunnerImpl.post2(Build.java:183) at hudson.model.AbstractBuild$AbstractRunner.post (AbstractBuild.java:345) at hudson.model.Run.run(Run.java:947) at hudson.model.Build.run(Build.java:112) at hudson.model.ResourceController.execute(ResourceController.java:93) at hudson.model.Executor.run(Executor.java:119)

          jagalves added a comment -

          Created an attachment (id=931)
          Set of xml files that reproduce the reported issue

          jagalves added a comment - Created an attachment (id=931) Set of xml files that reproduce the reported issue

          pvandervelde added a comment -

          Same problem here. Using:
          Huson 1.354
          Violations: 0.7.5
          StyleCop 4.3

          Stack trace:
          ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception
          java.io.FileNotFoundException: E:\integration\hudson\jobs\Apollo-Unstable\builds\2010-05-22_23-08-43\violations\file\modules\ui\projectexplorer\bin\reports\E:\integration\hudson\jobs\Apollo-Unstable\workspace\modules\Ui\projectexplorer\src\ProjectExplorer\Services\EnvironmentService.cs.xml (The filename, directory name, or volume label syntax is incorrect)
          at java.io.FileOutputStream.open(Native Method)
          at java.io.FileOutputStream.<init>(Unknown Source)
          at java.io.FileOutputStream.<init>(Unknown Source)
          at hudson.FilePath.write(FilePath.java:1235)
          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:124)
          at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:27)
          at hudson.FilePath.act(FilePath.java:747)
          at hudson.FilePath.act(FilePath.java:729)
          at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:74)
          at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36)
          at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
          at hudson.model.Build$RunnerImpl.post2(Build.java:152)
          at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
          at hudson.model.Run.run(Run.java:1267)
          at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
          at hudson.model.ResourceController.execute(ResourceController.java:88)
          at hudson.model.Executor.run(Executor.java:122)

          Is there any progress on solving this issue?

          pvandervelde added a comment - Same problem here. Using: Huson 1.354 Violations: 0.7.5 StyleCop 4.3 Stack trace: ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception java.io.FileNotFoundException: E:\integration\hudson\jobs\Apollo-Unstable\builds\2010-05-22_23-08-43\violations\file\modules\ui\projectexplorer\bin\reports\E:\integration\hudson\jobs\Apollo-Unstable\workspace\modules\Ui\projectexplorer\src\ProjectExplorer\Services\EnvironmentService.cs.xml (The filename, directory name, or volume label syntax is incorrect) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at hudson.FilePath.write(FilePath.java:1235) 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:124) at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:27) at hudson.FilePath.act(FilePath.java:747) at hudson.FilePath.act(FilePath.java:729) at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:74) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550) at hudson.model.Build$RunnerImpl.post2(Build.java:152) at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528) at hudson.model.Run.run(Run.java:1267) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:122) Is there any progress on solving this issue?

          jagalves added a comment -

          I gave up waiting and looked through the code (knowing nothing about java, so forgive my mistakes).

          In file StyleCopParser.java (package hudson.plugins.violations.types.stylecop), I made the following change (starting from line 131):

              // Add the violation to the model
              String displayName;
              //if (reportParentFile != null) {
                  displayName = ParseUtil.resolveAbsoluteName(
                  projectPath, getString(element,"Source"));
              //} else {
              //    displayName = projectPath + File.separator + getString(element,"Source");
              //}
              FullFileModel fileModel = model.getFileModel(displayName);
              fileModel.addViolation(violation);
          

          (the commented lines are my changes)

          It assumes the path comes absolute but that's always the case for me.

          jagalves added a comment - I gave up waiting and looked through the code (knowing nothing about java, so forgive my mistakes). In file StyleCopParser.java (package hudson.plugins.violations.types.stylecop), I made the following change (starting from line 131): // Add the violation to the model String displayName; // if (reportParentFile != null ) { displayName = ParseUtil.resolveAbsoluteName( projectPath, getString(element, "Source" )); //} else { // displayName = projectPath + File.separator + getString(element, "Source" ); //} FullFileModel fileModel = model.getFileModel(displayName); fileModel.addViolation(violation); (the commented lines are my changes) It assumes the path comes absolute but that's always the case for me.

          How did you get the absolute path names baked into the @Source attribute? Is there a switch in the MSBuild task to do that?

          Kohsuke Kawaguchi added a comment - How did you get the absolute path names baked into the @Source attribute? Is there a switch in the MSBuild task to do that?

          Code changed in hudson
          User: : kohsuke
          Path:
          trunk/hudson/plugins/violations/src/main/java/hudson/plugins/violations/types/stylecop/StyleCopParser.java
          http://jenkins-ci.org/commit/35527
          Log:
          [FIXED JENKINS-3529] fixed the path handling.

          SCM/JIRA link daemon added a comment - Code changed in hudson User: : kohsuke Path: trunk/hudson/plugins/violations/src/main/java/hudson/plugins/violations/types/stylecop/StyleCopParser.java http://jenkins-ci.org/commit/35527 Log: [FIXED JENKINS-3529] fixed the path handling.
          SCM/JIRA link daemon made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]

            kohsuke Kohsuke Kawaguchi
            orj76 orj76
            Votes:
            11 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated: