Files
hakorune/.github/workflows/nekocode-pr-analysis.yml
moe-charm 6a2a4fe24a 🔧 Fix nekocode analysis path and error handling
- Change analysis path from src/ to . (root)
- Improve error handling without || true
- Better regex patterns for result extraction  
- Add language count detection
- Japanese error messages for clarity

Fixes: 分析されたファイル 0 → 90+ files
2025-08-13 16:47:03 +09:00

114 lines
3.9 KiB
YAML

name: NekoCode PR Impact Analysis
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main, dev]
jobs:
nekocode-analysis:
runs-on: ubuntu-latest
name: Code Impact Analysis
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout PR
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download NekoCode
run: |
mkdir -p bin
curl -L https://github.com/moe-charm/nekocode-rust/raw/main/releases/nekocode-rust -o bin/nekocode-rust
chmod +x bin/nekocode-rust
- name: Analyze Current PR
id: analyze-pr
run: |
echo "🔍 Analyzing PR changes..."
# 🎯 修正1: パスを. (ルート)に変更
./bin/nekocode-rust analyze . --stats-only > pr_analysis.txt 2>&1
# 🎯 修正2: エラー処理を改善
if [ $? -ne 0 ]; then
echo "❌ NekoCode analysis failed!"
cat pr_analysis.txt
exit 1
fi
echo "📊 Analysis Results:"
cat pr_analysis.txt
# 🎯 修正3: より確実な値抽出
FILES_COUNT=$(grep -E "found [0-9]+ files" pr_analysis.txt | grep -oE "[0-9]+" || echo "0")
ANALYSIS_TIME=$(grep -E "Total.*took: [0-9.]+s" pr_analysis.txt | grep -oE "[0-9.]+s" || echo "N/A")
LANGUAGES=$(grep -A 10 "言語別:" pr_analysis.txt | grep -E "• \w+:" | wc -l || echo "1")
echo "files_analyzed=$FILES_COUNT" >> $GITHUB_OUTPUT
echo "analysis_time=$ANALYSIS_TIME" >> $GITHUB_OUTPUT
echo "languages_detected=$LANGUAGES" >> $GITHUB_OUTPUT
- name: Generate Impact Report
run: |
PR_FILES=${{ steps.analyze-pr.outputs.files_analyzed }}
ANALYSIS_TIME=${{ steps.analyze-pr.outputs.analysis_time }}
LANGUAGES_COUNT=${{ steps.analyze-pr.outputs.languages_detected }}
cat > impact_report.md << EOF
## 🦀 NekoCode 分析レポート
### 📊 コードの影響の概要
| メトリック | 価値 |
|-----------|------|
| **分析されたファイル** | ${PR_FILES} ファイル |
| **分析時間** | ${ANALYSIS_TIME} |
| **検出された言語** | ${LANGUAGES_COUNT}言語 |
### ✅ 分析ステータス
- **コード品質**: NekoCode分析が正常完了
- **パフォーマンス**: 分析時間 ${ANALYSIS_TIME}
- **互換性**: 検出されたファイルがエラーなしで処理完了
---
*🚀 [NekoCode](https://github.com/moe-charm/nekocode-rust)による分析*
EOF
- name: Comment PR
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('impact_report.md', 'utf8');
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const nekocodeComment = comments.data.find(comment =>
comment.body.includes('🦀 NekoCode 分析レポート')
);
if (nekocodeComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: nekocodeComment.id,
body: report
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: report
});
}