Jenkins+maven+findbugs对java代码进行静态代码分析

2023-10-27

一、POM.xml的修改

1、  在build里面配置:

 

代码如下:

                     <plugin>

                                   <groupId>org.codehaus.mojo</groupId>

                                   <artifactId>findbugs-maven-plugin</artifactId>

                                   <version>3.0.1</version>

                                   <configuration>

                                   <threshold>High</threshold>

                                   <effort>Default</effort>

                                   <findbugsXmlOutput>true</findbugsXmlOutput>

                                   <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                                   <xmlOutput>true</xmlOutput>

                                   <findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>

                                   </configuration>

                     </plugin>

2、  在report里面配置:

 

代码如下:

<reporting>

        <plugins>

               <plugin>

                      <groupId>org.codehaus.mojo</groupId>

                      <artifactId>findbugs-maven-plugin</artifactId>

                      <version>3.0.1</version>

                      <configuration>

                      <xmlOutput>true</xmlOutput>

                      <!-- Optional directoryto put findbugs xdoc xml report -->

                      <!--<xmlOutputDirectory>target/site</xmlOutputDirectory>-->

                      <findbugsXmlOutput>true</findbugsXmlOutput>

                      <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                      </configuration>

               </plugin>

        </plugins>

</reporting>

二、JOB的配置

1、安装插件findbugs-plug-in

 

2、新建job

 

3、  配置svn

 

4、配置Invoke top-level Maven targets

5、添加PublishFindBugs analysis results,可以默认配置也可以修改相关配置。

 

三、结果的查看

1、构建job

2、查看结果

 

点击查看具体问题

 

 

 

运行多次后会生成趋势图

 

 

四、问题备注

问题1、使用findbugs:findbugs后不能检查到问题

indbugs虽然是一个静态分析工具,但是它分析的不是java源代码(后缀名为.java),而是class文件(编译后的文件)。在运行mvn findbugs:findbugs 时,不会自动编译项目,即没有class文件,所以findbugs没有运行。

有的技术博客说:“cleanfindbugs:findbugs install ,这种写法是错的,可以运行的,但是并不产生findbugs报告”,说法是对的,但是并没有说明原因。

原因:运行clean后,class文件都被删除了,所以不会运行findbugs,或者说findbugs没有可分析的class文件,自然就没有产生分析结果。

使用maven运行findbugs前一定先编译,一定要有class文件!

解决方法:

(1)mvnclean compile findbugs:findbugs

(2)mvnclean test findbugs:findbugs (test会调用compile生命周期)

如下图:

2、配置了findbugs后不能生成报告

       编译并执行findbugs命令时发现20个问题

 

但是Jenkins获取到0个错误

 

解决方法:

       注释reporting里面的<xmlOutputDirectory>。

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

Jenkins+maven+findbugs对java代码进行静态代码分析 的相关文章

  • jbehave 与 jenkins 的集成

    我必须将 jbehave 与 jenkins 集成 但我不知道该怎么做 我看到我必须在 Jenkins 中创建一个任务 但我不知道应该在哪里连接 jbehave 与此任务 有人可以帮助我吗 Thanks Sarang 所以我假设您已将 JB
  • 如何通过 JSON / JS 在 Jenkins 中添加 CSRF 面包屑

    我想在 Jenkins 中通过 API 创建作业 但无法连接 Jenkins 中的 CSRF 保护课程 我得到了一个面包屑 但不知道如何将其附加到 JSON 或 JavaScript 中的 url 请求 以通过 POST 方法获取数据传递
  • Jenkins 管道阶段 - 传递整个文件

    运行包含多个节点的阶段的 Jenkins 管道 基于 Groovy 我需要将 stageA 上的 NodeA 上的某个文件的列表传递到 StageB 上的 NodeB 在 stageA NodeA 我运行 DEVenv readFile s
  • 如何在 Jenkinsfile 中将 Artifactory DiscardOldBuilds 设置为 true?

    我正在努力使用 Jenkins 多分支管道来实现构建作业 最后阶段是将构建输出上传到 Artifactory 通过界面配置独立作业时 有一个选项 丢弃来自 Artifactory 的旧构建 这允许我仅保留 要保留的最大构建数 设置中指定的相
  • 如何在 Subversion 的多模块 Maven 构建中触发单个模块的 Jenkins 构建?

    我在 Jenkins 中设置了一个大型 Maven 多模块构建 它是为增量构建而设置的 当触发时 它会解析所有 POM 并找出需要构建的内容 它当前设置为在 SCM 更改时触发 我想进行此构建 以便我可以执行以下操作 还是手动启动吧 当我这
  • 我如何才能获得 Jenkins 的工作范围凭证?

    首先抱歉 如果这个问题及其解决方案存在于某处 但我找不到它 我希望能够在工作中创建凭证 并且只能在该工作中使用 这是一种工作范围凭证 目前 凭证插件仅建议全局和系统范围 因此凭证可用于所有作业 凭据绑定插件似乎也没有解决我的问题 但公平地说
  • 如何仅在特定错误退出值(0 除外)上将 Jenkins 构建标记为成功?

    当我运行Execute shell构建步骤来执行脚本并且该脚本返回0 Jenkins将构建标记为SUCCESS 否则它将其标记为FAILURE这是预期的默认行为0表示没有错误 任何其他值表示有错误 有没有办法将构建标记为SUCCESS仅当返
  • Jenkins 管道构建如何确定工作区文件夹?

    在 Jenkins 管道中 当在特定节点上运行构建时 会在该代理上分配工作空间 我们没有设置工作空间路径 因此它是自动确定的 据我了解 当同一作业在同一代理上同时运行时 工作区必须包含执行程序编号以隔离构建 但是 工作空间路径到底是如何构建
  • Jenkins 管道作业无法在 UI 中完成

    目前的问题是詹金斯管道作业确实运行并正常完成 但在 UI 中 该工作会一直保留 直到我们通过 UI 中止他 这种情况并不常见 大概只占 5 的工作岗位 这可能是詹金斯错误 重新加载配置问题或只是节点上的流量太大 我真的不确定 由于所有 有问
  • Jenkins - 配置 Jenkins 以轮询 SCM 中的更改

    我正在与 jenkins 合作 当 svn 存储库发生更改时 我想运行 Maven 目标 我附上了一张我当前配置的图片 我知道每 5 分钟检查一次存储库是疯狂的 我想只有当有新的变化时才运行它 但我找不到方法 无论如何 它不会检查存储库 我
  • 仅运行相应源代码已更改的单元测试?

    我正在 Jenkins CI 服务器中运行单元测试和 Selenium 测试 众所周知 在大型项目中测试需要很长时间才能运行 Java 是否有一个工具 框架只能触发其源代码已更改的测试 这是因为并非每次对 SCM 的提交都会影响源代码的所有
  • javax.annotation.Nonnull 与断言

    我在方法参数上使用 Findbugs 和 javax annotation Nonnull 在私有方法上 我通常添加一个断言行来检查是否为空 例如 private void myMethod Nonnull String str asser
  • 代码分析器:PMD 和 FindBugs

    1 关于PMD 1 1 如何设置 PMD 检查 以忽略其中一些检查 例如 变量名称太短或太长 删除空构造函数等 如果我这样做 则会出现另一个警告 指出该类必须有一些静态方法 基本上 该类是空的 以供以后开发 我喜欢暂时保留这种状态 1 2
  • Jenkins 脚本化管道或声明式管道

    我正在尝试将旧式项目基础工作流程转换为基于 Jenkins 的管道 在经历的同时docs https jenkins io doc book pipeline 我发现有两种不同的语法名为scripted and declarative 比如
  • Tomcat:模块版本冲突。模块 [groovy-all 已在版本 2.3.7 中加载,而您正在尝试加载版本 2.4.3

    我有一个 jenkins 构建服务器来构建我的 grails 项目 我最近更新到 grails 2 5 0 和 groovy comiler 2 4 3 到目前为止 一切都很好 詹金斯再次发动战争 但是当我在 Tomcat 上部署战争时 出
  • Spotbugs 在 gradle 项目中排除过滤器

    我是 gradle 新手 正在尝试配置 Spotbugs 我已将该插件添加到 build gradle 中 并且出现了 Spotbugs 问题 不过 我想排除 Findbugs EI EXPOSE REP 和 EI EXPOSE REP2
  • Jenkins Amazon ECR:没有基本的身份验证凭据

    我无法使用 Jenkins Pipeline 将 ocker 图像推送到 Amazon ECR 我总是得到no basic auth credentials 这是我的设置 詹金斯 2 46 2 亚马逊 ECR 插件 1 4 https wi
  • tmatesoft.svn.core.SVNAuthenticationException:svn:E170001

    我们正在一个遗留项目 maven 中工作来设置devop 詹金斯首发 Jenkins 构建现在没有问题 但是 在将 sonarqube 与 jenkins 集成时 我们收到以下错误 ERROR Error during SonarQube
  • 如何将文件参数传递给詹金斯管道中的另一个构建作业?

    如何将当前工作区中的文件作为参数传递给构建作业 例如 build job other project parameters class FileParameterValue 真是一场噩梦 没有文档 查看了詹金斯代码等 尝试了一切 最后发现这
  • Gitlab 合并请求事件不触发 Jenkins 多分支管道

    我正在尝试在合并请求事件上使用 GitLab Webhook 触发 Jenkins 多分支管道作业 当我测试 Webhook 时 我收到以下消息 Hook 执行成功但返回 HTTP 409 当我设置不同的 GitLab Webhook 例如

随机推荐