Centos 7 docker 安装代码检测工具Sonarqube和Cppcheck

2023-10-10 08:59

本文主要是介绍Centos 7 docker 安装代码检测工具Sonarqube和Cppcheck,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各位朋友,下面我Centos 7 docker 安装代码检测工具Sonarqube和cppcheck等过程放在这里,供大家参考。

首先安装CentOs 7

docker pull Jenkins/jenkins:lts

mkdir  /home/jenkins

修改目录执行权限

chown -R 1000:1000 jenkins/    uid1000的权限

ls -nd jenkins/                  查看文件权限

 

docker设定执行权限

docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/jenkins:/var/jenkins_home jenkins:latest

 

浏览器输入  http://你的ip地址:8080 即可访问Jenkins

通过浏览器端可以重新启动jenkins

http://localhost:8080/restart/exit/reload

通过服务启动/停止/重启  Jenkins

service Jenkins start/stop/restart

首次启动Jenkins后,需要一个安全密码设定

安装过程中,密码放在了下面路径中,使用cat查看密码,拷贝出密码到上面界面中。

进入之后需要输入密码,在命令行使用如下命令获取密码

cat /home/jenkins/secrets/initialAdminPassword        查看密码

即可进入下面页面:

为Jenkins创新一个用户

配置访问url

祝贺你,如看到下面界面,你现在可以开启Jenkins体验之旅

在Jenkins提供的可选安装的插件中,先安装cppcheck插件,主要进行代码进行分析,单击直接安装即可。

笔者感觉cppcheck基本上检测不出有价值的代码缺陷。

直接安装SonarQube Scanner

安装SonarQube Scanner代码扫描插件。

安装过程中,可选择安装支持中文

配置语言

系统管理-->系统设置-->Locale

补充一下docker中启动Jenkins服务的命令:

启动docker jenkins服务:

service docker start

docker ps

 

直接启动jenkins:

Docker start  容器名称

停止:

Docker stop 容器名称

 

Docker  run  接参数

参数:

docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/hzq/jenkins:/var/jenkins_home jenkins

 

解释上述指令:

-p 8080:8080 -p 50000:50000 进行端口映射

--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权。

-v /home/hzq/jenkins:/var/jenkins_home 磁盘挂载

 

 

下面再把安装Git过程列出:

 

1.先从yum安装git,使用yum直接安装git是最方便的

yum –y install git

 

2.在本机某个路径创建一个空仓库(最后以.git结尾)

cd /usr/local

mkdir git

cd git

git init --bare sjs.git

 

3.创建一个git用户并赋予密码

useradd git

passwd git

 

4.赋予git用户权限

chown -R git:git sjs.git

5.禁用git用户shell登录(一定要禁用)

vi /etc/passwd

git用户修改为如下(一般在最后一行)

git:x:1001:1001::/home/git:/usr/bin/git-shell

其他的不用改。服务端完成。

 

安装上面的git服务端后,再下载G’it客户端进行安装:

在https://git-scm.com/  网址下载

首先要去下载一个git工具,win下载地址:https://git-scm.com/download/win,如果是其它的平台的,下载地址:https://git-scm.com/downloads,它支持windods,Mac OS X ,linux Solaris

 

在客户端的bash

git config --global user.name [你的用户名]   “cxz”

git config --global user.email [你的邮箱]    “manok@tom.com

git config --global user.name

出现刚才配置的用户名,表示配置成功

最近在接触laravel,开始用了git,安装了windows for git,往github执行push操作时验证不通过,原来是没有为github账户添加ssh,“ssh-add pathName”时候出现如下信息:

https://images2015.cnblogs.com/blog/1118942/201703/1118942-20170306133917859-1359232141.png

【解决方法】:需要ssh-agent启动bash,或者说把bash挂到ssh-agent下面。

 

way@DESKTOP-8CTQ9EA MINGW64 /d/XAMpp/htdocs/gitwork (master)

$ ssh-agent bash --login -i

 

way@DESKTOP-8CTQ9EA MINGW64 /d/XAMpp/htdocs/gitwork (master)

$ ssh-add

Identity added: /c/Users/way/.ssh/id_rsa (/c/Users/way/.ssh/id_rsa)

再执行: ssh-add  ~/.ssh/ld_rsa

添加短语:123456

Git 库地址

git  clone git@192.168.0.124:/usr/local/git/demo.git

向远程服务器传文件:

$ git remote add  orgin /linux0.0.1

$ git commit -m "my commit"

$ git pull orgin master

$ git push -u origin   master

 

git库路径:/usr/local/git/sjs.git

 

 

下面再列一下,安装mysql 5.7:

查询是否已经安装:rpm -qa | grep mysql  或  yum list installed | grep mysql

如果安装,则卸载。Yum -y remove mysql-libs.x86_64

Yum -y install mysql-server

设置开机启动:chkconfig mysqld on

启动mysql:sevice mysql start  或  systemctl start mysql.service

登录:root,通过下面找到初始密码

Mysql密码为:root/Test123#

如果想在测试机使用,可降低密码安全策略。

修正密码强度校验规则(用于测试环境使用),高版本的mysql在修改密码时会限制简单密码的创建,如果单单是为了测试使用,可以将他的密码检测策略修改下:

修改:密码最小长度策略

mysql> set global validate_password_length=0;

修改:密码强度检查等级策略,0/LOW、1/MEDIUM、2/STRONG

mysql> set global validate_password_policy=0;

 

开启mysql的root用户远程连接服务(%号即远程连接,IDENTIFIED BY后面跟的密码)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;

 

在执行刷新

mysql> flush privileges;

 

开启mysql端口服务

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 

启动网络服务

service network restart


 

下面讲解安装Sonarqube过程:

下载 wget  https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.4.zip  //笔者当当初最新版本为7.4版本

 # unzip  sonarqube-7.4.zip -d /opt/    //这里解压到/opt目录下

 # useradd sonar    //新建个普通用户,后面以该普通用户身份起动sonarqube服务

# chown  -R  sonar  /opt/sonarqube-7.4/

 

发现Centos没有安装zip,先安装unzip和zip

Yum install -y unzip zip

 

修改参数文件:

vim conf/sonar.properties

创建数据库sonar

mysql user: sonar/Sonar123@

 

以sonar用户启动(不能使用root账号启动,切记,切记,切记!):

sonarqube-6.7]# su sonar ./bin/linux-x86-64/sonar.sh start

 

启动后,可以下面的界面:

 

SonarQube默认登录用户名密码:admin/admin

登录后,再进行一些参数配置工作:

先是提供一个token,邮箱即可。

为了显示中文,安装中文插件Chinese park。

如果要检测C/C++语言,则安装C、C++语言插件,安装过程如下:

 

再下载并安装扫描器:

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip

解压到/usr目录

unzip -d  /usr   sonar-scanner-cli-3.2.0.1227-linux.zip

修改文件夹名称

mv sonar-scanner-cli-3.2.0.1227-linux  sonar-scnner

 

设置环境变量

# vi /etc/profile

增加和修改下面内容

export SONAR_HOME=/opt/sonarqube-7.4

export SONAR_SCANNER_HOME=/usr/sonar-scanner

export PATH=$PATH:$SONAR_HOME:$SONAR_SCANNER_HOME/bin

使环境变量生效

# source /etc/profile

启动Sonar

#cd /opt/sonarqube-7.4/bin/linux-x86-64

#./sonar.sh start

另外,启动/停止/重启命令如下: 
#./sonar.sh start   启动服务 
#./sonar.sh stop    停止服务 
#./sonar.sh restart 重启服务

 

为了能够开机启动,可以添加到启动服务中:

$ sudo ln -s /opt/sonarqube-7.4/bin/Linux-x86-64/sonar.sh /usr/bin/sonar

$ sudo chmod 755 /etc/init.d/sonar

$ sudo chkconfig -add sonar

 

1、创建服务

vi /etc/init.d/sonar

内容如下,其中标红内容为服务绝对路径:

#!/bin/sh  

#  

# rc file for SonarQube  

# chkconfig: 345 96 10  

# description:SonarQube system (www.sonarsource.org)  

#  

### BEGIN INIT INFO  

# Provides: sonar  

# Required-Start:$network  

# Required-Stop:$network  

# Default-Start: 3 4 5  

# Default-Stop: 0 1 2 6  

# Short-Description:SonarQube system (www.sonarsource.org)  

# Description:SonarQube system (www.sonarsource.org)  

### END INIT INFO  

/opt/sonarqube/bin/linux-x86-32/sonar.sh $* 

 

2、增加执行权限

chmod +x /etc/init.d/sonar

3、添加服务

chkconfig --add sonar

4、配置服务启动时依赖的jdk

vi /opt/sonarqube/conf/wrapper.conf

修改wrapper.java.command=java,配置为jdk中java命令的绝对路径

wrapper.java.command= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/bin/java

如果你不知道Jdk安装哪里了,下面可以找java安装路径

  1. 先看java 版本: java –vesion
  2. 查看环境变量:echo $JAVA_HOME
  3. 如果2步没有,  则 which java,找到路径是否是映射位置
  4. 再使用ls -lrt /usr/bin/java称查找到真实位置

5、启动服务

service sonar start

 

重要提示:如果不小心使用root启动了,需要做下面处理,重新把执行权限赋值给sonar账号

chown -R sonar.sonar sonarqube-7.4

chmod 777 -R sonarqube-7.4

现在是开机自动启动了。

因为有时候需要对C/C++进行编译,则需要安装gcc,使用yum安装最方便:

yum install gcc 
yum install gcc-c++

准备一个C语言代码案例,检验一下检测效果

生产者和消费者c例子,编译命令:gcc -pthread -o dd.out dd.c

在代码文件夹的根目录下新建Sonar-scanner的配置文件sonar-project.properties

sonar.projectKey=demo

sonar.projectName=cdemo

sonar.projectVersion=1.0

sonar.sources=/home/demo/c

sonar.java.binaried=/home/demo/c

sonar.language=c

sonar.source.Encoding=UTF-8

然后当前项目路径执行

#sonar-scanner

控制台会打印分析过程,当出现SUCCESS时,分析成功!

Jenkins插件中安装cpplint,由于不支持该插件,所以需要通过warning插件安装。

如果想单独安装cppcheck,则可以通过下面过程安装,单独使用cppcheck检测:

下载http://cppcheck.sourceforge.net/

 

tar -xzvf  cppcheck-1.85.tar.gz

sudo make SRCDIR=build CFGDIR=/usr/share/cppcheck/

sudo make install CFGDIR=/usr/share/cppcheck/

验证

[root@localhost cppcheck-1.85]# cppcheck --version

Cppcheck 1.85

但是很遗憾,cppcheck没有描述那么强大,基本上检测不出有价值的bad smell

(完)

这篇关于Centos 7 docker 安装代码检测工具Sonarqube和Cppcheck的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179431

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型