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

专属服务器_重庆网站建设服务_试用

小七 141 0

圣诞快乐!

这篇文章不是直接关于ABAP,云服务器服务器,而是关于它周围的工具。你可能知道Lars Hvam写的abapGit(问候!)。你也可能从他那里知道另一个叫做abaplint的工具——静态代码分析器。简言之,它是一种SCI,但用javascript编写,因此可以在SAP系统之外运行。我将不详细描述abaplint本身。你可以在SCN上搜索几个帖子,也可以访问产品的主页。这篇文章是关于使用CI工具自动运行it的。

由于abapGit的可用性,越来越多的CI场景成为ABAP的可能。在git存储库中保存ABAP代码慢慢成为主流。以及围绕它的不同CI(持续集成)场景。其中一个场景是abaplint提供的自动代码检查。

让我们关注两个流行的git提供商-Github和Gitlab。

Github广泛用于开源。最近,开放源码ABAP包的兴起(多亏了abapGit)。开源项目对每个人都是开放的,大数据开发平台,但是如何确保项目的编码风格保持统一。像变量命名约定、缩进、关键字大小写等,这可以通过自动CI脚本得到很大的帮助,自动CI脚本将为参与者的每个请求运行。

Gitlab更面向企业。它支持免费的私有存储库,也可以在本地安装。这使它成为愿意接受现代开发实践并从中受益的团队和公司的本地git系统角色的一个很好的候选人。

在这篇文章中,我将分享如何在两个提供商中为您的存储库自动运行Abalint的示例配置。

Github

首先让我们从Github开始。服务本身没有CI功能,您必须使用外部功能。最受欢迎的可能是特拉维斯。假设您有一个包含一些代码的存储库。示例github回购可以在这里找到。

2。在Travis中创建一个帐户并将其链接到您的Github帐户。如果你没有它-所有你需要去的https://travis-ci.org(或更好)https://travis-ci.com,请参见底部的UPD2),然后按sign-in with Github。它将要求授权Travis对您的代码进行某些操作和监视—您可以允许它—这就是Travis自动发现对您的存储库的更改并使其成为工作的方式。

在您的Github帐户中,您可以在您的帐户设置—应用程序设置中看到此连接。如果您以后想停止访问,您可以在这里撤消访问。

Travis将自动找到您的所有存储库,并建议选择要为其进行CI构建的存储库。但我们先准备回购文件。为了为您的存储库运行一个插件,您必须在那里添加两个额外的文件。

abaplint.json文件–abaplint的配置,以便它知道要检查什么。一些文档可以在abaplint主页上找到。但让我们关注我们的例子。给定的规则是检查:缩进、大写关键字和行的最大长度(有更多可用的规则,但为了简单起见,让我们关注这些规则)。

让我们也考虑我们的存储库文件。它有一个程序和一个include。Include包含这个代码

,如果你仔细看,你会发现有两个违反了上面定义的规则:value关键字小写,方法代码缩进错误(开头只有一个空格)。这将在我们的测试场景中找到。请继续关注。

第二个要添加到回购的文件是。特拉维斯·伊梅尔–这是Travis的配置,因此它知道如何检查代码。

简而言之,它指定:

为了运行它使用的检查节点.js环境。Abaplint是用javascript编写的(更确切地说是typescript,一元云购下载,但对于示例来说并不重要)Travis不会在支票上发送电子邮件(或者也许你想要-然后设置为真)在启动脚本之前,它将使用节点包管理器(npm)全局安装abapletcheck脚本本身只包含一个命令abaplint,它运行在存储库中"src"文件夹的所有子目录中的所有文件上检查只针对主分支执行(因此在其他分支中编写草稿代码不会产生恼人的错误)

4。在您将上述文件提交到存储库之后,让我们回到在第2点离开的Travis配置页面。它列出了您的所有存储库,并允许您为每个存储库分别启用Travis。让我们为我们的存储库执行此操作

让我们仔细检查设置

对于我们的示例,这里没有任何可更改的内容,但是需要注意的一个设置-生成推拉请求-在上面,我们将检查仅限于主分支。拉取请求怎么样?他们还不是主人!此设置强制Travis build将请求拉入主控,尽管配置文件中未明确提及这些请求。

这些都是设置!现在试着把某个东西直接推到存储库的主目录下布兰奇。特拉维斯自动查看新的主推送并根据配置文件运行作业。您可以在构建历史选项卡中找到它。

构建已按预期失败。让我们检查一下细节

日志显示脚本的输出和abaplet消息。您可以看到检测到错误的文件和行。

好的,但是总是去Travis站点查看结果似乎不是很方便,我应该总是这样做吗?不完全正确。