131 lines
3.6 KiB
Bash
131 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
# 文檔品質檢查腳本
|
|
echo "🔍 文檔品質檢查開始..."
|
|
echo "====================================="
|
|
|
|
# 檢查文檔完整性
|
|
echo "📄 1. 文檔完整性檢查"
|
|
echo "-------------------------------------"
|
|
|
|
# 必要文檔清單
|
|
required_docs=(
|
|
"docs/01_requirement/requirements.md"
|
|
"docs/01_requirement/system_structure_design.json"
|
|
"docs/04_technical/user-flow-specification.md"
|
|
"docs/04_technical/tech-stack-decision.md"
|
|
"docs/04_technical/api-specifications.md"
|
|
"docs/04_technical/database-schema.md"
|
|
"docs/02_design/ui-ux-guidelines.md"
|
|
"docs/02_design/business-logic-rules.md"
|
|
)
|
|
|
|
missing_docs=0
|
|
for doc in "${required_docs[@]}"; do
|
|
if [ -f "$doc" ]; then
|
|
echo "✅ $doc"
|
|
else
|
|
echo "❌ $doc (缺失)"
|
|
missing_docs=$((missing_docs + 1))
|
|
fi
|
|
done
|
|
|
|
echo "文檔完整性: $((${#required_docs[@]} - missing_docs))/${#required_docs[@]}"
|
|
echo ""
|
|
|
|
# 檢查文檔大小和內容
|
|
echo "📏 2. 文檔內容品質檢查"
|
|
echo "-------------------------------------"
|
|
|
|
for doc in "${required_docs[@]}"; do
|
|
if [ -f "$doc" ]; then
|
|
size=$(wc -c < "$doc")
|
|
lines=$(wc -l < "$doc")
|
|
words=$(wc -w < "$doc")
|
|
|
|
if [ $size -lt 1000 ]; then
|
|
echo "⚠️ $doc: 內容過少 (${size} bytes, ${lines} lines)"
|
|
elif [ $size -gt 100000 ]; then
|
|
echo "⚠️ $doc: 內容過多 (${size} bytes, ${lines} lines)"
|
|
else
|
|
echo "✅ $doc: 內容適中 (${words} words, ${lines} lines)"
|
|
fi
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# 檢查Markdown格式
|
|
echo "📝 3. Markdown格式檢查"
|
|
echo "-------------------------------------"
|
|
|
|
find docs/ -name "*.md" -type f | while read -r file; do
|
|
# 檢查標題結構
|
|
h1_count=$(grep -c "^# " "$file" 2>/dev/null || echo 0)
|
|
h2_count=$(grep -c "^## " "$file" 2>/dev/null || echo 0)
|
|
|
|
if [ "$h1_count" -eq 0 ]; then
|
|
echo "⚠️ $file: 缺少主標題 (H1)"
|
|
elif [ "$h1_count" -gt 1 ]; then
|
|
echo "⚠️ $file: 多個主標題 ($h1_count 個H1)"
|
|
else
|
|
echo "✅ $file: 標題結構良好"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# 檢查TODO和FIXME
|
|
echo "📋 4. TODO和FIXME檢查"
|
|
echo "-------------------------------------"
|
|
|
|
todo_count=0
|
|
fixme_count=0
|
|
|
|
find docs/ -name "*.md" -type f | while read -r file; do
|
|
todos=$(grep -in "TODO\|FIXME" "$file" 2>/dev/null || true)
|
|
if [ -n "$todos" ]; then
|
|
echo "📌 $file:"
|
|
echo "$todos" | head -5
|
|
echo ""
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# 檢查連結有效性
|
|
echo "🔗 5. 內部連結檢查"
|
|
echo "-------------------------------------"
|
|
|
|
find docs/ -name "*.md" -type f | while read -r file; do
|
|
# 檢查內部連結 [text](path)
|
|
grep -o '\[.*\](docs/[^)]*\|[^)]*\.md)' "$file" 2>/dev/null | while read -r link; do
|
|
# 提取路徑
|
|
path=$(echo "$link" | sed 's/.*(\([^)]*\)).*/\1/')
|
|
if [[ "$path" == docs/* ]] || [[ "$path" == *.md ]]; then
|
|
if [ ! -f "$path" ]; then
|
|
echo "❌ $file: 無效連結 -> $path"
|
|
fi
|
|
fi
|
|
done
|
|
done
|
|
echo ""
|
|
|
|
# 生成總結
|
|
echo "📊 文檔品質總結"
|
|
echo "====================================="
|
|
|
|
total_docs=${#required_docs[@]}
|
|
existing_docs=$((total_docs - missing_docs))
|
|
completeness=$((existing_docs * 100 / total_docs))
|
|
|
|
echo "文檔完整度: $completeness% ($existing_docs/$total_docs)"
|
|
|
|
if [ $completeness -ge 90 ]; then
|
|
echo "✅ 品質評級: 優秀"
|
|
elif [ $completeness -ge 80 ]; then
|
|
echo "✅ 品質評級: 良好"
|
|
elif [ $completeness -ge 70 ]; then
|
|
echo "⚠️ 品質評級: 尚可"
|
|
else
|
|
echo "❌ 品質評級: 需要改進"
|
|
fi
|
|
|
|
echo "檢查完成時間: $(date)" |