SonarQube扫描代码

文章详细介绍了如何在Linux环境下安装SonarQube9.1版本,包括下载安装包,创建新用户,配置sonar.properties文件,启动服务,安装中文插件,以及设置sonar-scanner-cli。此外,还提供了扫描Java代码的步骤,涉及sonar-project.properties文件的配置和使用sonar-scanner进行分析。

SonarQube安装及使用

安装(以linux为例)

安装包下载

  • sonarqube安装包网址:https://www.sonarqube.org/downloads/

    • 注意:目前最好使用9.1版本,9.2中文插件不兼容
  • sonar-scanner-cli(linux)安装包网址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

  • sonar-scanner-cli(Windows)安装包网址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-windows.zip

安装SonarQube

  • 将下载的sonarqube-9.1.0.47736.zip和sonar-scanner-cli-4.6.2.2472-linux.zip上传linux系统
  • 创建新用户sonar
    $ useradd sonar
    
  • 将sonarqube-9.1.0.47736.zip解压至/home/sonar
    $ unzip sonarqube-9.1.0.47736.zip -d /root/sonar
    $ cd /home/sonar
    $ mv sonarqube-9.1.0.47736/* . && rm sonarqube-9.1.0.47736 -rf
    $ chown -R sonar:sonar /home/sonar
    
  • 修改配置文件
    $ cd /home/sonar/conf
    $ vim sonar.properties 
        sonar.jdbc.username=postgres
        sonar.jdbc.password=
        sonar.jdbc.url=jdbc:postgresql://172.16.30.101:5432/sonarqube # sonarqube时数据库名字
    注意:使用sonarQube时需要数据库的支撑,9.1已经摒弃了mysql,目前我们使用的postgresql,在配置sonar.properties的之前,请先确认postgres已经创建,并且新建数据库名叫做sonarqube。
    
  • 启动sonar
    $ cd /home/sonar9/bin/linux-x86-64
    $ ./sonar.sh start
    查看日志
    /home/sonar9/logs/es.log <elasticsearch的启动日志>
    /home/sonar9/logs/sonar.20211203.log <sonar启动日志>
    如果未启动,请查看相关日志,可能系统某些设定不符合要求,按照日志提示修改系统部分参数
    
  • 启动之后安装中文插件
    1.访问网址http://172.16.63.59:9000/
    默认用户是admin 密码:admin
    首次登录需要修正密码
    
    2.登陆之后
    Administration-->Marketplace-->Plugins-->搜索框内<Chinese Pack>-->安装第一个-->重启sonarQube
    
    3.进入界面查证是否转换为中文
    

安装sonar-scanner-cli

  • 将sonar-scanner-cli拷贝至linux

  • 解压sonar-scanner-cli-4.6.2.2472-linux.zip

    $ unzip sonar-scanner-cli-4.6.2.2472-linux.zip -d /home/sonar-scanner
    
  • 添加环境变量
    /etc/profile

    export SONAR_RUNNER_HOME=/home/sonar-scanner/sonar-scanner-4.6.2.2472-linux
    export PATH=$SONAR_RUNNER_HOME/bin:$PATH 
    
  • 验证安装是否成功

    $ sonar-scanner -v
    INFO: Scanner configuration file: /home/sonar-scanner/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
    INFO: Project root configuration file: NONE
    INFO: SonarScanner 4.6.2.2472
    INFO: Java 11.0.11 AdoptOpenJDK (64-bit)
    INFO: Linux 3.10.0-693.el7.x86_64 amd64
    
  • 客户端其他主机安装

    修改sonar-scanner/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
    
    sonar.host.url=http://localhost:9000
    将以上localhost换成主机IP地址
    

使用sonarQube扫描JAVA代码

  • 上传需要扫描的代码
    例如:jc-common
    1.在jc-common目录下新建sonar-project.properties文件
    $ ls jc-common
    pom.xml  sonar-project.properties  src  target
    注意:使用已编译之后的代码,sonar也可支持未编译代码
    
  • sonar-project.properties文件内容
    # 配置代码扫描的项目信息
    # must be unique in a given SonarQube instance
    sonar.projectKey=jc-common
    
    # this is the name displayed in the SonarQube UI
    sonar.projectName=jc-common
    sonar.projectVersion=1.1.1
    
    # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
    # If not set, SonarQube starts looking for source code from the directory containing 
    # 配置扫描的代码目录
    sonar.sources=src
    
    # classes文件目录,不加会报错
    sonar.java.binaries=target
    
    sonar.language=java
    sonar.sourceEncoding=UTF-8
    sonar.exclusions=**/*.js
    
    sonar.login=admin
    
    注:根据要求修改文件内容
  • 执行扫描命令
    在sonar-project.properties同目录下执行以下命令
    $ sonar-scanner -Dsonar.projectName=jc-common -Dsonar.projectVersion=1.2
    
  • 查看结果
    浏览器查看 http://172.16.63.59:9000/
    
### 使用SonarQube扫描项目以检测代码的注释覆盖率 #### 配置环境 为了确保SonarQube能够正常工作并准确报告注释覆盖率,需确认安装了适当版本的Java Development Kit (JDK)[^1]。对于SonarQube 9.8及以上版本,建议使用JDK 11或更高版本。 #### 安装与配置SonarScanner 要使SonarQube能识别项目的注释情况,通常需要通过SonarScanner来提交待测代码SonarQube服务器进行分析。可以通过Maven、Gradle插件或是独立下载SonarScanner CLI工具来进行设置[^2]。 #### 设置Vue.js前端项目中的`sonar-project.properties` 针对基于Vue框架构建的应用程序,在根目录下创建名为`sonar-project.properties`的文件,并加入如下配置项: ```properties # 必填参数:定义项目键名 sonar.projectKey=my_vue_app_key # 可选参数:指定项目名称,默认同key相同 sonar.projectName=My Vue Application # 必填参数:指明源码路径;多个路径间用逗号分隔 sonar.sources=src/ # 启用JavaScript规则集 sonar.javascript.lcov.reportPaths=coverage/lcov.info # 对于Vue单文件组件的支持 sonar.web.typescript.enabled=true sonar.vue.enableJsx=true ``` 上述配置允许SonarQube理解Vue特有的`.vue`文件结构以及其中嵌入的语言特性。 #### 运行测试获取覆盖数据 在执行实际的静态分析之前,应该先运行单元测试套件收集必要的覆盖率统计数据。这一步骤产生的LCOV信息会被用来增强最终的质量评估结果。对于采用Karma作为测试驱动器的情况,可以添加相应的 reporter 插件生成兼容格式的结果文件。 #### 发起SonarQube扫描请求 一旦准备就绪,就可以利用命令行发起一次完整的扫描操作: ```bash sonar-scanner ``` 此指令将会触发一系列动作,包括但不限于上传源代码至远程服务端实例、启动背景作业处理任务直至完成整个流程。期间可能会经历短暂延迟直到所有步骤都顺利结束。 #### 查看结果 当一切完毕之后,打开浏览器访问部署有SonarQube的服务地址(通常是http://localhost:9000),登录后导航到对应应用页面即可浏览详细的统计图表和违规事项列表。特别关注“Reliability Rating”下的“Comment Lines Density”,该指标反映了当前工程内有效注解的比例水平。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值