- 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
114 lines
3.9 KiB
YAML
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
|
|
});
|
|
} |