Repository navigation
Commit 0dffcbd
committed
feat(codeguard): cobol 接入,57/57 全语言门禁闭合
cobol 穷尽检索后确认无可用格式化器(npm/PyPI/Maven Central/GitHub 全无,
商业方案为 Windows GUI 或商业产品),改用 GnuCOBOL 编译器 cobc 作为
排版规则执行器——COBOL-85 固定格式规定源码必须位于第 7-72 列
(1-6 列为序号区),该列区约定本身就是排版规范,
由编译器强制执行比自建格式化器更可信。
方言双探针解决退出码歧义:
cobc 对「列区违规」与「语法错误」一律退 1,
直接使用会把损坏 COBOL 误报为「需重排」。
故分别以 -free(无列区约束)与 -fixed(有列区约束)各编译一次:
两者皆过 → 0 合规
free 过而 fixed 挂 → 1 列区排版违规
两者皆挂 → 2 语法错误,降级为未完成而非格式问题
实测三态正确,check 全程只读(-fsyntax-only 不产出目标文件)。
apply 模式如实拒绝自动修复:
cobc 不提供源码重排,固定格式的列区重分配涉及序号区与代码区边界,
自动改写存在改坏语义的风险,故退 2 并给出人工修正或改用自由格式的指引。
口径升级 0.5.0:57/57 全部可执行,planned 排除与显式归口均清零,
新增 wrapper_entries 段落记录 7 条 wrapper 型档案。
矩阵补入 cobol 样本(26 种真实执行 + 31 种诚实降级 = 57 全覆盖),
并修正两处随全接入而失效的断言。
38 测试全绿;clippy 零错误。1 parent 7e308c8 commit 0dffcbd
6 files changed
Lines changed: 119 additions & 33 deletions
File tree
- crates/codeguard-cli/tests
- openspec/changes/introduce-rust-codeguard-cli
- rulepacks
- format_batches
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
| 49 | + | |
50 | 50 | | |
51 | | - | |
52 | | - | |
| 51 | + | |
| 52 | + | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
55 | 61 | | |
56 | 62 | | |
57 | 63 | | |
| |||
60 | 66 | | |
61 | 67 | | |
62 | 68 | | |
63 | | - | |
| 69 | + | |
| 70 | + | |
64 | 71 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
| 72 | + | |
| 73 | + | |
69 | 74 | | |
70 | 75 | | |
71 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
93 | 105 | | |
94 | 106 | | |
95 | 107 | | |
| |||
0 commit comments