zoukankan      html  css  js  c++  java
  • 代码质量检测-Sonar

    一。 Sonar简介

     sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+and+Integration)

       1》一个sonarqube服务器 包含三个子进程(web服务(界面管理),搜索服务 计算引擎服务(写入数据库))

       2》一个sonarqube数据库 配置sonarqube服务

       3》多个sonarqube插件 位于解压目录 extensionsplugins目录

       4》一个或者多个sonarqube scanners 用于分析特定的项目

    使用SonarQube(简称SQ)工作流程

     开发者使用开发工具(eclipse,ide)上传代码到SCM(源代码管理器)    系统自动同步代码到某个位置 sonarqube scanners 扫描该代码检查质量 将分析结果 将分析结果推送到SQServer 存储在SQ数据库 用户可以使用eclipse插件sonarlint来同步sonarqube服务器配置(java和js版本等)可以实时在线分析

     

    二。SonarQube安装

      sonarqube官方文档(文档https://docs.sonarqube.org) 

    安装过程参考(https://docs.sonarqube.org/display/SONAR/Setup+and+Upgrade)

    1》下载并且解压

    下载 sonarqube-5.4  点击文档 https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes 的download page 进入下载  
    这里使用window解压后进入 sonarqube-5.4inwindows-x86-64目录
    点击 StartSonar.bat运行 
    浏览器输入地址 http://localhost:9000/ 输入账号密码 admin/admin 进入 

     2》修改SQ默认的数据库

     sq支持多种数据库引擎 默认内嵌了一个数据库 默认打开端口9092 这里使用mysql替代
    启动任意mysql 创建一个数据库 名字:sonar

    找到conf/sonar.properties  将配置文件以下几项打开

    #----- MySQL 5.x
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?

    useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    sonar.jdbc.username=root
    sonar.jdbc.password=123456
    重新启动 使用客户端连接mysql 的sonar库发现多了很多表

     3》SQ汉化
     点击官方文档左侧的Plugins 进入右侧右下角的Localization 点击Chinese 进入了github地址(
    https://github.com/SonarQubeCommunity/sonar-l10n-zh) 对应版本是

    SonarQube 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7
    sonar-l10n-zh 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19
    SonarQube 5.4 5.5 5.6          
    sonar-l10n-zh 1.9 1.10 1.11          
    SonarQube 4.0 4.1            
    sonar-l10n-zh 1.7 1.8            
    SonarQube 3.1 3.2 3.3 3.4 3.5 3.6 3.7  
    sonar-l10n-zh 1.0 1.1 1.2 1.3 1.4 1.5 1.6
    查看对应的版本 5.4需要1.9的sonar-l10n-zh  点击releases下载对应版本
    将下载好的jar 置入  extensionsplugins目录下

    重启服务 访问http://localhost:9090发现变成中文版

    另外一种方式 也可以登录系统  点击配置-系统-更新中心管理插件 可以在线搜索安装chinese插件

    三。Sonar分析项目

    1》命令行使用SonarQube Scanner分析

        进入官方文档 点击Scanners 点击子菜单 Analyzing with SonarQube Scanner 根据官方向导进行配置

     点击 文档顶部的 不同系统版本 这里是  Windows 64 bit   下载后 解压

    设置  sonar-scanner-3.0.3.778-windowsin 设置到环境变量PATH中

    修改 conf/sonar-scanner.properties  指定sonar qube服务器的地址 默认如果按照在本机无需修改 


    sonar.host.url=http://localhost:9000
    找一个有源代码的项目 比如我有个项目叫kafka 在项目的根目录 添加一个配置文件sonar-project.properties 添加内容
    # 当前项目实例的唯一表示
    sonar.projectKey=kafka
    # 显示在sonarqube 界面上的项目名称
    sonar.projectName=kafka
    sonar.projectVersion=1.0

    # 相对于当前配置文件目录 下的源代码目录 不管什么平台路径分隔符只能有 / 不能使用
    sonar.sources=src/main/java

    # 源代码的字符集
    #sonar.sourceEncoding=UTF-8
    进入kafka项目根目录 执行命令  sonar-scanner  出现 执行 EXECUTION SUCCESS 表示成功
    成功后进入qb ui界面 http://localhost:9000 可以看到多出一个kafka的项目列表

    点击项目名称 进入 可以看到该项目的所有统计 包括存在问题

    点击问题进入 就能看到对应的问题列表

    eclipse ide安装sonarlint 实时监测代码质量 插件地址https://github.com/SonarSource/sonarlint-eclipse 可以使用markerplace搜索安装 

    安装使用mars(4.5.2) 无论是markerplace还是下载包离线安装都无法安装 安装Eclipse Java Oxygen版本 可以在markerplace搜索安装 

    查找视图 SonarQube Servers 点击 Connect to a SonarQube server

    选中 sonarqube点击下一步  输入url http://localhost:9000 输入用户名和密码 (admin/admin)  点击完成 抛出错误

    Starting SonarLint for Eclipse 3.3.1.201712071600
    The following plugins do not meet the required minimum versions, please upgrade them on your SonarQube server:
    java (installed: 3.13.1, minimum: 4.0)
    javascript (installed: 2.11, minimum: 2.14)
    因为sonarqube使用 sonar-java插件来扫描java代码 使用 sonar-javascript插件扫描js代码 控制质量 这里我使用的sonarqube必须是 5.6版本 默认的java插件时3.13.1 (https://github.com/SonarSource/sonar-java)最小必须使用4.0 js插件时 2.11 最小必须是 2.14 (https://github.com/SonarSource/SonarJS)可以去github上搜索两个插件到release上下载 删除之前的版本 替换到 extensionsplugins目录即可 
    再次在 SonarQube Servers 右键 Update all project setting 发现不再报错 
    在项目上右键 分析项目 在SonarLint Report查看到所有分析结果  

  • 相关阅读:
    win10 安装python教程
    nginx http请求无法加载https的css样式
    (第二十天)[js] 写一个验证身份证号的方法
    Linux重启nginx
    (第十一天)[js] 返回到顶部的方法有哪些?把其中一个方法出来
    看了一篇闭包的,推荐一下~
    HTTP状态码
    (第十天)[js] 写一个获取当前url查询字符串中的参数的方法
    (第九天)[js] 写一个判断数据类型的方法
    (第八天)[js] 写一个加密字符串的方法
  • 原文地址:https://www.cnblogs.com/ZenoLiang/p/10237485.html
Copyright © 2011-2022 走看看