sonarqube7.8代码检查+gitlab+postgres12集成jenkins

Java静态检测工具的简单介绍  from:http://qa.taobao.com/?p=9015   静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人
        工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
        代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和
        设计的一致性, 代码对标准的遵循、可读性,代码的逻辑表达的正确性,代
        码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、
        不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,
        包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构
        检查等内容。”。看了一系列的静态代码扫描或者叫静态代码分析工具后,
        总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,
        他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可
        以自定义各种各样的复杂的规则去对代码进行分析。
静态检测工具:

PMD:1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的 问题:

  1)潜在的bug:空的try/catch/finally/switch语句
    2)未使用的代码:未使用的局部变量、参数、私有方法等
    3)可选的代码:String/StringBuffer的滥用
    4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环
    5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs
 2)PMD特点:
   1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在
    不运行Java程序的情况下报告错误。
   2)PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许
    多问题
   3)用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
 3)同时,PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、
  CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、
  IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs
  集成在一起。
 4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。您可以添加新规则:
   可以通过编写 Java 代码并重新编译 PDM,或者更简单些,编写 XPath 表
   达式,它会针对每个 Java 类的抽象语法树进行处理。
 5)只使用PDM内置规则,PMD 也可以找到你代码中的一些真正问题。某些问题可能
  很小,但有些问题则可能很大。PMD 不可能找到每个 bug,你仍然需要做单元测
  试和接受测试,在查找已知 bug 时,即使是 PMD 也无法替代一个好的调试器。
  但是,PMD 确实可以帮助你发现未知的问题。

FindBugs

1)FindBugs是一个开源的静态代码分析工具,基于LGPL开源协议,无需

运行就能对代码进行分析的工具。不注重style及format,注重检测真正
  的bug及潜在的性能问题 ,尤其注意了尽可能抑制误检测(false positives)
  的发生。以bytecode(*.class、*.jar)为对象进行检查。除了单独动作,还可
  以用作Eclipse 的plug-in,以及嵌入Ant作为task之一 进行利用。
 2)findbugs自带检测器的介绍:  findbugs自带60余种Bad practice,80余种
  Correntness,1种Internationalization,12种Malicious code
  vulnerability,27种Multithreaded correntness,23种Performance,
  43种Dodgy。
 3)Findbugs的一些特点:
   1)FindBugs主要着眼于寻找代码中的缺陷,这就与其他类似工具有些区别了,
    直接操作类文件(class文件)而不是源代码。
   2)FindBugs可以通过命令行、各种构建工具(如Ant、Maven等)、独立的
    Swing GUI或是以Eclipse和NetBeans IDE插件的方式来运行。                
  3)FindBugs输出结果既可以是XML的,也可以是文本形式的。
  4)开发者可以通过多种方式来使用FindBugs,最常见的是在新编写模块的代码
    分析以及对现有代码进行更大范围的分析。   
  5)不注重style及format,注重检测真正的bug及潜在的性能问题,
    尤其注意了尽可能抑制误检测(false positives)的发生。    
4)FindBugs可检测的bug pattern举例:
  检测java programing中容易陷入的bug pattern,equals() 实现时的一般规约违反
  Null pointer的参照 ,Method的返回值的check遗漏 ,初始化前field的访问,
  Multi-thread的正确性, 同期化处理的矛盾, 无条件的wait(),  Code的脆弱性 ,
  可以变更的静态object ,内部数列参照的return等

Checkstyle

1)定义: Checkstyle是一款检查Java程序源代码样式的工具。

2)特点:
   1)它可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特
     别适用于小组开发时彼此间的样式规范和统一。
   2)Checkstyle提供了高可配置性,以便适用于各种代码规范,所以
     除了使用它提供的几种常见标准之外,你也可以定制自己的标准。
   3)Checkstyle提供了支持大多数常见IDE的插件,大部分插件中就含有
     最新的Checkstyle,就不用费心再部署一份了。
   4)Checkstyle可以检查代码的很多方面,从传统观点看,它主要是用来
     检查代码层面的,自从第三版以后,它的内部架构作了重大改变,很多
     其它意图的检测加了进来,现在Checkstyle可以检查像类设计的问题,
     重复代码,如锁的双重检查的bug模式。
 3)CheckStyle的主要流程是:
   1)对Java文件进行词法语法分析,生成语法树。
   2)载入配置文件(checkstyle-metadata.xml以及自定义的配置文件)
     register check事件。
   3)按照深度优先遍历对语法树进行解析,按照注册的事件,在到达某些节点
     ( AST ) 时进行style检查(AST,A child-Sibling Tree,是语法
     树中的某个节点,其类型在TokenTypes类中定义。)
 4)我们所说的自定义Style的检查,就是在第二步设定的。
   这里牵涉到一个叫com.puppycrawl.tools.checkstyle.api.Check 的类,
    我们通常需要重载其中的两个函数: public int[] getDefaultTokens()
    和public void visitToken(DetailAST ast). 这两个函数的含义为,
    在遍历语法树的过程中,每当到达getDefaultTokens函数所返回的AST类型,
    程序就进入visitToken进行具体的检查和分析,即,真正的分析检查过程是在
    visitToken中实现的。

Hammurapi

1)定义: Hammurapi它是一个开源的代码审查/评审(review)工具。它可以帮助改进

 Java代码的质量。它可以基于一套设计规范来分析代码库。当它碰到违反规
          范的地方,会在报告中标识。就像Checkstyle一样,它与Ant无缝集成并且
          由基于XML配置文件来驱动。
 2)特点:
   1)Hammurapi是用来强制代码设计规范的。
   2)Hammurapi是一个遵循设计的工具,提供了自动而且一致的方式来实现设计规范,
     因此使代码评审更加有效而轻松。
   3)Hammurapi如何工作:
     Hammurapi这样的代码分析工具都带有语言分析器。语言分析器是一种输入
     语言代码并输出抽象语法树的工具。这个树上的节点代表语言标识。例如,考
     虑一下简单的算术表达式:3+4. 语言分析器会解析他成为一个如图5所示的语
     法树。在这个树中,节点+代表操作符标识。节点3和4是操作数标识Hammurapi
     使用ANTLR(另一个语言识别工具)作为语言分析器。然而ANTLR API是相当底层的。
     为改善可用性,Hammurapi使用另一个API,基于ANTLR 的JSEL(Java源程序
     工程类库),来访问抽象语法树。 一旦树构建完成,一种树遍历算法就被用来访
     问树中每一个节点。每次访问到一个节点,一种回调机制(Visitor模式)被用来
     提示相应的检查器。在这些回调方法中,检查器收集相关的信息来确定是否有违反
     规范的地方存在。  

Lint4j

1)定义:Lint4J是一个针对Java的源代码分析工具,它可以对Java源码和字节

  码进行静态分析,判断其中是否存在死锁、性能问题或者伸缩性问题。
       它可以集成到任何IDE种或构建系统
 2)特点:
   1)检测代码语法规则
   2)潜在的bug
   3)检测编码模式对代码可读性及大小的影响
   4)检测是否违反EJB规范

Sonar

1)定义:代码质量管理工具Sonar提供了设计与架构度量。Sonar 2.0引入了

  针对Java应用的设计分析、架构与面向对象的度量,Sonar 2.1可以
        检测到未使用的方法以及对不建议使用方法的调用。是一个集成了
        CheckStyle,PMD,Findbugs的代码校验规则 ,重复代码发现,
        代码测试覆盖率, 代码注释率,及所有的检测率变化追踪的完美
        代码质量检查工具。它包含了代码质量检测的七个方面,如下图
 2)特点:
    1)代码覆盖:通过单元测试,将会显示哪行代码被选中。
    2)改善编码规则。
    3)搜寻编码规则:按照名字,插件,激活级别和类别进行查询。
    4)项目搜寻:按照项目的名字进行查询。
    5)对比数据:比较同一张表中的任何测量的趋势。
    6)单元测试
 3)Sonar2.1:
   Sonar还基于Squid引入了一个全新的规则引擎、Sonar解析器既可以处
   理源代码,也可以处理字节码,解析器带有内建的规则,可以检测未使用
   的私有与保护方法以及客户端对不建议使用的方法的调用。
   Squid通过分析应用源代码、Java API和外部程序库
   的字节码来决定哪些方法、类和属性是不建议使用的。
   Sonar 2.1的新特性:
    1)一个全新的“Libraries”页面,显示了项目中所有的程序库和依赖,该特性要求使用
       Maven来构建项目。
      一旦在Sonar站点的主页上选择了一个项目,该服务就会以
      可视化的树形结构展示出项目依赖。此外,还有一个可选的
      动态过滤器,可以根据名称过滤程序库以便在应用的依赖间导航。
    2)用于搜索程序库使用情况的“Dependencies”页面。比如说,可以
     搜索到使用了第三方框架如Commons Logging 1.1的所有项目。
    3)可以使用各种插件扩展Sonar的功能。现在有一个全新的
     “System Info”页面显示了系统属性、已装插件和Java虚拟机内存
      统计信息。该页面还给出了关于Sonar配置和数据库统计的详细信息。
    4)一个用于管理已装插件和系统信息的管理控制台。
      最新版的Sonar为这些插件引入了一个测试框架和一个客户化的Maven
      生命周期管理工具。它还带有一个用于集成项目事件的
      Web Service并在项目的size widget中增加了一个新的度量模块。

JDepend

1)JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,

它遍历Java class的文件目录,以Java包(package)为
   单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等
   的评价报告,根据这些报告,我们可以得到包或类之间的依赖关
   系,并分析出包的稳定程度,抽象程度,是否存在循环依耐关系等 。
   可以根据JDepend给出的报告数据,分析出我们的包是否是
   可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。
2)特点:
  1)评价设计质量
  2)翻转依赖性
  3)支持并行开发和极限编程
  4)独立的发布模块
  5)识别package的循环依赖
3)Depend生成的Java包的质量评价报告主要包括:    
  1)Number of Classes and Interfaces:实现类与抽象接口的数目
  2)Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口
   占整个包中的类的比重。
  3)Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外
    部包(类)的数目(i.e. incoming dependencies),该数值越大,
    说明该包的担当的职责越大,也就越稳定。
  4)Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目
   (i.e. outgoing dependencies),该数值越大, 说明该包越不独
    立(因为依赖了别的包),也越不稳定。
  5)Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于
    [0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
  6)Distance from the Main Sequence (D): 该指标主要用来评价包的抽象
    程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。
  7)Package Dependency Cycles:包的循环依赖度。

IBM Checking Tool for Bugs Errors and Mistakes(简称BEAM)
1) 定义:是 IBM 开发的一个静态分析工具,可以用于分析并查找出 C, C++ 和 Java

      

代码中的一些不容易发现的潜在错误,从而达到提高代码质量的目的。同动态
     分析工具和其它静态分析工具相比,它拥有一些可贵的特性。

   2)特点:
1)对代码进行语法扫描,通过算法对代码进行检查分析
2)和一些 bug 模式进行比较,最终标明问题区域,输出分析结果
3)使用了额外的定理证明(theorem proving)技术来判断一个潜在的错误是否

是真正的错误,从而减轻了程序员判断错误真伪所需的工作量

LDRA Testbed
1)定义:LDRA Testbed为应用软件的确认和验证提供强大的源代码测试和分析功能,

是独特的质量控制工具。 它有助于提高计算机软件必需的可靠性,健壮性和尽
可能的零缺陷,它的使用带来时间、成本和效率上真实的节省,这些都是无法衡
量其价值的。它是强大和完整的集成工具包,使先进的软件分析技术应用在开发生
命周期的关键阶段。

2)LDRA Testbed提供强大的分析功能,用于两个主要的测试领域,静态分析和动态分析。
1)静态分析: 分析代码,并且提供对代码结构的理解。
2)动态分析: 利用源代码的插装版本,使用测试数据执行,在运行时发现软件缺陷
3) 使用LDRA testbed 的好处
软件开发和测试过程的成本效率分析工具
单元、集成和系统测试的理想工具
贯穿于软件开发的整个生命周期

LDRA Testbed应用于许多不同的领域
过程改进
软件测试
软件维护

LDRA Testbed的优点:
改进软件质量
定位软件缺陷
强制执行工业标准
减少维护费用40%以上
减少开发和测试成本75%以上
通过自动化过程提高员工动力

Yasca
1) 定义:yasca是一个开源静态代码分析工具插件框架, 集成流行的多语言静态分析工

具如findbugs/pmd/jlint/rats/cppcheck,由于插件本身多样故可支持java
c++等语言静态分析.Yasca是一个用来寻找安全漏洞,在程序的源代码中检测代
码质量、性能以及一致性的软件。它集成了其他开源项目,其中包括FindBugs
 PMD ,JLint , Cppcheck ,并扫描某些文件类型,以及自定义扫描书面的

Yasca 这是一个命令行工具,与报告中生成的HTML , CSV格式, XML的,的
SQLite ,和其他格式。

[sonar@harbor docker]$ cat cmd 
# 运行postgres数据库
$ docker run --name postgresqldb --restart=always -p 5432:5432 \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=123456  \
-d postgres:9.6.23
 
# 进入postgres容器,创建用户名和密码
$ docker exec -it postgresqldb bash
 
# 登录数据库
psql -U root -W
# 创建用户名和密码
create user sonar with password 'sonar';
create database sonar owner sonar;
grant all privileges on database sonar to sonar;
 
# 不连接postgres数据库运行命令(不推荐)
docker run --name sonarqube --restart=always -p 9000:9000 -d naumy/hitrend-sonarqube:v1.0
 
# 运行sonarqube容器
docker run -d --name sonarqube --restart=always \
-p 9000:9000  \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-e sonar.jdbc.url=jdbc:postgresql://139.198.176.140:5432/sonar \
sonarqube:9.1.0-community

===========================
docker network create sonar-postgres
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p

db:
docker run --name postgres -d -p 5432:5432 --net sonar-postgres -v /service/server/sonarqube/postgresql:/var/lib/postgresql -v /service/server/sonarqube/postgresql/data:/var/lib/postgresql/data -v /etc/localtime:/etc/localtime:ro -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -e POSTGRES_DB=sonar -e TZ=Asia/Shanghai --restart always --privileged=true --network-alias postgres -d harbor.jettech.com/jettechtools/postgres:12


sonar:
[sonar@harbor docker]$ docker cp 30206598257c:/opt/sonarqube/conf /service/server/sonarqube/sonar/conf
[sonar@harbor docker]$ docker cp 30206598257c:/opt/sonarqube/extensions /service/server/sonarqube/sonar/extensions

[root@harbor ~]# chown -R 999.999 /service/server/sonarqube/sonar

docker run -d --name sonar -p 9000:9000 -e ALLOW_EMPTY_PASSWORD=yes -e SONARQUBE_DATABASE_USER=sonar -e SONAR_JDBC_USERNAME=sonar -e SONAR_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:postgresql://postgres:5432/sonar" --net sonar-postgres --privileged=true --restart always -v /service/server/sonarqube/sonar/logs:/opt/sonarqube/logs -v /service/server/sonarqube/sonar/conf:/opt/sonarqube/conf -v /service/server/sonarqube/sonar/data:/opt/sonarqube/data -v /service/server/sonarqube/sonar/extensions:/opt/sonarqube/extensions -d harbor.jettech.com/jettechtools/sonarqube:7.8-community

  docker-compose 方式  由于es需要非root权限启动 第一次启动完 chown -R 999.999 sorna目录在重新启动

[sonar@harbor docker]$ docker-compose -f sonarqube-compose.yml up -d

[sonar@harbor docker]$ cat sonarqube-compose.yml
version: "3"

services:
  sonarqube:
    image: harbor.jettech.com/jettechtools/sonarqube:7.8-community
    ports:
      - "9000:9000"
    depends_on:
      - db
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins

      #- /service/server/sonarqube/sonar/conf:/opt/sonarqube/conf
      #- /service/server/sonarqube/sonar/data:/opt/sonarqube/data
      #- /service/server/sonarqube/sonar/extensions:/opt/sonarqube/extensions
      #- /service/server/sonarqube/sonar/bundled-plugins:/opt/sonarqube/lib/bundled-plugins
      
  db:
    image: harbor.jettech.com/jettechtools/postgres:12
    networks:
      - sonarnet
    environment:
      TZ: Asia/Shanghai 
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql_data:/var/lib/postgresql/data
      #- /service/server/sonarqube/db/postgresql/data:/var/lib/postgresql/data


networks:
  sonarnet:
    driver: "bridge"

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_bundled-plugins:
  postgresql_data:

集成findbugs插件

1.在线安装:配置—应用市场—findbugs—安装

2.在线安装不成功也可进行离线安装

  1. 插件git地址:https://github.com/spotbugs/sonar-findbugs/
  2. 下载特定版本,虽然都有说明支持 7.6 以上,但是我试了最新版好像有问题,就一个一个往下测试.最终找到 这个版本比较契合…

(1)先下载 sonar-java-plugin

下载地址:https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.12.1.17771.jar

(2)下载sonar-findbugs.jar 

下载地址[root@harbor plugins]# wget https://github.com/spotbugs/sonar-findbugs/releases/download/3.10.0/sonar-findbugs-plugin-3.10.0.jar

按照

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第1张图片

将sonar-findbugs-plugin.jar 放入**\sonarqube-7.8\extensions\plugins 文件夹下,重启sonarQube服务

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第2张图片

 此时,SonarQube的默认检测规则变为Findbugs Security Audit

使用

方式一

插件设为默认

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第3张图片

方式二

创建聚合规则

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第4张图片

 这里也是两种方式,这里只演示第一种,继承的方式比较简单这里就不过多介绍

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第5张图片

 这里我们点击更多激活规则sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第6张图片

将 findBugs 添加到 聚合规则 中

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第7张图片

 添加规则

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第8张图片

后续

点击应用即可

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第9张图片

 通过这种方式我们已经将我们所需要聚合的规则添加进来了,点击 齿轮 设置为默认即可
为什么要这么做,因为这个还可以继续将其他的规则也添加到一起,这样就形成了一个聚合的规则,然后将当前规则设置为默认即可,这样就包含了N多规则
例如:我们的项目要求就是 FindBugs+Sonar way(系统默认)+P3C(阿里)+PMD(开源代码检测工具)

P3C和PMD安装:

SonarQube-插件-离线安装PMD+阿里P3C_森林猿的博客-CSDN博客_sonar-pmd-p3c

下载

  1. 插件仓库地址 https://github.com/caowenliang/sonar-pmd-p3c
  2. 克隆下载
  3. 执行 mvn clean install -Dmaven.test.skip=true

说明

  1. 在执行 mvn clean install -Dmaven.test.skip=true 如果报错了将 settings.xml的镜像都去掉,使用默认仓库
  2. 将 pom 里面的 8000000修改为 10000000
  3. 安装插件

    就是将编译好的 jar 包,复制到 ***\sonarqube-8.6\sonarqube-7.8\extensions\plugins下面即可sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第10张图片

P3C使用


建议先看一下这篇文章… https://blog.csdn.net/vistaed/article/details/114175398

  1. 搜索P3C
  2. 点击 批量修改
  3. 活动 聚合规则 或者 点击 活动
  4. 点击 应用

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第11张图片

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第12张图片

查看是否应用成功

原来是 findBugs的 规则,现在又添加了 P3C的支持~~~

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第13张图片

PMD 使用

  1. 点击资源
  2. 点击PMD
  3. 点击批量修改
  4. 点击活动
  5. 点击应用

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第14张图片

使用

执行: sonar-scanner

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


[root@localhost sonar-scanner]# cat conf/sonar-scanner.properties 
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
#sonar.host.url=http://localhost:9000

#----- Default source code encoding
#sonar.sourceEncoding=UTF-8

sonar.host.url=http://172.16.10.1:9000
sonar.login=admin
sonar.password=123456aA
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.libraries=/home/sonar/lombok.jar 
sonar.sources=src
sonar.java.binaries=target/classes
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://172.16.10.1:5432/sonar?currentSchema=public


[root@localhost sonar-scanner]# cat /etc/profile
SONAR_SCANNER_HOME=/var/jenkins_home/base/sonar-scanner
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}




lombok:  

项目里面:

[root@localhost jettoloader-eureka]# ls
docker  pom.xml  sonar-project.properties  src  target
[root@localhost jettoloader-eureka]# pwd
/opt/work/jenkins/data/workspace/jettoloader-eureka
[root@localhost jettoloader-eureka]# cat sonar-project.properties 
# 项目的key唯一不重复即可  项目Key,需要唯一,建议使用GroupId+ArtifactId
sonar.host.url=http://172.16.10.1:9000
sonar.login=admin
sonar.password=123456aA
#sonar.branch.name=develop
#sonar.dynamicAnalysis=reuseReports
#sonar.coverage.jacoco.xmlReportPatchs=
#sonar.java.coveragePlugin=
#sonar.java.imclusions=
#sonar.exclusions=
sonar.java.libraries=/var/jenkins_home/base/sonar-scanner/lombok.jar
sonar.projectKey=com.jettech.jettoloader.jettoloader-eureka
# 项目的名字  项目名称,跟ArtifactId保持一致即可
sonar.projectName=jettoloader-eureka
# 项目的版本  项目版本,跟pom.xml保持一致即可
sonar.projectVsersion=develop
# 需要分析的源码的目录,多个目录用英文逗号隔开 源码目录,Java项目默认就是src,如果项目有多个module,那就需要配置为{moduleDirectory}/src
sonar.sources=src 
# sonarQube扫描的对象是.class而不是.java文件  编译产出的classes目录,如果项目有多个module,那就需要配置为{moduleDirectory}/target/classes
sonar.java.binaries=target/classes 
# 解析的开发语言,如果需要解析其他语言,需要下载对应的插件 
sonar.language=java 
#编码格式 
sonar.sourceEncoding=UTF-8




#项目结构
#-admin
#  --core
#  --service
#  --web
#  pom.xml
#  README.md
#  sonar-project.properties
 
 
#sonar-project.properties 内容
#sonar.projectKey=admin
#sonar.projectName=admin
#sonar.sources=core/src,service/src,web/src
#sonar.java.binaries=core,service,web
#https://blog.csdn.net/u014756339/article/details/112328930




[root@localhost jettoloader-eureka]# sonar-scanner

或者
/var/jenkins_home/base/sonar-scanner/bin/sonar-scanner scan -X -Dsonar.host.url=http://172.16.10.1:9000  -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=src -Dsonar.language=java -Dsonar.login=admin -Dsonar.projectVersion=develop -Dsonar.java.binaries=target/classes -Dsonar.projectKey=jettoloader-eureka -Dsonar.password=******** -Dsonar.projectName=jettoloader-eureka -Dsonar.projectBaseDir=/opt/work/jenkins/data/workspace/jettoloader-eureka

jenkins集成:

服务端:

 认证:token是sonar生成的tokensonarqube7.8代码检查+gitlab+postgres12集成jenkins_第15张图片

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第16张图片

客户端也就是sonar-scan

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第17张图片

具体项目配置

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第18张图片

 sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第19张图片

sonar.login=admin
sonar.password=123456aA
sonar.projectKey=${JOB_NAME}
sonar.projectName=${JOB_NAME}
sonar.projectVersion=${BRANCH}
sonar.language=java
sonar.projectBaseDir=${WORKSPACE}/${JOB_NAME}/
sonar.sources=src
sonar.java.binaries=target/classes
sonar.sourceEncoding=UTF-8

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第20张图片

sonarqube7.8代码检查+gitlab+postgres12集成jenkins_第21张图片

参考:

SonarQube -插件-离线安装-FindBugs_森林猿的博客-CSDN博客_sonarqube 安装findbugs

https://blog.csdn.net/u013600907/article/details/120501952

Docker安装SonarQube_naumy的博客-CSDN博客    gitlib-ci

gitlaib+gitlib-runnner

jenkins+agent

gitlib-runnner:类似agent

你可能感兴趣的:(docker,容器,运维)