@abap2ui5/linter

中文文档
0.9.0发布于 2026/10/14MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 4653

在没有SAP系统的情况下验证 abap2UI5 应用类:ABAP及其所构建的视图,一起检查.

中文使用文档
文档目录7 节
  1. 文档
  2. 可移植应用程序( opt- in)
  3. 旧目标上无遗留密码
  4. 它运行的地方
  5. 用于
  6. 研究此存储库
  7. 贷项

abap2UI5 插头

验证没有 SAP 系统的 abap2UI5 应用类 国家综合倡议、图书馆和 GitHub 动作取自 样本控制,其中,他们 保护生成的 UI5 演示包样本的端口( 有多少个在其中 ) 那个仓库的 状况 —— 说 它每周增长, 和一个数字 写在这里是一个数字去停滞.

它检查一个 整个应用类,而不仅仅是它发出的XML:ABAP源和 它所建的视图被验证在一起。 最重要的缺陷是 生活在两者之间者——其ABAP领域不包含的有约束属性 已存在, 控件从不提供的事件参数—— 且 UI5 工具无法 看他们,因为视图只在运行时存在.

npx @abap2ui5/linter src

这就是它的全部:没有安装,没有SAP系统,没有配置。 ~600 kB 键 并且没有依附关系,所以上面的行是快的.

src/zcl_my_app.clas.abap
  36:14  error  sap.m.Page has no aggregation contentt - typo?                       unknown-aggregation
  40:22  error  sap.m.Button type="Emphasised" is not a valid value (allowed: ...)   invalid-property-value

然后,当你想要它保持绿色:

npm install -D @abap2ui5/linter                     # pin it for CI and for your machine
npx --no-install abap2ui5lint --init                # write a commented abap2ui5lint.jsonc
npx --no-install abap2ui5lint src --all-classes     # every class: the ones that build no view get the source-side rules
npx --no-install abap2ui5lint src --watch           # run, then re-run on every save - the loop for Eclipse ADT + abapGit
npx --no-install abap2ui5lint --explain unknown-control   # what a reported id means, with the before/after pair - in the terminal

--no-install 故意: abap2ui5lint 是命令软件包 安装,而不是软件包名称,以及空的 npx abap2ui5lint 运行在哪里 不安装软件包将下载以该名称发布的任何内容 时间npm。 没有安装, 请使用范围 npx @abap2ui5/linter …。 。 。 .

文档

→ 圆柱形,满地都是 两道门和每道门都捕到什么, --screenshot, (中文(简体) ), --fix放弃, 在已有的编码库上通过该编码的基线 文件、 GitHub 动作、 徽章和库 API.

→ 规则参考 每一个规则 id与 解释其含义和存在原因的段落。 身份证印在 发现的结尾是锚.

另外两个切入点:

添加渲染门npm i -D @abap2ui5/linter-render + 键 npx playwright install chromium - 无头人 XMLView.create 捕捉到一个无法 装入
启动项目已连接的CLI、配置和工作流程

可移植应用程序( opt- in)

Abap2UI5应用在UI5前端运行,无论它写什么. 留着它 可由 非UI5 前端 以及——UI5网络组件前端 (单位:千美元)前端网络组件, (中文(简体) ), 适配出卡制造器、代理设备——要求 portable-app 规则:

// abap2ui5lint.jsonc
{
  "rules": { "portable-app": "error" }   // or "warning" / "hint"; off by default
}

它报告Abap2UI5协议之外的一切 便携式配置文件 v1数字 : - 控制及其未列出的成员, z2ui5.cc 自定义控件, 名称 模型和其他约束形式,表达体构造在其语法之外 (单位:千美元)RegExp, (中文(简体) ), odata.*),事件参数,例如 $event前端动作 例如 CONTROL_BY_ID,以及嵌入式取景槽(nest_view_display( )) (中文(简体) ). 每个发现名称的原因 规则卡 全部列出 该简介为协议的逐字记录 profiles/portable-v1.json 内 data/ (它的源头在它的旁边), 刷新过 npm run sync-portable-profile一个类选择退出 " abap2ui5lint-disable portable-app 在它的顶端, 一条道路与规则的 exclude 列表中选择一个选项.

旧目标上无遗留密码

ui5 是您系统运行的释放,一旦被损坏就会报告 在那里是有效的—— 右“ 将这一个休息”, 沉默的"是这个" 遗产。 维持在1.71的应用软件 这样它仍然可以运行在旧系统上 以 SAP 的无后遗症基线衡量,并附带第二个约束:

// abap2ui5lint.jsonc
{
  "ui5": "1.71",
  "deprecatedAt": "1.136"   // or --deprecated-at 1.136
}

一切在目标之后和地平线上被破坏的事物——控制, 他们的地产和事件,以及本地的XHTML/SVG标记——然后是一个 deprecated-after-target 提示替换对象的姓名, 并显示目标是否已经存在 (单位:千美元)sap.m.MessagePage → IllustratedMessage,这需要1.98:保持到 目标移动。 所有其他规则 仍然法官反对 ui5。 。 。 .

它运行的地方

CLI, 一个 GitHub 动作(abap2UI5/linter@v0图书馆——加两个 该图书馆的消费者: mcp 服务器 暴露这些门是MCP 用于 AI 编码代理工具,以及 VS 代码扩展 显示 输入时作为编辑器诊断结果。 他们都读的一样 abap2ui5lint.jsonc所以编辑、探员和CI都同意.

用于

11个公共仓库 声明 @abap2ui5/linter 在一个明显的地方 GitHub 自己的列表,每月在此刷新一次 :

仅a 显示 条目在此计算——这就是 GitHub 的依赖性 图表可见. 运行插件的仓库 npx --yes 或 动作是一个用户,但从未在此列表中出现.

研究此存储库

npm ci
npx playwright install chromium   # the render runtime is an npm workspace here
node cli.mjs test/fixtures --no-render   # the CLI, from the checkout, over its own fixtures
node cli.mjs ../your-app/src             # or over a sibling app (this checkout has no src/)
npm test

AGENTS.md 携带公约和每个大门检查的东西; CONTRIBUTING.md 财务报告和审定财务报表 RELEASING.md 其余的工作流程.

四件工艺品由 npm test所以一个僵硬的失败了 构建 :

npm run generate-metadata    # data/properties.json, from the @openui5 sources
npm run generate-schema      # data/abap2ui5lint.schema.json — editor completion
npm run generate-rules-page  # site/index.html — the published rule reference
npm run generate-compat      # data/compat.json — which abap2UI5 releases this linter line understands (the ./compat export)

另外两台发电机需要网络,所以套房无法再生它们 所承诺的文件是合同; 计划的工作流程将每个更新 打开 diff 的 PR :

npm run generate-icons       # data/icons.json — the SAP icon-font snapshot
npm run generate-dependents  # the "Used by" list above, from GitHub's dependents page

一个文件是从另一个仓库销售而不是生成的,而且 协议移动时手动刷新( u)npm test 针起它的花序 每周上游同步工作流程报告漂移情况 :

npm run sync-portable-profile   # data/portable-v1.json — abap2UI5/protocol's portable profile (-- --local <checkout> to read a clone)

site/ 规则参考文献 https://abap2ui5.github.io/linter/ (中文(简体) )),而不是关于此寄存器的文档.

experimental/github-app/ 是一个尖锐的柱子——一个工作原型,作为iinter的一个 主机为 GitHub App, 保存为恰好执行的文档 。 没错 没有 已部署、未登记、未在npm上发运且未支持交付 频道有CLI,库和Action.

贷项

重建、模拟模型的衍生、利用和财产大门 建造和试验 样本控制 与官方的UI5示范套装设备——其中 scripts/view-gates.mjs 现在消耗这个软件包 取出这些原始的大门. 这个包裹是独立提取的.

版本与发布记录

@abap2ui5/linter 共发布 20 个版本,首次发布于 2026/08/15;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.0latest2026/10/1424 天前
0.8.52026/10/011 个月前
0.8.42026/09/301 个月前
0.8.32026/09/281 个月前
0.8.22026/09/281 个月前
0.8.12026/09/271 个月前

关于 @abap2ui5/linter 的常见问题

@abap2ui5/linter 是什么?

在没有SAP系统的情况下验证 abap2UI5 应用类:ABAP及其所构建的视图,一起检查.

如何安装 @abap2ui5/linter?

在项目目录运行 npm install @abap2ui5/linter,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 abap2ui5lint、abap2ui5-lint,可以用 npx abap2ui5lint 直接运行。

@abap2ui5/linter 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@abap2ui5/linter 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@abap2ui5/linter 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@abap2ui5/linter 可以商用吗?

@abap2ui5/linter 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@abap2ui5/linter 的下载量有多少?

根据 npm 官方下载统计,@abap2ui5/linter 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,653 次,日均约 155 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@abap2ui5/linter 还在维护吗?

最新版本 0.9.0 发布于 2026/10/14(24 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/08/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。