静态测试是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。而动态测试是通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标。

静态测试被测对象是各种与软件相关的有必要进行测试的产物,是对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态测试可以手工进行,充分发挥人的思维的优势,并且不需要特别的条件,容易展开,但是静态测试对测试人员的要求较高,至少测试人员需要具有编程经验。

静态测试主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。

一 代码检查

代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

从代码检查的定义中我们可以看出代码检查不需要自动任何服务就可以通过代码扫描完成,全部过程都是按照预定义好的规则完成的,只要针对不同的编程语言设计好不同的规则就可以对其进行代码扫描,完成代码检查任务了。如果能将其放到一个工具中完成,那么人工可以完全不参与,是一个完全自动化的流程。这也就导致了通过代码扫描完成的代码检查工作只是一个代码预定规则的检查,并不能保障其编写逻辑符合预期设计,同时如果预定规则不合理那么代码扫描的结果的偏差就会很大。

1、安装相关工具 [root@sonarqube ~]# yum install -y epel-release unzip vim wget

2、安装JDK 我这里直接下载的oracle jdk的rpm包进行安装的 注意:运行sonarqube需要java11版本,我安装最新的13版本会报错

[root@sonarqube ~]# cd /opt/

[root@sonarqube opt]# rpm -ivh jdk-11.0.1_linux-x64_bin.rpm

3、安装数据库(PGSQL) 3.1:添加 PostgreSQL 10 YUM 源

[root@sonarqube ~]# rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat-repo-42.0-11.noarch.rpm

3.2:安装 PostgreSQL 10 Server

[root@sonarqube ~]# yum install -y postgresql10-server postgresql10

3.3:初始化 PGDATA

[root@sonarqube ~]# /usr/pgsql-10/bin/postgresql-10-setup initdb

3.4:编辑配置文件启动MD5验文章来源(Source):

[root@sonarqube ~]# vim /var/lib/pgsql/10/data/pg_hba.conf

3.5:如果postgreSQL server不在本机,还需要做以下操作

1)默认情况下, PostgreSQL server 监听本机 ‘localhost’. 如果是远程连接PostgreSQL server,需要修改

/var/lib/pgsql/10/data/postgresql.conf中的监听地址为 listen_addresses = ‘*’

2)允许所有连接都是用 MD5 密码认证,在/var/lib/pgsql/10/data/pg_hba.conf的最后添加:

host all all 0.0.0.0/0 md5

3.6:放通端口 如果开启了防火墙,还需要在防火墙上允许 TCP port 5432

[root@sonarqube ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp

[root@sonarqube ~]# firewall-cmd --reload

3.7:启动服务

[root@sonarqube ~]# systemctl start postgresql-10

[root@sonarqube ~]# systemctl enable postgresql-10

[root@sonarqube ~]# systemctl status postgresql-10

[root@sonarqube ~]# ss -tnlp |grep 5432

3.8:创建数据库

[root@sonarqube ~]# sudo -u postgres psql

CREATE DATABASE sonar;

CREATE USER sonar WITH ENCRYPTED PASSWORD ‘xjbw8888’;

GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;

ALTER DATABASE sonar OWNER TO sonar;

\q

4、部署SonarQube

4.1:下载程序包

官网地址:https://www.sonarqube.org/

wget -O /opt/sonarqube.zip https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.0.zip

4.2:解压至/usr/local
[root@sonarqube ~]# unzip /server/tools/sonarqube.zip -d /home/application

4.3:重命名目录
[root@sonarqube ~]# mv /home/application/sonarqube-8.0 /home/application/sonarqube

4.4:为sonarqube添加用户
使用root无法启动sonarqube
[root@sonarqube ~]# useradd sonar -s /sbin/nologin
[root@sonarqube ~]# id sonar
uid=1000(sonar) gid=1000(sonar) groups=1000(sonar)

4.5:修改目录权限
[root@sonarqube ~]# chown -R sonar. /home/application/sonarqube/

4.6:修改配置
[root@sonarqube ~]# vim /home/application/sonarqube/conf/sonar.properties

配置数据库,直接在pgsql上下文中添加如下参数

sonar.jdbc.username=sonar
sonar.jdbc.password=密码
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000
sonar.jdbc.removeAbandoned=true
sonar.jdbc.removeAbandonedTimeout=60

  • 配置web参数,在WEB SERVER的段中直接添加如下参数
sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError

4.7:创建sonarqube启动脚本
[root@sonarqube ~]# vim /etc/systemd/system/sonar.service
[Unit]
Description=SonarQube Server
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/home/application/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/home/application/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target

4.8:增加ElasticSearch的虚拟内存
[root@sonarqube ~]# vim /etc/sysctl.d/00-sysctl.conf
vm.max_map_count = 262144

使配置生效
[root@sonarqube ~]# sysctl -p /etc/sysctl.d/00-sysctl.conf

4.9:启动服务
[root@sonarqube ~]# systemctl daemon-reload
[root@sonarqube ~]# systemctl start sonar.service
[root@sonarqube ~]# systemctl enable sonar.service
[root@sonarqube ~]# systemctl status sonar.service
[root@sonarqube ~]# ss -tnlp | grep 9000

5、安装配置Nginx反向代理

5.1:安装Nginx
[root@sonarqube soft]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm
5.2:修改配置
[root@sonarqube ~]# vim /etc/nginx/conf.d/default.conf
​ location / {
​ proxy_set_header Host $host;
​ proxy_set_header X-Real-IP $remote_addr;
​ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
​ proxy_set_header X-Forwarded-Proto $scheme;
​ proxy_set_header X-Forwarded-Ssl on;
​ proxy_pass http://127.0.0.1:9000;
​ proxy_read_timeout 300;
}

[root@sonarqube ~]# nginx -t
5.3:启动服务
[root@sonarqube ~]# systemctl start nginx
[root@sonarqube ~]# systemctl enable nginx
[root@sonarqube ~]# systemctl status nginx
5.4:防火墙放行端口
[root@sonarqube ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
[root@sonarqube ~]# firewall-cmd --reload
5.5:访问网站

一. 配置jenkins集成sonarQube

配置sonar环境
jenkins系统管理->系统设置->SonarQube servers->Add SonarQube
填写Server URL,例如:http://172.16.0.30:9000
填写Server authentication token
登录sonar平台->配置->权限->用户->令牌->填写令牌名称->生成,复制令牌填写Server authentication token即可


1.在jenkins中安装SonarQube Scanner for Jenkins插件
2.在配置页对SonarQube servers进行配置:
系统配置–系统设置–SonarQube servers

name随意,Server URL为sonarQube访问地址,token在sonarQube中查找,具体查找方式如下:
<1>.登录sonarQube
<2>.配置–权限,点击下图所标注的位置:


出现如下所示的页面:

新版jenkins添加token位置

二. 配置gitlab

jenkins系统管理->系统设置->Gitlab->新增
credentials->添加->jenkins->类型->GitLab API token 填写API token和ID、描述
登录gitlab->设置->访问令牌->填写名称->填写过期时间->勾选api->点击创建个人访问令牌,复制令牌填写API token完成添加即可
返回系统设置->填写Connection name-> 填写Gitlab host URL -> credentials选择上面添加的

配置托管脚本
jenkins系统管理->Managed files->Add a new Config->勾选Managed script file->编写脚本内容即可
jenkins构建任务->添加构建->添加Execute managed script->选择托管的脚本即可

三. Java代码扫描配置maven

具体可查看文档

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/

maven配置

<settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- Optional URL to server. Default value is http://localhost:9000 --><sonar.host.url>http://myserver:9000</sonar.host.url></properties></profile></profiles>
</settings>

pom配置

<build><pluginManagement><plugins><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.7.0.1746</version></plugin></plugins></pluginManagement>
</build>

代码扫描

二 . SonarQube管理

质量阀

管理员权限登录系统,进入“质量阀”,可以配置diamante扫描的通过标准。新扫描的项目,采用默认“质量阀”。
可执行的操作:
创建质量阀、改名、复制、删除、添加“质量阀”度量规则、更新“质量阀”规则、修改默认“质量阀”

sonar-质量阀

如果项目不采用默认质量阀,可以进行修改,与其他项目不一致
操作:进入项目首页-配置-质量阀

修改项目质量阀

质量配置

质量配置是在分析时使用的规则集合。
每个语言都有默认配置。没有指定其他配置的项目会使用默认配置。

质量配置

点击上图右上角的“创建”按钮,可以新增质量配置

新配置

质量配置的规则有“挂起”和“活动”两种状态。

“挂起”状态的规则,在项目扫描时不会生效

“活动”状态的规则,在项目扫描时生效

激活规则

激活挂起

项目应用的质量规则可以通过质量配置修改

项目质量配置

访问权限管理

用户/群组管理

新建用户:
进入配置-权限-用户,点击"Creat User",填满必填项即可。

新建用户

添加群组
进入配置-权限-群组,点击"Creat Group",填满必填项即可。

添加群组

将用户添加到群组

方法一:在群组入口添加用户

群组页面点击Members后边的列表图标,选择用户,完成后点击‘Done’。

图片.png

图片.png

方法二:在用户入口添加群组
群组页面点击Group列的图标,选择要添加的群组,完成后点击‘Done’。

用户入口

权限模板

进入 配置-权限-权限模板,查看权限模板

权限模板

点击“动作”按钮,选择“Edit Permissions”,可以配置权限模板,指定用户或者群组的权限,如下图所示

指定用户/群组权限

项目权限控制

进入 项目-Management ,查看项目

项目权限管理

每个项目对应有“动作”按钮,选择“修改权限”

修改项目权限

在上图右边的五个复选框,按需要分配权限给指定的用户或者组,勾选后自动保存配置。

\

Devops实现之sonarQube(四)相关推荐

  1. 敏捷开发、DevOps和云计算(四)

    1.4敏捷实践 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 为什么说是以人为核心? 我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在 ...

  2. 直播预告 | 对谈谷歌云 DORA 布道师:聊聊最关键的四个 DevOps 表现指标

    本期分享 DORA 的全称是 DevOps Research and Assessment,是一个致力于 DevOps 调研与研究的组织,2018 年加入 Google Cloud.自 2014 年起 ...

  3. [译]一个系统管理员眼中的DevOps

    前言 原文发表在Patrick Debois大神的官网上,传送门>> 通篇围绕运维工作进行阐述,始终是在强调运维人员和开发人员需要通力协作,这大概也是DevOps理念的核心价值所在吧!大概 ...

  4. 广州线下活动 | 精益运维与 DevOps 最佳实践

    优维科技 DevOps 系列活动第四期开始啦! 本期活动由优维科技和又拍云联合举办,邀请了 王喜春 @唯品会.陈琛 @魅族.彭鲤航 @优维科技.邵海杨 @又拍云 四位业界大牛,为你讲述精益运维与 De ...

  5. sonar检测java vue项目_Jenkins集成SonarQube 实现构建项目同时审查代码

    软件版本: SonarQube:7.7 Jenkins:2.164.3 一.简介 SonarQube是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题.同时,它提 ...

  6. 理想化的DevOps团队里只需要有Dev就够了?

    (图片来源于网络) 几天前,本公众号发布的一篇译文列举了9种DevOps团队结构适用类型与7种反型(点击查看原文).文章转发到朋友圈之后,很多DevOps同行留言(吐槽)了自己团队的现状,其中大部分人 ...

  7. 微软企业应用开发三大方向:跨平台、开放/开源与DevOps

    软件和互联网正在改变传统企业,软件的职能逐渐从管理内部员工变成核心的商业竞争能力,在今天这种大环境下,我们应该用的新开发技术和方法.微软公司全球资深副总裁.开发平台事业部潘正磊(Julia)认为,把I ...

  8. createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

    在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候.二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并.下面我们介绍下在常见的dev ...

  9. 重磅!《中国DevOps现状调查报告(2021年)》正式发布!(附报告获取方式)

    中国DevOps现状调查报告(2021年)正式发布 2021年7月15日,由中国信息通信研究院举办的"2021中国互联网大会-数字化治理论坛"在北京国家会议中心成功召开.会上,中国 ...

最新文章

  1. Centos 修改时间地区及NTP同步北京时间
  2. 福昕pdf编辑器 android,机PDF编辑器安卓/iOS哪家强?职场达人都在用
  3. 使用FMDB多线程訪问数据库,及database is locked的问题
  4. SpringBoot中请求映射的原理(源码)
  5. VMware Data Recovery备份恢复vmware虚拟机
  6. hdfs web_ui深入讲解、服务启动日志分析、NN SNN关系
  7. 如何找到Angular应用的某个directive是属于哪一个Angular module
  8. ABAP Business switc和business function简介
  9. “.公司”域名注册总量TOP15:新网问鼎 万网居亚
  10. inner/left/right/full join on
  11. excel缩字间距_excel字体间距紧缩
  12. Element-ui中form组件的校验规则
  13. leetcode#8 deterministic finite automaton, DFA
  14. Python轮盘抽奖游戏
  15. 快递单打印专家 免费
  16. vue2.0分页插件官方_Vue 2的最佳和完整分页插件
  17. OpenCV--0016:图像ROI与ROI操作
  18. 哥伦比亚大学 NLP 第三章(第二部分)
  19. 用51单片机驱动蜂鸣器
  20. 用功譬若掘井,与其多绝掘数井,而皆不及泉,何若老守一井,力求泉而用之不竭乎?

热门文章

  1. 深度学习:利用神经网络在少量数据情况下预测房价走势
  2. 苹果笔记本-MAC系统 上安装使用Windows系列(win7\win8\win10)
  3. CentOS5.5 安装Mldonkey 3.0.7
  4. java求1000以内所有完数
  5. 三极管应用电路---低通滤波电路
  6. python microbit typeerror,在MicroPython中使用microbit模块时出现索引错误
  7. 最简单的太阳能光伏发电系统
  8. 浅析运动健身APP开发的四种模式
  9. oracle常用语句大全 来自csdn
  10. HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常