• 【Sonar学习】sonar集成golang的检测工具


    sonar集成golang的检测工具

    sonar中的插件SonarGo自带一些检测规则,但sonar想要集成golang的覆盖率、单元测试报告、和更多的代码规则,需要集成其他golang的检测工具

    单元测试

    • 通过golang的单元测试工具go test生成单元测试报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)
    • 报告使用终端转化的json文件,不可以使用转化的xml报告、不转化终端报告(亲测可以读取报告但是sonar项目中并无展示任何相关数据,同时sonar配置中的go配置中也有说明)
    go test -v xxx -json > test.json
    
    • sonar的项目配置文件sonar-project.properties中添加如下配置:
    sonar.go.tests.reportPaths=xx/xx/xx
    
    • sonar导入golang的单元测试报告目前有1问题未解决,就是单元测试的报告中写入的package是项目名/包名(不含/go/src),运行sonar-scanner时总是报错提示找不到package和Test函数,经亲测发现无论怎么修改测试报告、sonar-scanner的运行目录都无法解决这个问题。

    覆盖率

    • 通过golang的覆盖率统计工具生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)
    • 报告需要直接使用终端报告,不可以使用转化的xml、html、txt报告(亲测sonar无法读取相应的报告,提示没有“mode:”字段)
    go test -coverprofile=covprofile
    
    • sonar的项目配置文件sonar-project.properties中添加如下配置:
    sonar.go.coverage.reportPaths=xx/xx/xx
    

    静态扫描

    • 通过golang的扫描工具go vet生成报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)
    • 报告需要直接使用终端报告
    go vet -n xxx 2> report.out
    
    • sonar的项目配置文件sonar-project.properties中添加如下配置:
    sonar.go.govet.reportPaths=xx/xx/xx
    

    外部规则

    golint

    • 通过golint生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)
    • 报告必须直接使用终端报告
    golint xx/xx > golint
    
    • sonar的项目配置文件sonar-project.properties中添加如下配置:
    sonar.go.golint.reportPaths=xx/xx/xx
    

    gometalinter

    • 通过gometalinter生成覆盖率统计报告(见https://blog.csdn.net/baidu_36943075/article/details/90634404)
    • 报告必须使用终端报告,不可以使用转化的xml报告(亲测可以读取报告但是sonar项目中并无展示任何相关数据)
    gometalinter xx/xx > gometalinter
    
    • sonar的项目配置文件sonar-project.properties中添加如下配置:
    sonar.go.gometalinter.reportPaths=xx/xx/xx
    
    • 其实这些配置也可以直接在sonar管理端配置,但是为了实现’sonarqube做成服务器,使用各机器安装sonar-scanner扩展使用‘所以强烈推荐这个配置写在配置文件中

    配置样例展示

    sonar.projectKey=gpcore
    sonar.projectName=gpcore
    sonar.sources=gpcore
    sonar.exclusions=**/*_test.go,**/vendor/**
    sonar.tests=
    sonar.test.inclusions=**/**_test.go
    sonar.test.exclusions=**/vendor/**
    sonar.go.coverage.reportPaths=report/coverage.out
    sonar.go.tests.reportPaths=report/test.json
    sonar.go.govet.reportPaths=report/govet-report.out
    sonar.go.gometalinter.reportPaths=report/gometalinter-report.out
    sonar.go.golint.reportPaths=report/golint-report.out
  • 相关阅读:
    文件上传
    .NET格式化字符串详细说明
    外键
    VS IIS 注册 以及IIS浏览提示无权限访问
    CentOS 6.x 系统中安装原生 Hadoop 2
    Scrapy启动spider出错
    cmd进入pycharm所创建的虚拟环境
    基于mysql和Java Swing的简单课程设计
    python 内置函数
    java中的静态内部类
  • 原文地址:https://www.cnblogs.com/gtea/p/16271839.html
Copyright © 2020-2023  润新知