- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Sonar是一个代码质量管理的开源平台,基于Java开发的,用于管理源代码的质量,通过插件形式,可以支持包括java、C#、JavaScript等二十余种编程语言的代码质量管理与检测。 它具有免费的社区版本和其他付费版本.
SonarQube之采购选型参考 。
利用SonarQube的主要好处是:它集成了数千种自动的静态代码分析规则,旨在提高开发人员的代码质量和安全性,使得开发人员编写更加干净,更加安全的代码.
主要提供了三个比较大的功能:
代码可靠性支持:提前捕获和提示代码中的错误,从而避免未定义的行为影响到终端用户.
应用安全支持:修复可能危害到应用程序的漏洞,并通过安全热点学习AppSec(简单理解就是会学习和识别新的漏洞).
技术债务支持:确保管理的代码库干净并且可维护,以便提高开发人员的开发效率.
这可以帮助你确保代码在合并之前达到预期的质量! 。
只需一行命令即可轻松集成到CI/CD管道中.
也可以集成到Maven和Gradle构建周期中 。
检查几乎所有内容,如代码质量,格式,变量声明,异常处理等.
实际上,研发团队可以基于SonarQube做下面的事情:
CI/CD流程加入一个SonarQube扫描的环节 。
实施代码质量阈值,只有通过了这个质量阈值检测才能进入下一个流程 。
代码质量低于阈值的项目要及时调整对应的代码 。
质量阈值可以进行自定义,SonarQube中针对每个项目会有详细的面板信息,里面会给出项目当前的健康状态,不同级别漏洞的分类和明细,漏洞对应提交者等多维度的统计信息,方便进行问题的追踪和修复.
针对不同的项目,SonarQube可设定了不同等级的阈值,对于老项目,会使用最低等级的阈值:阻断性的错误数量要求为0,对于一些新的项目,则严格要求质量如严重性的错误要求为0等,只要无法通过质量阈值检查,那么项目是无法上线的.
sonarqube是sonar的服务端,相当于一个web服务器,用来发布应用,在线浏览、配置分析等。
开发人员和管理员操作频繁,用于浏览代码质量和配置服务器.
集成ElasticSearch做搜索服务,用于返回通过UI搜索内容.
集成计算引擎处理代码分析后的报告,并将报告保存到数据库.
image.png 。
每个文件夹的作用 。
bin:sonarqube运行命令文件夹
conf:sonarqube配置文件夹
data:嵌入式数据库的数据(H2数据库引擎),建议只用于测试和演示
extensions:sonarqube的插件等存放文件夹
lib:sonarqube存放的运行库文件夹(jar)
logs:sonarqube日志文件夹
temp:sonarqube临时文件夹
web:sonarqube系统UI界面文件夹
```
### 2、SonarQube数据库
* 存储代码分析数据报告。
* 支持oracle、PostgreSQL、MySQL。
### 3、Sonarqube-Scanner
sonarqube-scanner相当于sonar客户端, sonarqube-scanner如下图所示。每个文件夹的作用和sonar类似,具体不在赘述.
* 客户端工具,用于扫描项目。
* 将扫描结果上传到服务器。
![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936421-622703806.png)
### 4、SonarQube Plugins
* 通过插件使平台功能更加强大,
* 常用的插件分类:SCM、集成、身份验证、管理维护等插件。
外部集成
----
下面的模式展示了SonarQube如何与其他ALM工具集成,以及使用SONARQUE的各种组件。
1. 开发人员在IDE中编写代码,并使用SonarLint来运行本地分析。
2. 开发人员将他们的代码推到他们最喜欢的SCM:Git,Svn,TFVC,…
3. 连续集成服务器触发自动构建,执行SONARQUE扫描器需要运行SONARQUE分析。
4. 分析报告被发送到SONARQUE服务器进行处理。
5. SONARQUE服务器在SONARQUE数据库中处理和存储分析报告结果,并将结果显示在UI中。
6. 开发人员审查、评论、挑战他们的问题,通过SONARQUE UI管理和减少他们的技术债务。
7. 管理者从分析中得到报告;使用API来自动配置并从SONARQUE中提取数据;使用JMX监控SONARQUBE服务器
![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936717-211760692.png)
SonarLint
---------
SonarLint是一个Sonar IDE插件,可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer, SonarLint本身也可以基于一些规则对代码IDE中的代码进行即时的检测。它的目的是在您键入代码时提供即时反馈。
![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936817-1917286195.png)![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936719-717063249.png)
**注意:**为了获得最佳性能,Sonar Qube服务器和数据库应安装在单独的主机上,并且服务器主机应为专用主机。服务器和数据库主机应位于同一网络上。
所有主机都必须进行时间同步
最后此篇关于SonarQube系列-架构与外部集成的文章就讲到这里了,如果你想了解更多关于SonarQube系列-架构与外部集成的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我找到了 Using SonarQube in Eclipse 并将提出一个针对 Python 的单独问题。但在这里我想更一般地询问如何在提交之前处理单个源文件时,如何使用 SonarQube 作为
我们之前在现已关闭的 SonarQube Users mailing list 上讨论过这个问题. 通过优化Postgre DB换了半周左右问题解决,然后又出现问题。 我们正在使用 Jenkins 1
自从更新到5.x以来,由于“权限不足”问题,我们的许多构建作业现在都失败了。如here中所述,应该在SonarQube 5.1中解决该问题,但实际上它没有得到解决,或者存在另一个与我们当前运行Sona
我已经有一段时间没有看过 SonarQube 了。最新版本看起来很有趣。 上次我查看这个产品时,他们有一个网站,他们通过 SonarQube 进程推送了各种流行的开源库(如 Tomcat、Active
在 SonarQube (5.6.4 LTS) 中有一个后台(项目分析)任务可视化的 View :(管理/项目/后台任务)。似乎任务是按顺序运行的(一次一个)。有些任务可能需要 40 分钟,这意味着其
今天我正在用 mysqldump 备份 MySQL,但我不确定是否需要从/opt/sonar 保存一些文件。请你能帮我一些指示吗? 除了 MySQL,我还需要在 Sonar 中备份什么? 最佳答案 我
我们希望每个用户都能收到一封关于他们在此分析中引入的新问题的电子邮件。 我在这里找到了这个请求,说它应该已经成为可能: http://jira.sonarsource.com/browse/SONAR
是否可以从一个项目导出代码覆盖率和 sonarqube 问题的排除项并导入到其他项目? 最佳答案 排除项是项目属性,因此您可以使用 /api/properties Web 服务自动从一个项目获取这些属
当 Sonar 抛出一个特定的编码规则违规时,开发人员(或就此而言任何授权用户)如何忽略它?假设弹出一条规则“不遵循文件命名约定”,有没有办法可以将其声明为误报并单击某个按钮以确保不会显示该编码规则违
我希望更改规则“左花括号应位于代码行的末尾”,因为我们使用了不同的约定。 提前致谢! 最佳答案 由于 Sonarqube 打算在规则上提供尽可能少的配置:您应该使用 key squid:LeftCur
我正在寻找一种在 SonarQube 中组织项目的方法,并发现我必须为此付费:http://www.sonarqube.org/bring-a-new-dimension-to-sonar-with-
SonarQube Server 5.1.2, Sonar-Runner 2.4 正如 Multi-moduleProject 中提供的那样我创建了一个项目结构 Accounts | ->invoic
在 SonarQube 的 Web UI 中,您可以根据多个条件过滤问题。但似乎没有一个是可以否定的。 我喜欢找出所有关键问题,即 不是 规则xyz。我目前从 Web UI 中只能看到选择我喜欢看的东
我已经设置了一个 jenkins-sonarqube-github 集成工作流程,其中 git 存储库中的拉取请求会触发一个 webhook,该 webhook 会启动一个 jenkins 作业,该作
有没有人设法让 SonarQube 与 Upsource 合作?我已经为 SonarQube 下载了 upsource-sonar-plugin-0.1-SNAPSHOT.jar 插件,并在我通过/s
我正在使用JaCoCo进行代码覆盖。单元测试报告是使用junit创建的,并且已正确导入,因此可以正确显示单元测试信息。 问题是,我收到错误消息: 没有有关每次测试的覆盖率的信息。 ,代码覆盖率显示单元
我有一个 Sonarcloud 帐户,我正在尝试使用 SonarQube.Scanner.MSBuild.exe 分析 Visual Studio 解决方案。我创建了一个 token 并将其作为 So
似乎有最新版本的新规则可用。 我有几个问题报告为“应正确使用 Printf 样式的格式字符串 (squid:S3457)” 我不明白 my case 中的描述和错误是什么: LOGGER.info("
这个问题我看了很多帖子,但是没找到答案所以才问。我将 Sonarqube 从 4.5 升级到 5.6,它工作正常,但质量配置文件是空的。我尝试使用备份/恢复选项恢复一个,但规则被忽略: image .
我实现了 SonarQube在服务器上,我做了大部分配置 远程 .因此,无论何时安装插件,都会重新启动 SonarQube是必需的,每次我都必须显式(手动)重启 SonarQube服务器 . 有没有办
我是一名优秀的程序员,十分优秀!