Sonarqube在win下的使用

Sonarqube在win下的使用


SonarQube ® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。

如果您想试用 SonarQube,请查看试用 SonarQube页面以获取有关安装本地实例和分析项目的说明。

如果您已准备好设置生产实例,请查看安装服务器文档。

否则,您还可以在下面找到概述和常见场景,或者在左窗格中浏览和搜索完整文档。

概述

SonarQube 实例组件

在一个典型的开发过程中:

  1. 开发人员在 IDE 中开发和合并代码(最好使用SonarLint在编辑器中接收即时反馈)并将他们的代码签入他们的 DevOps 平台。
  2. 组织的持续集成 (CI) 工具检查、构建和运行单元测试,集成的 SonarQube 扫描器分析结果。
  3. 扫描器将结果发布到 SonarQube 服务器,该服务器通过 SonarQube 界面、电子邮件、IDE 内通知(通过 SonarLint)以及对拉取或合并请求的修饰(使用Developer Edition及更高版本时)向开发人员提供反馈。

您已经听说过SonarQube如何帮助您编写更干净、更安全的代码,现在您已准备好亲自尝试一下。本指南向您展示如何安装 SonarQube 的本地实例并分析项目。安装本地实例可让您快速启动并运行,因此您可以亲身体验 SonarQube。

1.创建项目

硬件支持:https://docs.sonarqube.org/latest/requirements/requirements/

创建一个新项目进行金泰代码分析:

image-20211015180146184

image-20211015180301556

2.添加环境变量

2.1高级系统设置

image-20211015180850759

2.2设置环境变量

设置环境变量

image-20211015180920425

在环境变量中点击path的环境变量。进行添加环境变量。

image-20211015181007986

添加sonar-scanner的环境变量。

image-20211015181219372

2.3代码静态扫描

使用sonar-scanner进行代码的静态扫描。

image-20211015180359779

3.win下扫描c语言代码

3.1支持的编译器

  • 任何版本的 Clang、GCC 和 Microsoft C/C++ 编译器
  • 适用于 Linux 和 macOS 的任何版本的英特尔编译器
  • ARM5 和 ARM6 编译器
  • 适用于 ARM、Atmel AVR32、Atmel AVR、Renesas H8、Renesas RL78、Renesas RX、Renesas V850、Texas Instruments MSP430 和 8051 的 IAR 编译器
  • QNX 编译器
  • 适用于 ARM、C2000、C6000、C7000、MSP430 和 PRU 的 Windows 和 macOS 上的 Texas Instruments 编译器
  • 风河 Diab 和 GCC 编译器
  • 还支持完全基于 GCC 的编译器,例如 Linaro GCC

3.2构建命令

创建项目后进行配置wrapper和scanner的项目扫描的path环境变量

image-20211017195120266

image-20211017195055052

IAR项目的编译命令:Build from the command line | IAR Systems

SonarQube的Community版本是不支持对C语言代码进行质量分析的,Developer及以上付费版本才支持。还好有一些开源的社区插件支持,比较著名的一个就是sonar-cxx
在如下地址下载SonarQube开源C和C++的插件
C插件:sonar-c-plugin-1.3.1.1807.jar
https://github.com/SonarOpenCommunity/sonar-cxx/releases/download/cxx-1.3.1/sonar-c-plugin-1.3.1.1807.jar
C++插件:sonar-cxx-plugin-1.3.1.1807.jar
https://github.com/SonarOpenCommunity/sonar-cxx/releases/download/cxx-1.3.1/sonar-cxx-plugin-1.3.1.1807.jar

在本次的实例中使用的是develop的sonarqube,并进行使用。

示例:

// example for linux
build-wrapper-linux-x86-64 --out-dir build_wrapper_output_directory make clean all
// example for macOS
build-wrapper-macosx-x86 --out-dir build_wrapper_output_directory xcodebuild clean build
// example for Windows
build-wrapper-win-x86-64.exe --out-dir  build_wrapper_output_directory MSBuild.exe /t:Rebuild
# 生成wrapper的构建命令 example
build-wrapper-win-x86-64.exe --out-dir bw-output <构建命令>
Usage: build-wrapper-win-x86-64.exe --out-dir <output directory> <build command>

# 进行sonar-scanner代码静态扫描
sonar-scanner.bat -D"sonar.projectKey=c" -D"sonar.sources=." -D"sonar.cfamily.build-wrapper-output=bw-output" -D"sonar.host.url=http://localhost:9000" -D"sonar.login=61135ddfaef771846a7599b4eabbb676c230d16e"

ERROR: MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.

# D:\ MSBuild.exe 进行c项目的编译命令
build-wrapper-win-x86-64.exe --out-dir  D:\ MSBuild.exe

image-20211019175248854

image-20211017222205958

项目地址:http://192.168.91.238:9000/projects

image-20211019184707263

4.修改规则

在规则页面,默认的规则无法挂起!需要新创建

image-20211019180011660

4.1新建配置

默认情况下,当进入顶部菜单项“规则”时,您将看到安装在 SonarQube 实例上的所有可用规则。您可以根据左侧窗格中的搜索条件缩小选择范围:

  • 语言:规则适用的语言。
  • 类型:错误、漏洞、代码异味或安全热点规则。
  • 标签:可以向规则添加标签,以便对它们进行分类并帮助更轻松地发现它们。
  • 存储库:为 SonarQube 提供规则的引擎/分析器。
  • 默认严重性:规则的原始严重性 - 由 SonarQube 定义。
  • 状态:规则可以有 3 种不同的状态:
    • Beta : 该规则是最近实施的,我们还没有从用户那里得到足够的反馈,所以可能会出现误报或漏报。
    • 已弃用:不应再使用该规则,因为存在类似但更强大和更准确的规则。
    • 就绪:规则已准备好在生产中使用。
  • 可用时间:首次在 SonarQube 上添加规则的日期。例如,这对于列出自上次插件升级以来的所有新规则很有用。
  • 模板:显示允许创建自定义规则的规则模板(见本页稍后部分)。
  • 质量配置文件:包含在特定配置文件中或从其排除

如果选择了质量配置文件,还可以检查其活动严重性以及它是否被继承。有关更多信息,请参阅质量配置文件文档。

image-20211019180324079

image-20211019180350981

image-20211019180418329

接下来需为为C-Profile填加规则。C-Profile右侧的设置按钮有”激活更多规则“命令,点击它。

image-20211019181803638

在弹出的"代码规则"页面,使用"批量修改"命令里面的"活动…"在弹出的对话框里选择新创建的C-Profile,点击“应用”。

image-20211019181832674

image-20211019181859243

4.2挂起规则

挂起规则就是对不需要的规则进行代码静态扫描的时候不执行

image-20211019181955989

相应的规则减一

image-20211019182018143

5.应用市场

安装相应的插件在应用市场中。

您只能在 SonarQube 社区版中从市场安装和更新插件。对于商业版本,您需要手动安装和更新插件。有关更多信息,请参阅安装插件

管理员可以通过Administration > Marketplace访问Marketplace。市场是使 SonarQube 平台的各个部分保持最新状态的地方。它让你:

  • 当前安装的 SonarQube 版本
  • 安装了哪些插件
  • 插件更新是否可用
  • 哪些其他插件与您的 SonarQube 版本兼容

发现

  • 哪些其他版本可用,以启用更多功能

安装

  • 新插件
  • 插件更新

要查看/安装插件更新,您的 SonarQube 服务器需要访问互联网。安装需要重启平台才能生效。

image-20211019182652491

6.用户信息

创建用户信息

image-20211019182912172

创建用户信息的信息如下,后续可以使用相应的用户信息进行登录。

image-20211019182925849

7.管理项目

如果您拥有创建项目权限(全局管理员可以在管理 > 安全 > 全局权限中设置权限),您就可以创建和管理项目。有关设置项目的一般信息,请参阅项目设置

在第一次分析时会自动添加一个项目。但是,您可以在运行第一次分析之前配置项目(设置权限、质量配置文件等)。有关供应项目和处理供应项目的更多信息,请参阅项目存在

您还想确保 SonarQube 的结果是相关的。为此,您需要缩小焦点或配置每个项目的分析内容。

您还可以设置Webhooks以在项目分析完成时通知外部服务。

如果您是全局管理员,则可以设置身份验证、管理员访问和授权。有关更多信息,请参阅安全性

您还可以设置开发人员可以订阅的电子邮件通知,这些通知在每次分析结束时发送。

当您对项目运行新分析时,会从数据库中清除一些数据以节省空间并提高性能。有关清理哪些数据以及如何更改这些设置的信息,请参阅内务管理

Enterprise Edition开始,您可以设置Portfolio以获得关于一组项目的可发布性的高级概览。

<think>我们将在Windows 10上安装离线版SonarQube。由于是离线环境,我们需要提前下载好所需的文件。 步骤包括:下载SonarQube、安装Java环境、配置SonarQube、启动服务、安装插件(离线方式)、创建项目并扫描。 注意:SonarQube需要Java 11或17(根据版本不同),这里我们使用Java 17。 1. 环境准备 - 下载Java 17 (Zulu JDK 17) 离线安装包: https://www.azul.com/downloads/?package=jdk (选择Windows ZIP) - 下载SonarQube最新社区版: https://www.sonarsource.com/products/sonarqube/downloads/ (选择Community Edition ZIP) 2. 安装步骤 a) 安装Java:解压Zulu JDK到某个目录,例如:C:\Java\zulu17 b) 设置环境变量:JAVA_HOME=C:\Java\zulu17,并添加%JAVA_HOME%\bin到PATH c) 解压SonarQube到目录,例如:C:\SonarQube 3. 配置SonarQube(可选修改配置) 编辑C:\SonarQube\conf\sonar.properties: - 修改Web服务端口(默认9000): sonar.web.port=9000 - 如果需要修改数据库(默认使用内嵌H2,不推荐生产),这里我们使用默认H2(离线演示) 4. 启动SonarQube 以管理员身份打开命令提示符: cd C:\SonarQube\bin\windows-x86-64 StartSonar.bat 5. 安装插件(离线) - 从官网下载插件(需提前在有网络的环境下载): https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/ - 将插件JAR文件放入C:\SonarQube\extensions\plugins - 重启SonarQube服务(先按Ctrl+C停止,再运行StartSonar.bat) 6. 创建扫描项目 使用SonarScanner进行扫描。下载SonarScanner for Windows并解压:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/ 设置环境变量:将sonar-scanner的bin目录加入PATH。 7. 配置项目 在项目根目录创建sonar-project.properties文件: ```properties # 项目唯一标识 sonar.projectKey=my_project sonar.projectName=My Project sonar.projectVersion=1.0 # 源码目录 sonar.sources=src # 语言(根据插件支持) sonar.language=java # 编码 sonar.sourceEncoding=UTF-8 ``` 8. 执行扫描 在项目根目录运行: sonar-scanner 9. 查看报告 访问 http://localhost:9000 使用默认账号admin/admin登录。 注意:由于是离线环境,扫描时可能会提示无法更新插件,但已安装的插件规则仍然有效。 下面给出一个示例Java项目(带有一个有问题的代码)的扫描过程: 示例代码结构: my_project/ src/ main/ java/ com/ example/ Calculator.java Calculator.java 内容: ```java package com.example; public class Calculator { public int add(int a, int b) { return a + b; } public void divide(int a, int b) { if (b == 0) { System.out.println("Division by zero!"); } int result = a / b; // 这里当b为0时会抛出ArithmeticException } } ``` 执行扫描后,在SonarQube的界面上可以看到一个Bug:在divide方法中,当b为0时,会执行除法操作导致异常。 10. 自定义规则(可选) 在SonarQube的Web界面,可以创建质量配置(Quality Profiles)来自定义规则。 注意:在离线环境中,无法从SonarSource更新规则集,因此只能使用已安装插件自带的规则或手动导入之前导出的规则集。 下面提供如何导出和导入规则集的步骤(需联网环境准备,然后离线使用): a) 在联网环境中,登录SonarQube,进入质量配置,导出所需的规则集(如Java的Sonar way)。 b) 将导出的XML文件复制到离线环境。 c) 在离线环境的SonarQube中,创建新的质量配置,然后选择导入。 由于是离线环境,我们可能无法获得所有规则,但可以使用已有的规则。 现在,我们给出一个批处理脚本,用于启动SonarQube服务(避免每次手动启动): 创建文件:C:\SonarQube\start_sonar.bat ```batch @echo off cd /d %~dp0 cd bin\windows-x86-64 StartSonar.bat ``` 注意事项: - SonarQubeWindows上作为控制台程序运行,关闭控制台窗口即停止服务。 - 生产环境建议将SonarQube安装为Windows服务(可以使用NSSM等工具)。 安装为服务(可选): - 下载NSSM:https://nssm.cc/download - 解压后,以管理员身份运行nssm.exe - 在界面中设置: Path: C:\SonarQube\bin\windows-x86-64\StartSonar.bat Startup directory: C:\SonarQube\bin\windows-x86-64 Service name: SonarQube - 点击Install service 这样,SonarQube就会作为服务运行。 现在,我们总结一下在Windows 10上安装离线版SonarQube的步骤。 由于我们无法在离线环境中下载,所以所有文件都需要提前准备好。 最后,我们给出一个简单的批处理脚本,用于设置环境变量(如果尚未设置)并启动SonarQube: ```batch @echo off REM 设置JAVA_HOME(如果未设置) if not defined JAVA_HOME set JAVA_HOME=C:\Java\zulu17 REM 将Java添加到PATH set PATH=%JAVA_HOME%\bin;%PATH% REM 启动SonarQube cd C:\SonarQube\bin\windows-x86-64 StartSonar.bat ``` 请根据实际安装目录调整上述路径。 §§相关问题§§: 1. 如何解决SonarQube启动时提示的“找不到Java”错误? 2. 在离线环境中如何更新SonarQube的版本? 3. 如何配置SonarQube使用外部数据库(如MySQL)? 4. SonarScanner在扫描时如何跳过测试代码?</think>### Windows 10 离线版 SonarQube 安装及使用教程 #### 一、环境准备(需提前下载) 1. **Java JDK**: - 下载 [Zulu JDK 17](https://www.azul.com/downloads/?package=jdk)(Windows ZIP) - 解压到 `C:\Java\jdk-17` 2. **SonarQube**: - 下载 [SonarQube 9.9 LTS](https://www.sonarsource.com/products/sonarqube/downloads/)(ZIP 包) - 解压到 `C:\SonarQube` 3. **插件**(下载后放至 `C:\SonarQube\extensions\plugins`): - [Java 插件](https://repo1.maven.org/maven2/org/sonarsource/java/sonar-java-plugin/7.14.0.31588/sonar-java-plugin-7.14.0.31588.jar) - [Python 插件](https://repo1.maven.org/maven2/org/sonarsource/python/sonar-python-plugin/3.15.0.3766/sonar-python-plugin-3.15.0.3766.jar) #### 二、配置环境变量 ```batch :: 以管理员身份运行CMD setx /M JAVA_HOME "C:\Java\jdk-17" setx /M Path "%Path%;%JAVA_HOME%\bin;C:\SonarQube\bin\windows-x86-64" ``` #### 三、修改配置文件 编辑 `C:\SonarQube\conf\sonar.properties`: ```properties # 取消注释并修改 sonar.web.host=0.0.0.0 sonar.web.port=9000 # 禁用更新检查(离线关键) sonar.updatecenter.activate=false # 使用内置H2数据库(离线模式) sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar ``` #### 四、启动服务 ```batch :: 以管理员身份运行 cd C:\SonarQube\bin\windows-x86-64 StartSonar.bat ``` **首次登录**: 访问 `http://localhost:9000`,账号/密码:`admin/admin` #### 五、创建扫描项目 1. 项目结构: ``` my-project/ ├─ src/ │ ├─ main.py ├─ sonar-project.properties ``` 2. Python 示例代码 (`main.py`): ```python def divide(a, b): # 漏洞:未处理除零错误 return a / b if __name__ == "__main__": print(divide(10, 0)) # 将引发异常 ``` 3. 配置文件 (`sonar-project.properties`): ```properties sonar.projectKey=my_python_project sonar.projectName=My Python Project sonar.projectVersion=1.0 sonar.sources=src sonar.sourceEncoding=UTF-8 sonar.language=py sonar.scm.disabled=true # 离线关键 ``` #### 六、执行扫描 1. 下载 [SonarScanner](https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/)(Windows ZIP) 2. 解压并添加 `bin` 目录到系统 PATH 3. 在项目根目录运行: ```batch sonar-scanner -Dsonar.login=admin -Dsonar.password=admin ``` #### 七、查看报告 访问 `http://localhost:9000` 查看: 1. **仪表盘**:项目健康度评分 2. **问题列表**: - 漏洞:`Division by zero` - 代码异味:`Add error handling` 3. **安全热点**:敏感操作标记 #### 八、自定义规则(示例) 创建自定义规则文件 `custom-rules.xml`: ```xml <profile> <name>My Python Rules</name> <language>py</language> <rule> <repositoryKey>python</repositoryKey> <key>S5659</key> <!-- 日志注入检查 --> <priority>CRITICAL</priority> </rule> <rule> <repositoryKey>python</repositoryKey> <key>S1313</key> <!-- 硬编码IP检查 --> <priority>MAJOR</priority> </rule> </profile> ``` 通过Web界面导入:**质量配置 → 创建 → 导入** ### 常见问题解决 1. **启动失败:端口冲突** ```batch netstat -ano | findstr :9000 taskkill /PID <占用PID> /F ``` 2. **扫描时卡住** 编辑 `C:\SonarQube\conf\wrapper.conf`: ```conf wrapper.java.additional.1=-Djava.io.tmpdir=C:/SonarQube/temp ``` 3. **插件兼容问题** 删除不兼容插件(日志文件提示): ```batch del C:\SonarQube\extensions\plugins\<问题插件>.jar ``` ### 离线维护建议 1. **定期备份**:`C:\SonarQube\data` 2. **插件更新**:在有网络环境下载新版插件后覆盖安装 3. **数据库清理**:通过Web界面 → **Administration → Projects → Manage Projects** 删除旧项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值