mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
- 新增 .claude/skills 目录及完整的文档生成技能系统 - 添加批量 API 文档生成脚本支持模块化文档创建 - 添加 API 文档、功能指南和教程生成模板与示例 - 添加 C# XML 注释解析和代码示例生成工具 - 添加文档验证和导航更新脚本确保质量 - 更新 .gitignore 配置排除本地设置文件
65 lines
1.7 KiB
Bash
65 lines
1.7 KiB
Bash
#!/bin/bash
|
||
# 验证代码块语法
|
||
# 用法: validate-code-blocks.sh <文件路径>
|
||
|
||
set -e
|
||
|
||
FILE="$1"
|
||
|
||
if [ -z "$FILE" ]; then
|
||
echo "用法: $0 <文件路径>"
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -f "$FILE" ]; then
|
||
echo "错误: 文件不存在: $FILE"
|
||
exit 1
|
||
fi
|
||
|
||
echo "验证代码块语法: $FILE"
|
||
|
||
ERROR_COUNT=0
|
||
WARNING_COUNT=0
|
||
|
||
# 检查未闭合的代码块
|
||
OPEN_COUNT=$(grep -c '^```' "$FILE" || true)
|
||
if [ $((OPEN_COUNT % 2)) -ne 0 ]; then
|
||
echo "✗ 错误: 存在未闭合的代码块"
|
||
ERROR_COUNT=$((ERROR_COUNT + 1))
|
||
fi
|
||
|
||
# 检查 C# 代码块标记
|
||
LINE_NUM=0
|
||
while IFS= read -r LINE; do
|
||
LINE_NUM=$((LINE_NUM + 1))
|
||
|
||
# 检查是否使用了错误的 C# 标记
|
||
if echo "$LINE" | grep -qE '^```(cs|c#|C#)$'; then
|
||
echo "⚠ 警告: 第 $LINE_NUM 行使用了非标准标记,建议使用 'csharp'"
|
||
echo " 当前: $LINE"
|
||
WARNING_COUNT=$((WARNING_COUNT + 1))
|
||
fi
|
||
|
||
# 检查代码块是否有语言标记
|
||
if echo "$LINE" | grep -qE '^```$'; then
|
||
# 检查下一行是否是代码(简单启发式:不是空行且不是 ```)
|
||
NEXT_LINE=$(sed -n "$((LINE_NUM + 1))p" "$FILE")
|
||
if [ -n "$NEXT_LINE" ] && ! echo "$NEXT_LINE" | grep -qE '^```'; then
|
||
echo "⚠ 警告: 第 $LINE_NUM 行的代码块缺少语言标记"
|
||
WARNING_COUNT=$((WARNING_COUNT + 1))
|
||
fi
|
||
fi
|
||
done < "$FILE"
|
||
|
||
# 输出结果
|
||
if [ $ERROR_COUNT -eq 0 ] && [ $WARNING_COUNT -eq 0 ]; then
|
||
echo "✓ 代码块验证通过"
|
||
exit 0
|
||
elif [ $ERROR_COUNT -eq 0 ]; then
|
||
echo "⚠ 代码块验证通过(有 $WARNING_COUNT 个警告)"
|
||
exit 0
|
||
else
|
||
echo "✗ 代码块验证失败($ERROR_COUNT 个错误,$WARNING_COUNT 个警告)"
|
||
exit 1
|
||
fi
|