SonarQube 代码扫描任务集成

1. SonarQube 是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。

2. SonarQube 分为四个模块:SonarQube Server;SonarQube Database ;SonarQube Plugins;分析项目的工具 scanner。

 

3. SonarQube 总览如图:

 

4. SonarQube 安装硬件需要满足:SonarQube 服务小型实例需要 2GB RAM;SonarQube 不能在 32-bit 系统下安装。

 

5. 两个比较重要的能力:

自定义 Rules;设置 Quality Gates,并能通过官方的 API  issues 和 Measures History 获取到本次检查结果以及历史数据的统计,便于完成用户自定义代码质量及审核规则定义。

 

GET http://sonar-host:9000/api/issues/search?componentKeys=project-nanme-ee&types=BUG,CODE_SMELL,VULNERABILITY

{
    "total": 63,
    "p": 10,
    "ps": 1,
    "paging": {
        "pageIndex": 10,
        "pageSize": 1,
        "total": 63
    },
    "issues": [
        {
            "key": "AWsBeHwrsdaCQfnpVlqY",
            "rule": "javascript:S3531",
            "severity": "MAJOR",
            "component": "project-nanme-ee:utils/auth.js",
            "project": "project-nanme-ee",
            "line": 56,
            "hash": "ba8f680c2e6e67a758609323f78d6e8e",
            "textRange": {
                "startLine": 56,
                "endLine": 56,
                "startOffset": 0,
                "endOffset": 38
            },
            "flows": [],
            "status": "OPEN",
            "message": "Add a \"yield\" statement to this generator.",
            "effort": "5min",
            "debt": "5min",
            "author": "lizhen@tenxcloud.com",
            "tags": [
                "api-design",
                "es2015"
            ],
            "creationDate": "2018-07-05T09:56:10+0000",
            "updateDate": "2019-05-29T02:35:37+0000",
            "type": "BUG",
            "organization": "default-organization"
        }
    ],
    "components": [
        {
            "organization": "default-organization",
            "key": "project-nanme-ee",
            "uuid": "AWsBeGQu5qn0Cgv7nKi7",
            "enabled": true,
            "qualifier": "TRK",
            "name": "project",
            "longName": "project"
        },
        {
            "organization": "default-organization",
            "key": "project-nanme-ee:utils/auth.js",
            "uuid": "AWsBeG-SsdaCQfnpVlWw",
            "enabled": true,
            "qualifier": "FIL",
            "name": "auth.js",
            "longName": "utils/auth.js",
            "path": "utils/auth.js"
        }
    ]
}

 

GET http://localhost:9000/api/measures/search_history?component=project-nanme-ee&metrics=bugs%2Ccode_smells%2Cvulnerabilities%2Creliability_rating%2Csecurity_rating%2Csqale_rating&ps=1000

{
    "paging": {
        "pageIndex": 1,
        "pageSize": 1000,
        "total": 4
    },
    "measures": [
        {
            "metric": "bugs",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "63"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "63"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "63"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "63"
                }
            ]
        },
        {
            "metric": "code_smells",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "1174"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "1174"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "1174"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "1174"
                }
            ]
        },
        {
            "metric": "reliability_rating",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "5.0"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "5.0"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "5.0"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "5.0"
                }
            ]
        },
        {
            "metric": "security_rating",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "4.0"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "4.0"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "4.0"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "4.0"
                }
            ]
        },
        {
            "metric": "sqale_rating",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "1.0"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "1.0"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "1.0"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "1.0"
                }
            ]
        },
        {
            "metric": "vulnerabilities",
            "history": [
                {
                    "date": "2019-05-29T02:35:37+0000",
                    "value": "18"
                },
                {
                    "date": "2019-05-29T03:18:38+0000",
                    "value": "18"
                },
                {
                    "date": "2019-05-29T03:42:29+0000",
                    "value": "18"
                },
                {
                    "date": "2019-05-29T04:07:34+0000",
                    "value": "18"
                }
            ]
        }
    ]
}

 

posted @ 2019-06-03 14:42  mykiya  阅读(1624)  评论(0编辑  收藏  举报