SonarQube 5.6 恢复质量配置文件

Posted

技术标签:

【中文标题】SonarQube 5.6 恢复质量配置文件【英文标题】:SonarQube 5.6 restore quality profile 【发布时间】:2017-06-15 16:08:34 【问题描述】:

我正在尝试使用 curl 通过 Web API 在全新安装的 SonarQube v.5.6.4 上恢复质量配置文件。

在 c:\temp 中,我有一个从运行 Sonar 导出的“Sonar way”配置文件,我已将其重命名为 test.xml(在内部,名称也更改为 test,因此两个配置文件都是“不同的”)。

从 c:\temp 位置,我使用了以下 curl 命令:

curl -v -X POST -u admin:admin --header "Content-Type: application/xml"
     "http://localhost:9000/api/qualityprofiles/restore" -d 备份=test.xml

回复是:

500 Internal Server Error 如果您是本网站的管理员,
那么请阅读此 Web 应用程序的日志文件以找出问题所在。

无论我如何更改 curl 命令(使用不同的内容类型,使用 -F 参数,在文件名前使用 @),​​我都无法解决这个问题。

此外,我检查了声纳日志,如下所示:

2017.01.30 14:13:14 错误 web[rails] /!\ FAILSAFE /!\ Mon Jan 30 14:13:14 +0100 2017
  状态:500 内部服务器错误
  nil:NilClass 的未定义方法“名称”
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/activesupport-2.3.15/lib/active_support/xml_mini/rexml.rb:29:in `merge_element!'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/activesupport-2.3.15/lib/active_support/xml_mini/rexml.rb:18:in `parse'
    org/jruby/RubyKernel.java:2227:in `send'
    C:1:在“解析”中
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/activesupport-2.3.15/lib/active_support/core_ext/hash/conversions.rb:171:in `from_xml'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/params_parser.rb:34:in `parse_formatted_pa​​rameters'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/params_parser.rb:11:in `call'
    文件:/C:/bin/sonarqube-5.6.4/lib/server/jruby-rack-1.1.13.2.jar!/jruby/rack/session_store.rb:70:in `context'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/rack-1.1.6/lib/rack/session/abstract/id.rb:58:in `call'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/failsafe.rb:26:in `call'
    C:/bin/sonarqube-5.6.4/web/WEB-INF/gems/gems/actionpack-2.3.15/lib/action_controller/dispatcher.rb:106:in `call'
    文件:/C:/bin/sonarqube-5.6.4/lib/server/jruby-rack-1.1.13.2.jar!/rack/adapter/rails.rb:34:in `serve_rails'
    文件:/C:/bin/sonarqube-5.6.4/lib/server/jruby-rack-1.1.13.2.jar!/rack/adapter/rails.rb:39:in `call'
    file:/C:/bin/sonarqube-5.6.4/lib/server/jruby-rack-1.1.13.2.jar!/rack/handler/servlet.rb:22:in `call'

5.6.4 版有问题吗?

提前感谢您的任何反馈。

【问题讨论】:

【参考方案1】:

我的问题的答案是这个命令:

curl -v POST -u admin:admin "http://localhost:9000/api/qualityprofiles/restore"
--form backup=@test.xml

这个组合好像没试过。

响应为 200 OK:

HTTP/1.1 100 继续 HTTP/1.1 200 正常 服务器:Apache-Coyote/1.1 设置 Cookie:JSESSIONID=A20898D27A0D843EEC6ED9791CABEB49;路径=/; HttpOnly X-运行时:265 ETag:“7cce49c3a8a16a16c8c48cc4942df042” 缓存控制:无缓存、无存储、必须重新验证 X 框架选项:SAMEORIGIN X-XSS-防护:1;模式=块 X-Content-Type-Options: nosniff 内容类型:application/json;charset=utf-8 内容长度:166 日期:2017 年 1 月 30 日星期一 14:19:51 GMT

【讨论】:

看来“POST”选项是不必要的。 --form 选项将导致 curl 使用 POST。 出于安全考虑,应在 ~/.curlrc 中提供身份验证 (-u admin:admin) 以防止密码出现在命令历史记录中。或者,删除密码并让 curl 提示输入密码为“-u admin:” 我刚刚注意到我需要 @ 才能让我的 curl 工作。谢谢。【参考方案2】:

如果您将所有 xml 备份文件放在一个目录中,您可以通过以下方式仅使用一个命令来恢复所有这些文件: C:>对于 /R 。 %1 IN (*.xml) DO curl.exe -v -X POST -u admin:admin_password "http://your_server:9000/sonar/api/qualityprofiles/restore" --form 备份=@%1

干杯

马西莫

【讨论】:

以上是关于SonarQube 5.6 恢复质量配置文件的主要内容,如果未能解决你的问题,请参考以下文章

在sonarqube中添加其他语言(如VC ++等)质量配置文件

sonarqube怎么激活质量配置

代码质量管理平台SonarQube的安装配置与使用

代码质量管理平台SonarQube的安装配置与使用

SonarQube代码质量管理平台的安装与配置

代码质量管理平台SonarQube的安装配置与使用