10

每次声纳扫描后,我们都可以在门户和扫描日志中看到新添加的问题列表,如下所示。我能够使用 Rest API 获取新添加的问题列表

http://localhost:9000/api/issues/search?createdAfter=2015-08-15

在这里,我们可以看到 18 个主要问题已得到修复,并以绿色显示。有没有办法找出特定扫描中已修复问题的列表。使用 API 或任何其他方法

在此处输入图像描述

[sonar:sonar] 07:06:13.946 INFO  - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/ICDP_NOV_2015
[sonar:sonar] 07:06:14.012 INFO  - Executing post-job class org.sonar.issuesreport.ReportJob 
[sonar:sonar] 07:06:21.327 INFO  - HTML Issues Report generated: /hosting/workspace/Sonar_20151102/make/sonar_deploy/.sonar/issues-report/issues-report.html
[sonar:sonar] 07:06:21.494 INFO  - Light HTML Issues Report generated: /hosting/workspace/Sonar_20151102/make/sonar_deploy/.sonar/issues-report/issues-report-light.html
[sonar:sonar] 07:06:21.497 INFO  - 
[sonar:sonar] 
[sonar:sonar] -------------  Issues Report  -------------
[sonar:sonar] 
[sonar:sonar]        +27 issues
[sonar:sonar] 
[sonar:sonar]        +20 major
[sonar:sonar]         +7 minor
[sonar:sonar] 
[sonar:sonar] -------------------------------------------
[sonar:sonar] 
[sonar:sonar] 
[sonar:sonar] 07:06:21.497 INFO  - Executing post-job class org.sonar.plugins.issueassign.notification.SendIssueNotificationsPostJob
[sonar:sonar] 07:06:21.902 INFO  - Executing post-job class org.sonar.plugins.core.issue.notification.SendIssueNotificationsPostJob
[sonar:sonar] 07:06:22.361 INFO  - Executing post-job class org.sonar.pl
4

2 回答 2

4

有一种可能的方法,但不是最好的方法

调用http://localhost:9000/api/issues/search后,您将获得如下所示的数组,

 {  
       "paging":{  
          "pageIndex":1,
          "pageSize":100,
          "total":1
       },
       "issues":[  
          {  
             "key":"01fc972e-2a3c-433e-bcae-0bd7f88f5123",
             "component":"com.github.kevinsawicki:http-request:com.github.kevinsawicki.http.HttpRequest",
             "project":"com.github.kevinsawicki:http-request",
             "rule":"checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck",
             "status":"RESOLVED",
             "resolution":"FALSE-POSITIVE",
             "severity":"MINOR",
             "message":"'3' is a magic number.",
             "line":530,
             "textRange":{  
                "startLine":81,
                "endLine":81,
                "startOffset":0,
                "endOffset":134
             },
             "author":"Developer 1",
             "effort":"2h1min",
             "creationDate":"2013-05-13T17:55:39+0200",
             "updateDate":"2013-05-13T17:55:39+0200",
             "tags":[  
                "bug"
             ],
             "type":"RELIABILITY",
             "comments":[  
                {  
                   "key":"7d7c56f5-7b5a-41b9-87f8-36fa70caa5ba",
                   "login":"john.smith",
                   "htmlText":"Must be "final"!",
                   "markdown":"Must be \"final\"!",
                   "updatable":false,
                   "createdAt":"2013-05-13T18:08:34+0200"
                }
             ],
             "attr":{  
                "jira-issue-key":"SONAR-1234"
             },
             "transitions":[  
                "unconfirm",
                "resolve",
                "falsepositive"
             ],
             "actions":[  
                "comment"
             ]
          }
       ],
       "components":[  
          {  
             "key":"com.github.kevinsawicki:http-request:src/main/java/com/github/kevinsawicki/http/HttpRequest.java",
             "enabled":true,
             "qualifier":"FIL",
             "name":"HttpRequest.java",
             "longName":"src/main/java/com/github/kevinsawicki/http/HttpRequest.java",
             "path":"src/main/java/com/github/kevinsawicki/http/HttpRequest.java"
          },
          {  
             "key":"com.github.kevinsawicki:http-request",
             "enabled":true,
             "qualifier":"TRK",
             "name":"http-request",
             "longName":"http-request"
          }
       ],
       "rules":[  
          {  
             "key":"checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck",
             "name":"Magic Number",
             "status":"READY",
             "lang":"java",
             "langName":"Java"
          }
       ],
       "users":[  
          {  
             "login":"admin",
             "name":"Administrator",
             "active":true,
             "email":"admin@sonarqube.org"
          }
       ]
    }

您可以做的是读取所有对象并检查更新日期 ( "updateDate":"2013-05-13T17:55:39+0200") 是否大于您的分析日期(您可以通过 SonrQube webHooks 获得)。然后阅读状态以检查问题是否已修复 ( "status":"RESOLVED")

一旦问题得到解决,"updateDate"变量将被更新。

当您调用 API http://localhost:9000/api/issues/searchstatuses=RESOLVED,CLOSED时,如果您只想要已修复的问题,则可以使用该参数。您可以添加此参数以减少您获得的结果数量并优化您的流程。

有关更多详细信息,请参阅https://codeen-app.euclid-ec.org/sonar/web_api/api/issues

于 2019-05-19T05:52:47.357 回答
3

这还不可能追踪修复的技术债务。您暂时只能跟踪新的技术债务。

于 2015-10-02T14:52:20.363 回答