zoukankan      html  css  js  c++  java
  • sonarqube7.2版本web api简析

    sonarqube7.2版本web api简析

    本文介绍sonarqube的部分实用Web API,并试图联系实际进行分析,方便集成.以7.2版本为例,下载移步官网.
    Web API文档路径
    安装并部署7.2版本的sonar之后(推荐在linux上安装),在浏览器上打开sonar,默认是ip:9000端口.
    http://{ip}:9000/web_api即是sonar的api文档. 由于国内资源较少,当时在官网看了半天文档又查了一堆才发现这个预设的路径.这也是为什么写这篇文章,我认为这样的工具是值得推广的.
    认证api
    部分的sonar api功能需要依靠权限使用,sonar才用的是Basic Auth,就是最普通的认证.
    web_api/api/authentication下可以查看对应的认证api.
    例如:
    POST api/authentication/login 参数是login和password 没有特别说明的话,这里的login和password都是admin,可以在sonar页面的最上方Administration里点进行密码修改,也可以直接修改config文件.
    如果使用POSTMAN测试接口需要认证的sonar GET接口,可以在postman的认证里,选basic auth,然后填login和password,再发GET请求就可以了.
    重复度api
    GET api/duplications/show
    例子参数是key=my_project:/src/foo/Bar.php,使用该接口可以拿某个代码文件的重复度分析,似乎作用不大.后面会讲另一个比较有用的.
    issues api
    页面在web_api/api/issues,issues意为问题,告警,github上常见这个单词,还是建议多熟悉英文.
    这里的api很多是修改和添加注释等内容,这类api适合自己在sonar之上再封装一层.
    如果只是客户端读取sonar的issues信息,可以使用GET api/issues/search,这个api的参数非常多,在我看来有几个好用,然后讲解一下.
    componentKeys 这是可选参数,意思是组件key,查阅后发现这个key可以代表projectKey,模块的key,单个文件的key,而且可以用逗号隔开传入多个.
    比如:my_project,my_project1,my_project2 这样是查了三个工程的issue情况.
    这里讲解一下projectKey的概念:
    点进自己的某一个扫描后的项目project,会在右下角发现一个projectKey.如果是maven工程,默认是:,这是普通情况.
    如果项目有branch分支的话,projectKey默认是::.
    branch如果集成maven插件,参数是-Dsonar.branch,不过现在是deprecated状态.
    projectKey可以通过传参数来指定,-Dsonar.projectKey,官方文档原文是:
    The project key that is unique for each project. Allowed characters are: letters, numbers, '-', '_', '.' and ':', with at least one non-digit. When using Maven, it is automatically set to <groupId>:<artifactId>
    大致就是说,命名规范和默认情况.
    https://docs.sonarqube.org/display/SONAR/Analysis+Parameters <-- 查阅maven插件参数

    severities 问题的等级,如果只需要修改最重要等级的,直接用这个参数去获取要改的部分吧.好用.
    其他参数都写挺清晰了.
    issue 返回json
    "paging": { "pageIndex": 1, "pageSize": 100, "total": 1 },
    这部分其实是第一页,每页100个,实际上可以用参数分页查询.
    issues节点里是个json数组,内容比较多,讲解几个参数.

    {
        "key": "01fc972e-2a3c-433e-bcae-0bd7f88f5123",  issue的唯一key
        "component":   "com.github.kevinsawicki:http-request:com.github.kevinsawicki.http.HttpRequest",  组件Key,这里是具体到类的
        "project": "com.github.kevinsawicki:http-request",  projectKe
        "rule": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck",  规则
        "status": "RESOLVED",  解决状态
        "resolution": "FALSE-POSITIVE",  是否误报
        "severity": "MINOR",  告警等级
        "message": "'3' is a magic number.",  告警信息
        "line": 81,  
        "hash": "a227e508d6646b55a086ee11d63b21e9",  
        "author": "Developer 1",  
        "effort": "2h1min",  解决问题需要的时间
        "creationDate": "2013-05-13T17:55:39+0200",  
        "updateDate": "2013-05-13T17:55:39+0200",  
        "tags": [  
          "bug"  
        ], 
    

    之后有个flow节点,这个是和数据流规则相关的.

    "flows": [
            {
              "locations": [
                {
                  "textRange": {
                    "startLine": 16,
                    "endLine": 16,
                    "startOffset": 0,
                    "endOffset": 30
                  },
                  "msg": "Expected position: 5"
                }
              ]
            },
            {
    

    提供locations节点,指定具体的行数.照目前这例子看似乎还只是单文件数据流.

    metrics api
    metrics,意为度量,在代码扫描中,常常对复杂度,cpd重复代码等进行分析,这也都算metrics,度量的范畴.
    Get information on automatic metrics获得自动度量的结果
    GET api/metrics/search 这个api可以查找某个项目的所有度量,应该没大用处...
    measures api

    GET api/measures/componentcomponent 组件key和metricKeys 度量key作为参数,查询某个项目的度量情况,比如重复度,复杂度,行数统计,例如:
    metricKeys=ncloc,complexity,violations

    先这么多,之后可能继续更新.

    转载请注明来源,谢谢
  • 相关阅读:
    重写对象的compareTo方法
    java基础之----hbase
    java基础之----innodb存储引擎
    java基础之----mysql存储结构
    fastjson jsonArrsy 转 list ,list 转 jsonArray
    java基础之----elasticsearch(Java客服端搜索实例)
    java基础之----elasticsearch
    java基础之----RabbitMQ
    java基础之----kafka
    java基础之----zookeeper
  • 原文地址:https://www.cnblogs.com/zhhiyp/p/9716158.html
Copyright © 2011-2022 走看看