同步操作将从 idcf-boat-house/boat-house 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本文档介绍了以下内容,主要是Sonarqube docker的部署和各语言的代码分析配置(包括本地环境和Azure线上环境):
总体来说,Sonarqube代码分析执行方式分为三种:
Sonarqube 使用流程
Sonarqube 结构
sona 需要的最大虚拟内存为 262144
# 查看最大虚拟内存
sysctl -a|grep vm.max_map_count
# 如果小于 262144,请执行如下命令
sudo sysctl -w vm.max_map_count=262144
docker-compose-sonarqube.yml
version: "2"
services:
sonarqube:
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- sonar.jdbc.username=sonar
- sonar.jdbc.password=sonar
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
运行命令 docker-compose -f docker-compose-sonarqube.yml up -d
确保 sonarqube镜像和postgres镜像
拉取成功,如果在国内环境有可能需要挂代理或VPN。
命令运行成功后,运行docker ps
查看容器,确保容器处于运行状态
使用浏览器打开地址:http://IP:9000/
,访问SonarQube站点
使用admin/admin
登陆
添加中文语言支持,安装完成后请点击重新服务
创建分析项目(以Java为示例)
接下来需要配置Maven环境,执行代码分析
安装JDK,需1.7以上
下载 Maven
添加 MAVEN_HOME 环境变量,添加值 %MAVEN_HOME %\bin
到Path 环境变量
运行 mvn
以测试mvn安装是否成功
运行cmd,进入java项目目录,根据上一章节中创建的Sonarqube 项目后显示的mvm命令,执行代码分析,类似如下命令:
mvn sonar:sonar -Dsonar.projectKey=demo -Dsonar.host.url=http://localhost:9000 -Dsonar.login=2c505c949f51b0a00f05fdcae8419600cadf97e8
根据上面的提示,下载和配置 SonarScanner.MSBuild
,并添加执行程序所在目录到系统环境变量Path中。
安装 执行命令 dotnet tool install --global dotnet-sonarscanner --version 4.8.0
,global dotnet-sonarscanner
打开源码目录执行以下命令:
dotnet-sonarscanner begin /k:"csharp-demo" /d:sonar.host.url="http://localhost:9000" /d:sonar.login="fd4bc37aeb5d851fef9585e0edbefb236b832935"
dotnet build /t:Rebuild
dotnet-sonarscanner end /d:sonar.login="fd4bc37aeb5d851fef9585e0edbefb236b832935"
确保添加好分析器所在路径到环境变量Path后,运行命令进行测试
运行命令执行分析(命令来自于上一步创建的项目向导):
sonar-scanner.bat -D"sonar.projectKey=python-demo" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=e2a3a351ed96f3dd643ae9ff0a96de304bb96928"
sonar-project.properties
,保存上面命令行参数的方式来触发代码分析。进入源码 目录,执行 sonar-scanner
命令即可
#host url
sonar.host.url=http://localhost:9000
#login key
sonar.login=e2a3a351ed96f3dd643ae9ff0a96de304bb96928
#project key
sonar.projectKey=python-demo
#project name
sonar.projectName=python-demo
#project version
sonar.projectVersion=1.0.0
#analysis dir
sonar.sources=.
# Language
sonar.language=python
sonar.java.binaries=.
sonar.sourceEncoding=UTF-8
打开 IntelliJ IDEA File -> Setting 插件设置页面,搜索 SonarLint ,安装 此插件
如果无法在线安装可从这里下载,再手动安装
IntelliJ IDEA SonarLint 插件 配置
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
</plugin>
<profiles>
<profile>
<id>coverage</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<!--以下属性请根据Sonarqube环境信息和maven项目修改-->
<properties>
<sonar.host.url>http://localhost:9000</sonar.host.url>
<sonar.login>8f30470aedb60a542d69302e6628a2e7e4d8862d</sonar.login>
<sonar.projectKey>BoatHouse-product-service</sonar.projectKey>
<sonar.projectName>BoatHouse-product-service</sonar.projectName>
<sonar.projectVersion>1.0.2</sonar.projectVersion>
<sonar.sources>src/main</sonar.sources>
<sonar.tests>src/test</sonar.tests>
<sonar.language>java</sonar.language>
<sonar.java.binaries>.</sonar.java.binaries>
<sonar.sourceEncodin>UTF-8</sonar.sourceEncodin>
</properties>
</profile>
</profiles>
mvn sonar:sonar
在IntelliJ IDEA 的Terminal窗口中执行
mkdir source
git clone https://github.com/icdps/boat-house-devops.git
tools/sonarqube
目录,直接运行命令:docker-compose -f docker-compose-sonarqube.yml up -d
docker-compose -f docker-compose-sonarqube.yml logs -d -ft
查看日志,分析问题sonarqube_1 | 2020-02-11T01:28:21.354836464Z 2020.02.11 01:28:21 ERROR es[][o.e.b.Bootstrap] node validation exception
sonarqube_1 | 2020-02-11T01:28:21.354839364Z [1] bootstrap checks failed
sonarqube_1 | 2020-02-11T01:28:21.354841964Z [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
临时解决办法:
修改参数:
sudo sysctl -w vm.max_map_count=262144
查看修改好的参数:
sudo sysctl -a|grep vm.max_map_count
永远生效的办法
1 切换到root用户修改配置sysctl.conf
2 执行:vi /etc/sysctl.conf
3 添加下面配置:vm.max_map_count=655360
4 并执行命令:sysctl -p
curl http://localhost:9000/
以验证是否正常运行.可参考这个PR的文件变更:
https://github.com/idcf-boat-house/boat-house-frontend/pull/76/files
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。