摘要
本人所在的企业所使用的自研软件系统数量相对庞大,且大部分是C#编写。由于代码由各个软件供应商提供,代码质量参差不齐,为实现代码质量管控和提升,决定引入Sonar对代码进行分析。
Sonar的安装部署分为以下几个步骤:
JAVA环境(JAVA 8)安装
mysql数据库安装
安装Sonar
sonar-scanner-msbuild安装配置
实现C#代码上传和分析
JAVA环境(JAVA 8)安装
下载地址:https://www.oracle.com/java/technologies/downloads/#java8-windows
备用下载地址1:http://www.2265.com/soft/545440.html
备用下载地址2:https://pan.baidu.com/s/18pEMo3gYsAAHWC9DjizP1A提取码:xu99

详细安装过程可参考https://www.cnblogs.com/nojacky/p/9497724.html
mysql数据库安装
mysql是Sonar的基础,使用Sonar需要数据库支持
https://dev.mysql.com/downloads/mysql/5.7.html

下载完成之后解压缩

在系统变量下新建MYSQL_HOME,MySQL5.7文件夹位置,

添加系统变量下path,%MYSQL_HOME%\bin

在MySQL5.7目录下新建my.ini文件,
[mysqld]
#端口号
port = 3306
#mysql-5.7.27-winx64的路径
basedir=D:\Program Files\mysql-5.7.30-winx64
#mysql-5.7.27-winx64的路径+\data
datadir=D:\Program Files\mysql-5.7.30-winx64\data
#最大连接数
max_connections=200
#编码
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
#编码
default-character-set=utf8

通过cmd安装数据库

执行安装数据库的指令
mysqld -install

安装完成之后,启动服务。首次启动会失败,原因是没有初始化。
net start mysql

cmd进入mysql的bin目录,执行初始化按钮
mysqld --initialize-insecure

然后再次启动服务即可

数据库安装完成之后,需要创建初始用户
mysql -u root -p
然后可以使用HeidisSql连接数据库,这个软件免费
下载页面:https://github.com/microsoft/winget-pkgs/tree/master/manifests/h/HeidiSQL/HeidiSQL
下载链接:https://release-assets.githubusercontent.com/github-production-release-asset/109230350/78cd6aca-542f-47f9-982e-6c34e119e40d?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-12-03T04%3A04%3A21Z&rscd=attachment%3B+filename%3DHeidiSQL_12.13.0.7147_Setup.exe&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-12-03T03%3A03%3A26Z&ske=2025-12-03T04%3A04%3A21Z&sks=b&skv=2018-11-09&sig=7IMrbbsEYoMQYBud5JPliIP9AFYdVuwIQsSfKUjeMMc%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2NDczMzMwMiwibmJmIjoxNzY0NzMxNTAyLCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.kGeq1wgYWr7PKf9Kow2R3EACdwngzeFjawUFOQecovI&response-content-disposition=attachment%3B%20filename%3DHeidiSQL_12.13.0.7147_Setup.exe&response-content-type=application%2Foctet-stream

安装Sonar
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip
下载,并解压

下载sonar-scanner并解压
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-windows.zip

下载sonarqube汉化包
下载地址:https://github.com/xuhuisheng/sonar-l10n-zh/tags
汉化包的版本对应参考:https://github.com/xuhuisheng/sonar-l10n-zh
首先配置Sonar的数据库
右键点击数据库连接实例(Unnamed)进行数据库创建。或者使用以下脚本。
CREATE DATABASE `sonar` /*!40100 COLLATE 'utf8_general_ci' */;

创建Sonar用户及其权限
CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@‘%’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@‘localhost’ IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES;

修改sonar.properties文件配置:

配置修改完成之后,启动Sonar服务


启动之后,访问http://127.0.0.1:9000/,如下

管理员找密码默认:admin/admin

汉化包对应表如下:https://github.com/xuhuisheng/sonar-l10n-zh

汉化包下载:https://github.com/xuhuisheng/sonar-l10n-zh/tags
需要翻几页

下载jar包

下载好中文插件,并移动到sonarqube-7.6\extensions\plugins中,再重启sonar即可生效

汉化之后的效果如下

附:重启sonarqube方法:
使用命令:tasklist | findstr java 找到的java进程
强制杀死所有的进程:taskkill /PID xxxx /f
或者重启电脑。
sonar-scanner-msbuild安装配置
Sonar对java和python的代码分析比较容易,相对C#而言就比较复杂了。它需要sonar-scanner-msbuild,目前支持VS2015和VS2017版本,即MsBuild14.0和15.0。
我们先下载VS2015,地址:http://www.downyi.com/downinfo/174977.html
http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.iso
这个是一个镜像,需要解压之后安装,并且其中的一些组件已经无法安装,直接跳过即可。
完成安装之后,找到MsBuild.exe的路径

然后在环境变量中实现配置

验证是否配置成功:msbuild -version

接下来配置sonar-scanner-msbuild
sonar-scanner-msbuild下载地址:https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/4.3.1.1372/sonar-scanner-msbuild-4.3.1.1372-net46.zip
实现C#代码上传和分析
首先,进入Sonar用admin账号登陆,并创建新项目。

写入项目名称之后,点击设置进入下一步

直接点击创建按钮


选择C#语言,会出现三个cmd指令,我们一一执行就可以。

进入cmd,目录定位到C#项目根目录,目录下一定要有.sln或者.csproj文件

执行第一个指令

执行第二个指令

执行第三个指令

回到页面,查看“问题”,发现已经成功完成代码分析和上传


2434

被折叠的 条评论
为什么被折叠?



