sonarqube配置全指南,集成阿里巴巴p3c规范

sonarqube配置全指南,集成阿里巴巴p3c规范环境准备 内置数据库 Sonar安装成功后,默认内置H2数据库,用于记录单次的扫描结果,对同一个project重复扫码,会覆盖之前的扫描记录,所以H2 数据库只应用于测试,不可以用于生产环境,那如果你

sonarqube配置全指南,集成阿里巴巴p3c规范

环境准备

内置数据库

Sonar安装成功后,默认内置H2数据库,用于记录单次的扫描结果,对同一个project重复扫码,会覆盖之前的扫描记录,所以H2 数据库只应用于测试,不可以用于生产环境,那如果你是想玩玩,不想长期扫描你的项目,可以不必配置数据库

自定义数据库:

  • Oracle
  • SQL Server(只支持SQL Server 2014 以及 SQL Server2016)
  • PostgreSQL
  • MYSQL 版本限制: 8.0>MYSQL>=5.6

(注官方说明,从Sonar7.9版本,不再支持Mysql),以下链接
End of Life of MySQL Support : SonarQube 7.9 and future versions do not support MySQL.
Please migrate to a supported database. Get more details at

https://community.sonarsource.com/t/end-of-life-of-mysql-support
https://jira.sonarsource.com/browse/SONAR-11963

安装步骤

1.安装sonarqube:

安装的是windows 7.4 community社区版
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.4.zip
我之前是用最新的8.2版本,不过问题很多,而且评价说最新的不是很稳定,不支持mysql,最后使用的7.4版本,
官网下载比较慢,大家如果无法下载可以留言回复我,或者关注文末二维码私信我。

2.安装JDK:

我安装的JDK11(1.8版本无法安装最新的sonarqube 8.2,7.x是可以的,大家选择时候需要注意)
如果无法找到下载地址,私信我。

3.选择数据库

4.配置:

  1. 安装完毕,打开此目录,运行StartSonar.bat

    file

2.启动浏览器,访问http://localhost:9000 , 如出现下图则表示安装成功。
file

3.配置连接数据库 :
打开conf文件夹下的sonar.properties文件,底部追加如下:

如果是SQL Server,追加:

  • sonar.jdbc.url=jdbc:sqlserver://10.60.215.202;databaseName=sonar
  • sonar.jdbc.username=sa
  • sonar.jdbc.password=123456

如果是MYSQL:

  • sonar.jdbc.url=jdbc:mysql://10.60.253.34:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
  • sonar.jdbc.username=root
  • sonar.jdbc.password=123456
  • sonar.sorceEncoding=UTF-8
  • sonar.login=admin
  • sonar.password=admin

    4.重启,即重新运行StartSonar.bat,使用admin ,admin登陆系统。配置数据库之后,会初始化表信息,耐心等待一段时间。
    file

5.Sonar中创建project ,并配置命令
file

5.在IDEA中进到要扫描的项目根目录,执行:
mvn sonar:sonar   -Dsonar.projectKey=test_project   -Dsonar.host.url=http://10.60.25.121:9000   -Dsonar.login=6dc9cd89575d252d12d450267a64c0ee4bca3c65

扫描结果:
file

file

这里扫码的时候,IDEA提示lifecycle-mapping jar包找不到,使用这个方式安装一下就好

git clone https://github.com/mfriedenhagen/dummy-lifecycle-mapping-plugin.git , 然后mvn package即可安装这个缺失的包。

集成阿里巴巴p3c

file

该指南整合了阿里巴巴集团技术团队多年来的最佳编程实践。 随着我们鼓励重用和更好地理解彼此的程序,大量的Java编程团队对项目之间的代码质量提出了苛刻的要求。 过去我们已经看到许多编程问题。 例如,有缺陷的数据库表结构和索引设计可能会导致软件体系结构缺陷和性能风险。 另一个例子是难以维护的混乱代码结构。 此外,未经身份验证的易受攻击的代码容易受到黑客的攻击。 为了解决这类问题,我们在阿里巴巴为Java开发人员开发了本文档。alibaba p3c 地址: https://github.com/alibaba/p3c

如何应用该指南来规范我们的项目代码呢,我们可以在sonar中引入sonar-p3c这个开源插件,下面介绍下详细步骤:

build sonar-p3c plugin插件:

sonar 7.4版本,一定要参照如下链接: https://github.com/rhinoceros/sonar-p3c-pmd/releases/tag/pmd-3.2.0-beta-with-p3c1.3.6-pmd6.10.0 , 100%无问题。

具体步骤

a.打包branch

git clone –single-branch –branch p3c-pmd-1.3.6-branch https://github.com/rhinoceros/p3c.git

clone下来之后,打包

mvn clean install -Dgpg.skip=true

b.打包plugin

git clone https://github.com/rhinoceros/sonar-p3c-pmd/tree/pmd-3.2.0-beta-with-p3c1.3.6-pmd6.10.0
clone下来之后,打包

mvn clean package

部署p3c插件

将上一步打好的jar包 ,放到sonar extensions/plugins下,重启SonarQube

file

点击Quality Proifles,并点击Create

file

选择Java并命名

file

点击Active More

file

左侧filter搜索p3c,并选择Bulk Change,将p3c规则加入刚创建的profile中

file

file

回到Quality Profiles,设置刚刚的profile为默认

file

到此,p3c规则成功集成到Sonar中。现在测试下:

点击Create new project

file

选择Java,并生成token,生成mvn命令,Copy,直接在项目里执行即可

file

file

Idea中扫描会很快,Sonar中会一直显示In Progress,需要等一会才有分析结果。成功执行后结果如下,说明p3c已经成功检查我们的代码

file

—————————————— END ——————————————————

** 刚刚开始写文章,还望老哥点赞推荐下。**

更多好文,关注作者:

sonarqube配置全指南,集成阿里巴巴p3c规范

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9580.html

(0)
上一篇 2023-02-05
下一篇 2023-02-05

相关推荐

  • influxdb-cluster安装部署「终于解决」

    influxdb-cluster安装部署「终于解决」参考资料 Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务,实现了 InfluxDB 高可用集群的部署方案,具有动态扩/缩容、故障恢复、数据同步等能力。 相关…

    2023-04-08
    147
  • springboot2集成cas 单点登录_java properties

    springboot2集成cas 单点登录_java propertiesCouchbase 虽然是MongoDB最有潜力的竞争对手,但是其在数据库方面的开源程度还远远不够,很多高级特性都没有开放出来。目前虽然被SpringBoot加持有了一些光环,但是其文档和代码注释方…

    2023-03-24
    162
  • Python编程技巧:合并多个List

    Python编程技巧:合并多个List在Python编程中,合并多个List是一个非常常见的操作。将多个List合并为一个List可以很方便地进行数据处理,减少代码量,并提高程序的效率。在这篇文章中,我们将介绍多种方法来合并多个List。

    2024-07-14
    71
  • 使用Python对列表进行随机化处理

    使用Python对列表进行随机化处理在日常的编程中,列表是常见的数据类型之一。有时候我们需要对列表进行随机化处理,比如说洗牌、随机选取等操作。本文将介绍如何使用Python对列表进行随机化处理。

    2024-05-02
    76
  • Python中的exp函数

    Python中的exp函数Python中的exp函数是一个数学函数,用于返回e的n次方的值。该函数常用于概率和统计学中的复利计算、指数增长和衰减等领域。

    2024-05-28
    68
  • ORA-014452 删除表时报错「终于解决」

    ORA-014452 删除表时报错「终于解决」原因:简单来说就是你正在操作的该临时表还在被其他会话占用,导致无法删除。 解决步骤: 找出被哪些会话占用,将该会话的进程杀掉就可以了。 先从DBA_OBJECTS/ALL_OBJECTS /USER…

    2023-02-27
    138
  • Oracle数据库简介[通俗易懂]

    Oracle数据库简介[通俗易懂]简介 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目…

    2023-02-06
    144
  • Python调用基础入门

    Python调用基础入门Python语言是一种高级编程语言,它简单易学、语法优雅、能够快速开发高效率的应用程序,尤其在数据科学领域异军突起。在使用Python编写应用程序时,会经常用到一些外部库或模块,而Python调用也是其中非常重要的一部分。本篇文章主要对Python调用的基础入门进行详细阐述。

    2024-06-16
    53

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注