@abapify/adt-atc (中文(简体) )
ABAP 测试锁舱( ATC) CLI 插件 @abapify/adt-cli。 。 。 .
安装
npm install @abapify/adt-atc
使用量
作为 CLI 插件
添加到您的 adt.config.ts数字 :
export default {
commands: ['@abapify/adt-atc/commands/atc'],
};
然后使用命令 :
# Run ATC on a transport
adt atc -t TRLK942970
# Run ATC on a package
adt atc -p ZMY_PACKAGE
# Run ATC on a specific object
adt atc -o /sap/bc/adt/oo/classes/zcl_my_class
# Output as SARIF (for GitHub Code Scanning)
adt atc -t TRLK942970 --format sarif --output atc-results.sarif
# Output as GitLab Code Quality
adt atc -t TRLK942970 --format gitlab --output gl-code-quality.json
选项
| 选项 | 说明 |
|---|---|
-p, --package <package> | 在软件包上运行 ATC |
-o, --object <uri> | 在特定对象上运行 ATC |
-t, --transport <transport> | 根据运输请求运行 ATC |
--variant <variant> | ATC 检查变体( 默认: 从系统自定义) |
--max-results <number> | 最大结果数( 默认: 100) |
--format <format> | 输出格式:控制台、json、gitlab、sarif |
--output <file> | 输出文件( gitlab/ sarif 格式需要) |
--resolver <name> | 解析报告路径( 内置 : abapgit(中文(简体) ) |
程序用途
import {
atcCommand,
outputSarifReport,
outputGitLabCodeQuality,
} from '@abapify/adt-atc';
import type { AtcResult, AtcFinding } from '@abapify/adt-atc';
// Use the formatters directly
const result: AtcResult = {
checkVariant: 'DEFAULT',
totalFindings: 1,
errorCount: 0,
warningCount: 1,
infoCount: 0,
findings: [
{
checkId: 'CL_CI_TEST_SELECT',
checkTitle: 'Analysis of WHERE Condition for SELECT',
messageId: '001',
priority: 2,
messageText: 'Table SFLIGHT: No WHERE condition',
objectUri: '/sap/bc/adt/oo/classes/zcl_my_class',
objectType: 'CLAS',
objectName: 'ZCL_MY_CLASS',
location: '/sap/bc/adt/oo/classes/zcl_my_class/source/main#start=10,0',
// Optional: resolved by the atc command from the run's check variant
// form template (check categories are best-effort enrichment)
checkCategory: 'CI_PERFORMANCE',
},
],
};
await outputSarifReport(result, 'atc-results.sarif');
await outputGitLabCodeQuality(result, 'gl-code-quality.json');
检查类别
每一个发现可以携带一个 checkCategory (例如, CI_PERFORMANCE, (中文(简体) ),
CI_SECURITY: ATC 检查类别的名称 :
改为: 这个 atc 命令从运行的检查中自动解决
变体形式模板( e)GET /sap/bc/adt/atc/checkvariants/formtemplate(中文(简体) )
解决每个结果的文档页到其执行类
(工作清单) checkId 是一个 GUID,然后将该类映射到一个类别.
这个 enrichResultWithCategories 帮助者只做直接 checkId 查询;
命令使用文档桥进行正常的工作列表结果.
这是最佳效果: 缺少模板、 无法读取的页面或未编目
检查让分类未设置而不失败运行 。 类别是:
从变体的目录中解析出 运行后获取,所以
反映当时有效的变式配置(包括任何
编辑在同时完成).
浓缩辅助剂出口再利用:
import {
parseCheckCategoryIndex,
fetchCheckCategoryIndex,
enrichResultWithCategories,
} from '@abapify/adt-atc';
// Build the implementing class -> category name index from a parsed form template
const index = parseCheckCategoryIndex(formTemplateDocument);
// Or fetch it through an ADT client (never throws)
const fetched = await fetchCheckCategoryIndex(client, 'DEFAULT');
// Enrich a result in place (direct lookup: only resolves findings whose
// checkId is already the implementing class name; normal worklist findings
// are enriched by the command via the documentation bridge)
enrichResultWithCategories(result, index);
GitLab 编码中物质质量的分类为 check_category
每个发现; SARIF 用于标出每个规则的内容
properties.category。 。 。 .
输出格式
控制台( 默认)
带有emoji指标和可点击的ADT链接(支持的终端)的可人读输出.
贾森
ATC结果的Raw JSON输出供进一步处理.
沙特阿拉伯
沙特阿拉伯 gitHub 代码扫描集成格式.
GitLab 代码质量
GitLab 代码质量 gitLab CI/CD 集成格式.
AbapGit 存储器,添加 --resolver abapgit。解析器使用
将函数模块等复合对象映射到全ATC位置 URI
,然后扫描配置的源树,这样既可以
PRIFIX和FUL文件夹逻辑指向实际的Git路径. 当多个
文件共享同一个基名( 如多个) package.devc.xml 文件在
不同软件包目录,解析器拒绝模糊的匹配
而不是猜测.
许可证
麻省理工学院