我在Windows 7机器上使用SVN执行声纳分析(Sonar Runner v2.4和SonarQube 5.0)时遇到了一些问题。
我收到以下错误:
java.lang.IllegalStateException: Unable to blame file DataTypes/TtCallPackagePlanType.cs. No blame info at line 1. Is file commited?
当我用-X标志执行sonar-runner时,它告诉我sonar正在执行这个blame命令:
svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallPackagePlanType.cs
但是当我在同一位置的命令提示符下运行该命令时,我会得到一个完整格式的XML文件,您可以在此链接中看到:
SVN版本是1.8.10,我在执行声纳运行器之前在完整目录上运行了svn upgrade
。
我不明白SVN插件对责备数据有什么问题。
我无法附加完整的日志,因为它对于网站(和pastebin)来说太大了,但是这里(我认为是)相关的行:
01:18:49.335 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallDirection.cs
01:18:49.381 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallOrigin.cs
01:18:49.413 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallOutcome.cs
01:18:49.803 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallPackagePlanType.cs
01:18:49.912 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallReason.cs
01:18:49.959 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallRecordOutcome.cs
01:18:49.974 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallRecordValidity.cs
01:18:50.068 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCallValidity.cs
01:18:50.463 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtChargeEnquiryReportDataType.cs
01:18:50.494 DEBUG - Release semaphore on project : org.sonar.api.resources.Project@1b4cf3[id=1,key=icharge:latest,qualifier=TRK], with key batch-sonar:test
01:18:50.512 DEBUG - Executing: svn blame --xml --non-interactive -x -w --username ******** --password ******** --trust-server-cert DataTypes/TtCheckOutNumberDetails.cs
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 35.833s
Final Memory: 22M/115M
INFO: ------------------------------------------------------------------------
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: Unable to blame file DataTypes/TtCallPackagePlanType.cs. No blame info at line 1. Is file commited?
at org.sonar.plugins.scm.svn.SvnBlameConsumer.consumeLine(SvnBlameConsumer.java:135)
at org.sonar.api.utils.command.CommandExecutor$StreamGobbler.consumeLine(CommandExecutor.java:191)
at org.sonar.api.utils.command.CommandExecutor$StreamGobbler.run(CommandExecutor.java:177)
链接到sonar-project.properties: http://pastebin.com/xnFyPz67
链接到sonar.properties: http://pastebin.com/q6TaGZQG
答案 0 :(得分:8)
我遇到了类似的问题:
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Unable to blame file <path_to_the_file>
...
Caused by: org.eclipse.jgit.api.errors.JGitInternalException: Missing commit <sha1_of_commit>
在我的情况下,这是由于浅层克隆。我有一个jenkins工作设置方式,它总是会检查深度= 1的分支(以获得时间)。
答案 1 :(得分:2)
我正在使用GIT,我也遇到了同样的问题。我已从存储库中删除该文件并将其再次推送到存储库。这对我有用。
答案 2 :(得分:0)
问题是由有问题的源文件引起的,其中包含不可见的UTF-16字符,我的SVN版本在输出到XML时没有支持。
将源文件的编码更改为ANSI并重新提交以修复此问题。
答案 3 :(得分:0)
我有同样的问题,在我的情况下,这是由于文件名上的大小写。从Sonar报回的文件名中的一些字符与文件系统(Windows,git)中实际存储的字符不同,例如myFile.cs vs myfile.cs 我更新了它们以匹配并且问题消失了。
答案 4 :(得分:0)
我有同样的问题。
我删除了声纳缓存文件夹并执行git push
,最后修复了。太奇怪了。
我认为这是声纳缓存和git缓存的问题。