iter(g56): ua style 增加单文件 200 行门禁
This commit is contained in:
@@ -639,19 +639,34 @@ function styleCheckFile(file, src) {
|
||||
return issues;
|
||||
}
|
||||
|
||||
/*** 全仓风格检查:有违规退出码 1,全绿输出 OK ***/
|
||||
// 单文件行数上限:CODING.md「单文件尽量 < 200 行」,只约束包内实现文件
|
||||
const MAX_LINES = 200;
|
||||
// 不受行数限制的汇总文件:类型集中文件与导出入口天然会长
|
||||
const SIZE_EXEMPT = new Set(['types.ts', 'index.ts']);
|
||||
|
||||
/*** 行数检查:只查分层包 src 目录下的实现文件,超出上限即违规 ***/
|
||||
function sizeCheckFile(file) {
|
||||
const rel = path.relative(ROOT, file).replace(/\\/g, '/');
|
||||
if (!/^packages\/[^/]+\/[^/]+\/src\//.test(rel)) return []; // 只约束分层包源码
|
||||
if (SIZE_EXEMPT.has(path.basename(file))) return []; // 类型 / 导出汇总豁免
|
||||
const lines = fs.readFileSync(file, 'utf8').split(/\r?\n/).length;
|
||||
return lines > MAX_LINES ? [`${rel} 共 ${lines} 行,超过单文件 ${MAX_LINES} 行上限(CODING.md)`] : [];
|
||||
}
|
||||
|
||||
/*** 全仓风格检查:注释规范 + 单文件行数,有违规退出码 1,全绿输出 OK ***/
|
||||
function cmdStyle() {
|
||||
const files = collectSourceFiles();
|
||||
const issues = [];
|
||||
for (const f of files) {
|
||||
issues.push(...styleCheckFile(f, fs.readFileSync(f, 'utf8')));
|
||||
issues.push(...sizeCheckFile(f));
|
||||
}
|
||||
if (issues.length) {
|
||||
for (const it of issues) console.error('style: ' + it);
|
||||
console.error(`${issues.length} violation(s)`);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`style OK (${files.length} files)`);
|
||||
console.log(`style OK (${files.length} files, 实现文件 ≤ ${MAX_LINES} 行)`);
|
||||
}
|
||||
|
||||
/*** 皮肤包硬编码颜色检查:#hex 字面量一律禁止,颜色必须走 --ua-* 令牌(rgba 仅限阴影/遮罩的透明度叠加) ***/
|
||||
|
||||
Reference in New Issue
Block a user