通过API使用参数创建自定义规则

通过API使用参数创建自定义规则,api,post,sonarqube,sonarqube-4.5,Api,Post,Sonarqube,Sonarqube 4.5,我试图用Sonar API创建一个XPath自定义规则,但在添加参数时遇到了一个问题 这是我的HTTP请求: http.sendPostRequest("http://localhost:9000/api/rules/create" + "?custom_key=test" + "&markdown_description=test" + "&name=test" + "

我试图用Sonar API创建一个XPath自定义规则,但在添加参数时遇到了一个问题

这是我的HTTP请求:

    http.sendPostRequest("http://localhost:9000/api/rules/create" 
            + "?custom_key=test" 
            + "&markdown_description=test" 
            + "&name=test"
            + "&params=expression=test;filePattern=test;message=test" 
            + "&severity=BLOCKER" 
            + "&template_key=xml:XPathCheck");
我收到一个代码200,规则在Sonar中创建,但参数“params”为空


我检查了API的文档,它说它应该是类似于“params=key1=v1;key2=v2”的东西,它符合这种格式,但仍然不起作用

因此,我发现如果您使用与以前删除的规则相同的密钥创建新规则,它将恢复其参数


在我的例子中,我试图创建一个带有键“test”的规则,但在此之前,我创建并删除了一个没有参数的规则“test”。声纳似乎有某种缓存。

即使删除了此规则,也不可能使用另一个密钥已经使用过的密钥。
您需要添加参数provent_reactivation=true,以便在使用此密钥的规则已存在时失败。

我无法复制此错误,您使用的是哪个版本的SonarQube?这非常奇怪,因为4.5.6,我尝试创建自定义规则“测试”,删除它,然后重新创建,我收到以下消息“以前已删除具有相同密钥的规则。请重新激活现有规则或修改密钥以创建新规则。“。我是用Sonar API创建规则,而不是通过web应用程序。我正在用HTTP向API发送POST请求。的确,你是对的!在4.5.6中,当您使用与先前删除的规则具有相同密钥的WS创建自定义规则时,它会重新激活已删除的规则。这可能就是为什么禁止在UI中执行此操作的原因。为了防止出现这种情况,您需要在创建新的自定义规则时添加参数prevent_reactivation=true,以防止重新激活现有规则。(将返回错误409)谢谢!但是,有没有办法覆盖/删除已删除的规则?可能是更新后?不,无法对删除的规则执行任何操作。如果您选择的密钥已经存在,则需要使用另一个密钥。