云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站服务器_冰山互联云主机_最新活动

小七 141 0

SAP社区版主注意:此博客文章已过时。SAP Cloud SDK for Continuous Delivery及其特性已合并到项目"Piper"中。因此,我们建议使用"Piper"项目的通用管道,而不是SAP Cloud SDK管道。这种变化的原因,以及关于如何采用通用管道的更多信息,请参见本指南。

-------------------------------------------

本博客文章将指导您完成SAP Cloud SDK管道作为应用程序的一部分执行的静态代码检查持续集成和交付(CI-CD)过程。

注:本帖是系列文章的一部分。有关完整的概述,请访问SAP Cloud SDK概述。

本文的目标

在本文结束时,您将对静态代码检查阶段和所涉及的配置进行概述。您还应该能够分析日志并确定管道执行失败的原因。

本教程将涵盖以下方面

静态代码检查简介

分析源代码以检测错误和漏洞是软件开发生命周期(SDLC)中的一个重要阶段。在SDLC的早期阶段检测到的bug比在后期阶段识别的bug(例如在生产环境中识别的bug)更容易修复。静态代码分析和动态代码分析是企业软件开发中两种广泛使用的代码分析技术。

静态代码检查是一种系统地检查应用程序代码库的方法,用于识别运行时可能出现的潜在错误。它可以在源代码上执行,也可以在编译后生成的二进制文件上执行。静态代码检查以其白盒可见性可以分析整个应用程序,并在执行应用程序之前检测到错误。

另一方面,什么叫大数据,动态代码分析工具用于分析已经处于运行状态的系统,它可以识别对于静态代码分析来说过于复杂的错误。但是,动态代码分析的范围仅限于处于执行状态的代码块。

CI-CD中的静态代码检查阶段

SAP Cloud SDK管道执行应用程序代码的静态代码检查,以实现可交付工件的最高质量。这与单元和集成测试阶段并行执行,如下图所示。这一阶段目前借助于两个广泛使用的静态代码分析软件FindBugs和PMD来检查代码库。以下章节将在SAP Cloud SDK管道上下文中详细说明此软件的配置。

为什么同时使用FindBugs和PMD?

PMD在源代码级别执行静态代码分析,而FindBugs使用字节码进行分析。PMD可以识别诸如使用==而不是equals之类的问题,而FindBugs可以帮助识别equals方法的不当实现。尽管如此,FindBugs和PMD在报告几个问题上存在重叠,但它们在很大程度上是相辅相成的。因此,SAP Cloud SDK Pipeline利用了这两种工具的功能。

FindBugs的静态代码检查

FindBugs是一个开源软件,它对Java程序执行静态代码分析以识别bug。您可以使用命令行界面(CLI)或借助maven插件对源代码运行FindBugs。FindBugs还可以与大多数常用IDE集成,并作为附加插件与Jenkins集成。

在使用由cx服务器脚本设置的Jenkins服务器时,已经为您安装了FindBugs插件。但是,如果您使用的是不同的Jenkins服务器,那么在执行SAP Cloud SDK Pipeline之前需要安装FindBugs插件。

FindBugs可以作为maven目标在本地执行,在您的项目根目录中使用以下命令。这将在目标目录下生成一个名为findbugsXml.xml文件.

FIndBugs也可以定制为在分析过程中包含或白名单的一些错误。这可以通过作为参数提供的过滤器文件来实现。

SAP Cloud SDK管道在静态代码检查期间执行FindBugs插件。管道使用的include filter文件可以在这里找到,单个过滤器的bug描述可以在这里找到。sapcloudsdk管道对主要bug的容忍度为零,因此如果代码中有任何主要bug或多达10个次要bug,秒单客返利机器人,那么管道的执行将被标记为失败。您将在Cx服务器的作业面板上看到FindBugs趋势图。图中直观的红线表示主要错误,物联网展,黄线表示次要错误。

发现任何主要错误时的管道执行日志可能类似于以下内容。

故障排除

一旦FindBugs报告任何错误,通过单击FindBugs趋势图,可以获得有关文件和导致检查失败的代码块的更多详细信息。单击图形后,您将被导航到如下图所示的详细视图。

单击源文件名查看警告原因和需要修复的源代码。

修复错误后,一个成功的FindBugs分析日志如下所示。

配置

SAP Cloud SDK Pipeline不需要在项目级别进行配置即可执行FindBugs。但是,如果FindBugs标识的bug必须在您的项目中以不同的优先级重新分类,那么您可以将其配置为Exclude filter的一部分。FindBugs排除过滤器文件示例排除过滤器.xmlis如下图所示。

一旦您创建了这样一个排除过滤器文件,请配置您的管道_配置yml通过在steps块中添加下面的配置文件。

通过PMD检查静态代码