2015-12-01 20 views
0

我使用SonarQube 5.2和MSBuild.SonarQube.Runner来分析包含许多C#项目的解决方案。当遇到亚军自动生成的文件,如...SonarQube未能分析自动生成的目标框架绰号文件

bin\Release\.NETFramework,Version=v4.5.AssemblyAttributes.cs 
bin\Release\.NETPortable,Version=v4.5,Profile=Profile7.AssemblyAttributes.cs 

...它失败,出现以下错误...

ERROR: Error during Sonar runner execution 
org.sonar.runner.impl.RunnerException: Unable to execute Sonar 
     at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) 
     at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) 
     at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) 
     at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) 
     at org.sonar.runner.api.Runner.execute(Runner.java:100) 
     at org.sonar.runner.Main.executeTask(Main.java:70) 
     at org.sonar.runner.Main.execute(Main.java:59) 
     at org.sonar.runner.Main.main(Main.java:53) 
Caused by: java.lang.IllegalStateException: The folder 'C:\Source\Project1\bin\Release\.NETFramework' does not exist for 'TheProject:TheBranch:TheProject:TheBranch:GUID' (base directory = C:\Source\Project1) 

在我删除了解决该问题的那一刻这些文件在以'end'动词调用跑步者之前,但想知道是否有更好的方法或者这是一个已知的错误。

任何人都可以告诉我,如果SonarQube应该能够处理这些文件,或者如果有一个配置,我应该调整以避免该问题?

+0

这不是已知的问题。问题似乎是文件名包含声纳运动员不喜欢的字符;如果生成的代码位于不同的文件中,则可以成功分析代码。出于兴趣,您使用什么类型的项目模板创建项目,并且是否调整了任何项目属性以更改构建工件的位置?如果我创建一个可移植的类库项目,这些文件将生成到%TEMP%目录,并且它们会自动从分析中排除,因为它们不在项目目录下。 – duncanp

+0

@duncanpMS,你是对的。事实证明,该项目有一个自定义的“目标”文件被拉入csproj文件中的“导入项目”指令。自定义目标有意将标记文件的输出文件夹移动到程序集输出文件夹。我猜文件名称处理仍然是一个SonarQube错误,但如果你想把你的评论作为答案,我会接受它。 – ScheuNZ

回答

1

这不是一个已知的问题 - 感谢报告它。我创建了SONARMSBRU-199来跟踪它。

通常情况下,XXXAssemblyInfo.cs文件在%TEMP%目录下生成,因此它们将自动从分析中排除,因为它们不在项目文件夹下。但是,这是一个有效的文件名,所以应该可以在项目目录下创建它时进行分析。