静态代码扫描环境搭建(mac)

2023-11-07

一.安装要求
1.1 软件要求

在进行sonarqube环境安装和搭建前务必确定当前机器和平台配置满足如下要求。机器上需要安装java(Oracle JRE 11 或 OpenJDK 11),SonarQube服务器需要的java版本为11,sonarqube scanner需要的jvm版本是8或11,因此这里我们使用java11。数据库支持PostgreSQL(9.6,10,11,12,和13)版本,MSSQL(12.0,13.0,14.0,15.0),Oracle(XE Editions,12C,18C,19C),WEB浏览器支持Safari最新版本,Opera,Google Chrome最新版本,Mozilla Firefox最新版本,Microsoft Edge最新版本和Microsoft Internet Explorer 的IE 11版本。除此之外,还需要注意,如果是运行在linux操作系统中,必须确保vm.max_map_count 大于或等于524288,fs.file-max 大于或等于131072,用户运行SonarQube可以打开至少131072个文件描述器和8192个线程,可以通过如下命令查看当前值

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

以及通过root用户设置如上四个值满足标准

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192
1.2 硬件要求
SonarQube 服务器的小规模(个人或小团队)实例需要至少 2GB 的 RAM 才能有效运行,并且需要 1GB 的可用 RAM 供操作系统使用。
您需要的磁盘空间量取决于您使用 SonarQube 分析的代码量。
SonarQube 必须安装在具有出色读写性能的硬盘上。最重要的是,“数据”文件夹包含 Elasticsearch 索引,当服务器启动并运行时,将在这些索引上完成大量 I/O。因此,出色的硬盘读写性能将对 SonarQube 服务器的整体性能产生很大影响。

SonarQube 在服务器端不支持 32 位系统,SonarQube scanner支持 32 位系统。

二.Sonarqube安装步骤
2.1 实例整体架构
在这里插入图片描述

图1 SonarQube实例整体架构

如图1所示,sonarqube实例由三个部分组成:第一个部分是sonarqube服务器,主要运行以下三个进程:1.为 SonarQube 用户界面提供服务的 Web 服务器;2.基于 Elasticsearch 的搜索服务器;3.负责处理代码分析报告并将其保存在 SonarQube 数据库中的计算引擎。第二部分是存储以下内容的数据库:1.代码扫描期间生成的代码质量和安全性指标问题;2.sonarqube实例配置。最后一个部分是在您的CI/CD服务器上运行一个或多个scanners用于分析项目。

2.2 java11安装

https://blog.csdn.net/qq_41187116/article/details/125702854?spm=1001.2014.3001.5501

说明:目前jdk11 提供的max os版本在M1芯片上尚不支持,若安装失败建议下载安装open jdk11,通过该链接下载

https://docs.microsoft.com/en-us/java/openjdk/download

2.2 数据库postgresql安装

参考如下文档进行安装,要求版本在9.6,10,11,12,和13范围内即可

https://blog.csdn.net/weixin_46014027/article/details/121035453?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121035453-blog-123527230.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121035453-blog-123527230.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2

2.3 添加系统用户

由于sonarqube不能使用root用户启动 ,所以可以通过创建新系统用户专门用于sonarqube的启动,创建用户后需要赋予其文件夹访问权限,通过chown命令。

说明:由于mac OS系统不支持useradd命令,所以这里需要通过系统偏好设置-》用户与群组新增用户,连/etc/passwd中也找不到我们创建的用户。因为mac OS是基于BSD的用户管理模式和linux系统不同,linux系统可以在root用户下通过useradd明亮创建用户。如这里创建的用户名为sonarqube(可灵活改动)。

2.4 下载sonarqube

通过访问sonarqube官网https://www.sonarqube.org/downloads/下载9.5版本的sonarqube的ZIP压缩包,然后准备安装。

2.5安装sonarqube

注:以下皆在root用户下操作( sudo -su root)

#在压缩包上层目录下将压缩包移动到/opt目录下
mv sonarqube-9.5.0.56709.zip /opt

#切换到opt目录下 解压移动过来的压缩包

cd /opt

unzip sonarqube-9.5.0.56709.zip

#授权新创建的系统用户sonarqube访问sonarqube文件夹
chown -R sonarqube /opt/sonarqube-9.5.0.56709

注:以下皆在sonarqube用户下操作 (sudo -su sonarqube)

cd /opt/sonarqube-9.5.0.56709/conf

vi sonar.properties

#修改数据库配置(在步骤2.2中配置) weburl等多个配置,根据实际设定配置

sonar.jdbc.username=postgres
sonar.jdbc.password=admin

sonar.jdbc.url=jdbc:postgresql://localhost/postgres?currentSchema=my_schema

其中my_schema是由自己创建

修改登陆地址和端口号

sonar.web.host=localhost

sonar.web.port=9000

2.6启动sonarqube

#切换到如下目录

/opt/sonarqube-9.5.0.56709/bin/macosx-universal-64

#执行如下命令启动sonarqube

./sonar.sh start

如果终端显示如下字样表示启动成功

Running SonarQube…
SonarQube is already running

否则通过./sonar.sh console查看报错原因(如sonarqube started不是真正的启动)

2.7 sonarqube web登陆

http://localhost:9000/

第一次进去默认用户名和密码都是admin,强制修改为新密码后登陆

2.8 下载安装sonar-scanner

下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

解压到/opt目录下

unzip sonar-scanner-cli-4.6.2.2472-linux.zip -d /opt/SonarScanner-4.7

这里下载的是版本4.7, 并在系统用户下配置环境变量

sonarqube@VK69KX60K0 conf % sonar-scanner -v
INFO: Scanner configuration file: /opt/sonar-scanner-4.7/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.7.0.2747
INFO: Java 11.0.14.1 Eclipse Adoptium (64-bit)
INFO: Mac OS X 12.1 x86_64

根据使用的是bash还是zsh将其存放到不同的文件下(bash_profile 或者zshrc文件),并使用source+文件名的方式进行激活

export Sonar_Home=/opt/sonar-scanner-4.7/
export PATH= S o n a r H o m e / b i n : Sonar_Home/bin: SonarHome/bin:PATH

#sonarqube环境变量

export SONAR_HOME=/opt/sonarqube-9.5.0.56709
export PATH= P A T H : PATH: PATH:SONAR_HOME/bin

2.9对项目进行静态代码扫描

在sonar控制台,新建项目(这里的test2项目用于新建项目示例),创建令牌,选择扫描方式。
在这里插入图片描述

在项目目录下通过新系统用户sonarqube执行如下命令(截图所示,根据创建项目生成,如新用户没有目录权限,可以通过chown在root用户下授予权限)

sonar-scanner
-Dsonar.projectKey=test2
-Dsonar.sources=.
-Dsonar.host.url=http://localhost:9000
-Dsonar.login=sqp_4d26c8ae21cccfa5f95bdef3ecfbbc72bc9afc0c

至此,一份代码扫描就完成了,如对inferencemanager项目的扫描结果如下图所示
在这里插入图片描述

三 避坑笔记

记录1:mac没有useradd命令,通过系统偏好设置启动
记录2:使用新创建用户启动
记录3:使用maxos下的sh脚本启动,非linux下
记录4:使用root启动过后会生成temp目录下文件/opt/sonarqube-9.5.0.56709/temp/ 包括conf和sharedmemory文件,需要删除后重新启动
记录5:sonarqube@VK69KX60K0 macosx-universal-64 % ./sonar.sh console
Running SonarQube…
SonarQube is already running
这才算真正启动
sonarqube started不是真正的启动,要通过./sonar.sh console查看报错原因
记录6:在新用户下创建zshrc文件并source激活
记录7:要把文件夹授权给新创建的用户 chown -R sonarqube(新用户名,通过系统偏好设置创建) /opt/sonarqube-9.5.0.56709

说明:以上内容在整个过程中基本都有所体现,这里作总结记录作用,出现问题可参考此部分

四 写在最后

说明:当前文档以安装在maxos操作系统下为例,与其他操作系统有所不同,具体可参考官方文档https://docs.sonarqube.org/8.9/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态代码扫描环境搭建(mac) 的相关文章

随机推荐

  • 零基础开发蓝牙设备

    前言 现在几乎每个人的手机都具备蓝牙功能 所以如果你的硬件设备也具备蓝牙通信功能 那么便可以很容易和手机建立通信 从而具备IOT物联网属性 但我们也知道蓝牙Ble 目前已发展到5 2版本 协议极其复杂 并不是所有人都需要去详细了解它 我们更
  • 强连通分量

    点击打开链接
  • imp-00003:oracle error 959 encountered

    imp 00003 oracle error 959 encountered 背景描述 今天imp 导入dmp dmp中有6张表 且均为同一用户的表 其中四张导入成功 还有两张表导入失败 提示 imp 00003 oracle error
  • 集成学习介绍——Random Forest

    随机森林是一个非常直观 理解起来也比较容易的Bagging算法 前面我们介绍过决策树 其最大的一个缺点就是容易过拟合 随机森林则是由若干决策树组成的模型 其思想就是 三个臭皮匠顶个诸葛亮 比如下图 就是由9个决策树组成的一个随机森林 其中6
  • React Native入门(四)——入门小结

    1 js跳转Activity后 按home键再切回应用白屏 解决方案 修改MainActivity或目标Activity启动方式 总之不能全部为SingleTask 2 代码报错修改后无法链接nodejs服务了 解决方案 尝试在nodejs
  • Pytorch 深度学习入门与实践 第二章 pytorch快速入门 (1)

    python常用库及模块 1 文件管理的相关库 os 该模块为操作系统接口模块 提供了一些方便使用操作系统的相关功能函数 在读写文件时比较方便 2 时间和日期 time 该模块为时间的访问和转换模块 提供了各种时间相关的函数 方便时间的获取
  • Git使用手册/Git教程:git push 推送提交本地仓库代码文件到远程仓库

    相关文章 关于验证是否存在ssh配置以及生成SSH Key的方法可以参照文章 Git使用手册 生成SSH Key 关于SSH Key的使用和公钥在gitHub gitLab的配置等 请参考文章 Git使用手册 使用SSH Key及配置SSH
  • 关于知道后序序列和中序序列确定前序序列

    以下是大神的解释 摘自洛谷题解 比较清晰 DEBAFCG EDBFGCA 首先这棵树的根是A 后序排列的最后一个 输出A 然后在中序排列中找到A的位置 发现它左右各有三个点 分别是它的左右子树 把中序排列左边三个点和后序排列的前三个点作为左
  • python 定时器使用教程 apscheduler模块,检查文件夹

    1 简介 apscheduler是python中的任务定时模块 它包含四个组件 触发器 trigger 作业存储 job store 执行器 executor 调度器 scheduler 2 安装 pip install apschedul
  • Spring 入门(控制反转IOC、依赖注入DI、Bean的作用范围、Bean的生命周期)

    1 什么是框架 框架 Framework 是整个或部分系统的可重用设计 表现为一组抽象构件及构件实例间交互的方法 另一种定义认为 框架是可被应用开发者定制的应用骨架 前者是从应用方面而后者是从目的方面给出的定义 2 Java中的框架 Str
  • 电脑阅卷系统

    本软件利用电脑外接摄像头 和用普通纸张打印 或复印 的答题卡进行选择题的阅卷 能实时播报成绩产生作答分析 软件名称是 精易摄像头阅卷软件 功能特色 1 精易软件的设计精度和速度已达到实际使用需要 填涂到位的情况下读卡速度是每张答题卡用时1
  • 决策树应用实例③——银行借贷模型

    决策树系列目录 文末有惊喜彩蛋 决策树 信息熵 信息增益 基尼系数 决策树 决策树算法原理 ID3 C4 5 CART 决策树 决策树参数介绍 分类和回归 决策树 决策树Sklearn调参 GridSearchCV调参及过程做图 决策树 P
  • NoSQL数据库简介

    NoSQL代表 不仅是SQL 指的是一种数据库管理系统 旨在处理大量非结构化和半结构化数据 与使用具有预定义架构的表格格式的传统SQL数据库不同 NoSQL数据库是无模式的 并且允许灵活和动态的数据结构 NoSQL数据库是必需的 因为它们可
  • 解决:Not creating XLA devices, tf_xla_enable_xla_devices not set

    解决 Not creating XLA devices tf xla enable xla devices not set 实验环境 提示如下 分析原因 解决方法 实验环境 Windows 10 NVIDIA GeForce GTX 105
  • 易经中的一些见解

    曾仕强教授 易经不只是用来趋吉避凶 低端讲法 高端讲法 持正向善 云端讲法 心安理得 求得好死 好死指的是死得其时 死得其所 死得心安理得 趋吉避凶是手段 不是目的 顺自然 重人伦 自作自受 缺角 修治 完人 慎始 反省提升 善终 人生的乐
  • InvokeHelper调用引发异常

    代码原来的实现是 try InvokeHelper catch GetLastError 好吧 引发了异常 但是GetLastError 永远为零 状况了 网上又找不到相关资料 知道自己一步一步地从InvokeHelper跟踪进去 发现里面
  • Spring Cloud OpenFeign 超时设置与开启重试

    超时设置 数据中台HRestful API请求 feign okhttp enabled true client config default 日志打印级别 loggerLevel basic 跨服务接口请求超时 readTimeout 2
  • Windows操作系统截屏快捷键

    1 Print Screen截屏 不只是win10系统独有的 只要在键盘上按下 Print Screen 键 就会截取当前屏幕并储存在剪切板中 进入文档编辑器 文本文档除外 图片处理工具 QQ等聊天窗口进行粘贴 Ctrl V 操作 就可以获
  • os.path函数简要分析

    os模块简介 os模块实现了在路径上的一些有用的功能 os path abspath path 返回一个绝对路径名 import os path abspath os path abspath User home Work print ab
  • 静态代码扫描环境搭建(mac)

    一 安装要求 1 1 软件要求 在进行sonarqube环境安装和搭建前务必确定当前机器和平台配置满足如下要求 机器上需要安装java Oracle JRE 11 或 OpenJDK 11 SonarQube服务器需要的java版本为11