特性模块标准
对该组织的抽查
特性模块标准
(单位:千美元)agent-teams.feature-module-standard) (中文(简体) ). 软件包以标准命名
目的:标准定义了一个架构的布局和词汇,所以
它的检查从未进入架构中立的基金会核心. 一个仓库
不采用标准 绝不装入此软件包, 也没有核心软件包
依赖它; 唯一的依赖方向是从此包到中性
核心(见 建筑中立) (中文(简体) ).
开发与CI只使用. 不要从产品运行时代码导入它 .
它检查什么
内核验证一个出产模块的申报结构. 没有 运行时的依赖性, 不读取文件, 不运行解析器, 并拓宽策略: 每 事实(地貌根源、角色目录、地表、共和国、宣布) 使用边缘)是输入,消费者存储库保持其外观和决定.
import { checkFeatureModule } from '@agent-teams/feature-module-standard';
const report = checkFeatureModule({
// The profile's declared structure: every feature root and the directories or files mapped to roles.
featureRoots: ['src/features/orders', 'src/features/billing'],
roleRoots: [{ root: 'src/features/orders/domain', role: 'domain' }, { root: 'src/features/orders/api.ts', role: 'application' }],
files, // production files, repository-relative, `/` separators
surfaces: { public: [...], compositionContract: [...], compositionSurface: [...] },
imports, // resolved edges: { from, to, mode: 'runtime' | 'type-only', line, reexport? }
});
// report.ok, report.diagnostics, report.features, report.metrics
规则执行特性模块标准 v1 和 v1.1 添加
次级地物和组成合同. STANDARD 出口 { id, version: 'v1.1', digest } 会 议 日 程 和 议 程
已执行文本( blob) bd949a9a670862fea851a7791fce772fdef3b4fc, (中文(简体) ),
固定组织blob, (中文(简体) ),
因此,一个剖面图可以比较它和它所寄取的文摘. 适用情况如下:a
子特性只存在于 featureRoots 宣布,所以在任何其他模块
(单位:千美元) features 特性内的目录保留其v1含义.
| 规则 | 诊断代码 |
|---|---|
树: 特性根于 <features root>/<name> 财务报告和审定财务报表 <parent>/features/<name>,一个容器名称,只有角色目录,在特征根下方的容器和映射文件 | feature-root-placement, (中文(简体) ), feature-duplicate, (中文(简体) ), feature-undeclared, (中文(简体) ), container-file, (中文(简体) ), container-empty, (中文(简体) ), entry-unmapped |
| 测试所有权:一个测试属于最深的特性,子地物测试活在镜像测试根上,一个测试只通过公共的,内部的API和测试表面使用另一个可见特性 | test-unowned, (中文(简体) ), test-misplaced (警告:标准说应该), not-visible, (中文(简体) ), deep-import |
| 可见度和地平面:子地平面可见于其父母和父母后人;无深入入入出 | not-visible, (中文(简体) ), deep-import, (中文(简体) ), surface-unowned |
| 图层方向(v1):域和应用程序从不导入合同;适配器通过应用程序核心联系到兄弟姐妹 | layer-direction |
组成合同(单元级组成由 moduleComposition:它们是组成代码,只有组成代码取决于它们,只有可见特征 | composition-contract-misplaced, (中文(简体) ), composition-contract-layer, (中文(简体) ), not-visible |
| 组装:只有父母的组装物会把它直接的分地层接上,它会把每个暴露出组装物表面的组装物接上线 | assembly-misplaced, (中文(简体) ), assembly-missing |
| 共和国:从一个直接次地层上宣布一个级别 | republication-undeclared, (中文(简体) ), republication-skips-level, (中文(简体) ), republication-invalid, (中文(简体) ), republication-mismatch, (中文(简体) ), republication-not-sub-feature |
| 当消费者有特征时,宣布使用边缘 | use-undeclared, (中文(简体) ), use-edge-invalid |
| 循环:向下和横向使用边缘,运行时间和类型相同;不同特性的文件之间的负载时间循环 | feature-cycle, (中文(简体) ), load-cycle |
| 增长:深度预警和每个地貌的衡量标准(档案、测试、次地貌、消费者档案组) | depth-warning |
每个代码都在 ERROR_CODES 或者说 WARNING_CODES; 标准的 MUST 是错误, 应该警告
这不会使模块失效。 诊断是分类和稳定的. invalid-path 报告输入路径
不是一个寄存器相对路径 / 分会者.
对于一个遵循默认布局的树(<features root>/<feature>/<role directory>, (中文(简体) ), inferDirectoryLayout
正在建设 featureRoots, (中文(简体) ), featuresRoots 财务报告和审定财务报表 roleRoots 从文件列表和角色指南地图.
用于仓库所属检查器的小块 : layerDirectionAllowed, (中文(简体) ),
findCycles, (中文(简体) ), findOverlappingRoots, (中文(简体) ), analyzeFeatureTree。 。 。 .
固定设备
@agent-teams/feature-module-standard/fixtures 出口 exampleSources,示例树作为真实来源
文档(import, (中文(简体) ), export * from, (中文(简体) ), import type {} (a) 跑者实现并背出
conformanceCases页:1
有关标准、巢穴-地貌周期案例和
作为完整单元说明的合编合同案及其预期
诊断代码。 内核测试 和每个通过检查器作为它的
符合性测试,运行相同的数据.
运行者
@agent-teams/feature-module-standard/node 检查磁盘上的模块。 它读取 宣布的根 通过
@agent-teams/engineering-foundation/source-graph中,运行内核,并比较每个地貌度量与
增长预算 @agent-teams/engineering-foundation/ratchet (仅警告). 工程基金会 ^1.8.0 || ^2.0.0 || ^3.0.0 是一个
可选对等依赖: . 财务报告和审定财务报表 ./fixtures 不需要这个.
基金会3窗口为伴发行做准备. 见
移徙和资格记录
用于未更改的跑道合同和所需的最后安装工艺门.
import {
checkFeatureModuleOnDisk,
formatNodeReport,
} from "@agent-teams/feature-module-standard/node";
const report = await checkFeatureModuleOnDisk({
consumerRoot: process.cwd(),
sourceRoots: ["src"],
testRoots: ["tests/features"],
testFeaturesRoot: "tests/features",
structure: {
featuresRoot: "src/features",
roleDirectories: { domain: "domain", application: "application" },
},
surfaces: { public: ["src/features/orders/contracts/public.ts"] },
budgets: [{ metric: "sourceFiles", max: 40 }],
});
process.stdout.write(formatNodeReport(report));
配置为数据. structure 要么是默认布局( y)featuresRoot, (中文(简体) ), roleDirectories,已声明
subFeatureRoots)或剖面图本身的映射(featureRoots, (中文(简体) ), roleRoots) (中文(简体) ). 预算可用计量是: depth, (中文(简体) ),
subFeatures, (中文(简体) ), sourceFiles, (中文(简体) ), testFiles 和每个名字 fileGroups (常规表达来源). 文件解析器
无法读取运行失败, 因为它的导入会从支票中丢失 。 光谱不是边缘:
文件图表报告包和别名作为外部,所以不显示指向特性的 tsconfig别名.
moduleComposition 命名允许使用组成合同或钢丝特征表面的模块级文件;
省略或提供空列表时, 宣布没有模块级组成 。 运行时间和唯一类型导出
参考文献在传递到内核时保留其共和国出处.
未解决的字面目标和计算出来的运行时参考文献仍在 unresolved 财务报告和审定财务报表
unresolvedRuntimeReferences; 两者之一 ok 虚假的. formatNodeReport 打印这些源覆盖错误
与内核的架构诊断分离. 进口的外部包件不在内
特征图,需要消费者的依赖政策.
testRoots 选择文件被视为测试而非生产的全部目录。 选中的测试文件必须
位于已声明或推断的特征根(一个位于同一位置的测试目录)内,或位于显式 testFeaturesRoot
镜像显示所有权。 运行者拒绝两个映射以外的文件,而不是默默地跳过它们
所有权、衡量标准和进口检查. mappedFiles 直接在特征根下方的名称文件; 它不映射一个
外部测试树到特性所有者 。 使用专用的同地位测试目录而不是混合制作
目录. 模块级的软件包和黑盒测试 特性所有权之外需要自己的消费者
检查,但此示例不选中.
运行者观察到文件, 而不是空目录, 因此它本身不能对空作用或空容器进行资格验证
规则。 它提供标有解析的参考文献 runtime 作为内核的负载图; 该保守的图是
不证明动态导入或普通JS 负载何时执行 。 消费者保留其选定的语法简介
和补充源检查而不是治疗 ok 作为完整的语言或标准符合.
稳定
版本为"0.x". API或诊断码船作为小释放的中断 并附有更改日志条目和迁移说明.