Skip to content

Commit 4650cf3

Browse files
committed
Sync auto-copilot-code-cleanliness-review.yml from .github repo
1 parent aab8cef commit 4650cf3

File tree

1 file changed

+8
-160
lines changed

1 file changed

+8
-160
lines changed
Lines changed: 8 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -1,310 +1,158 @@
11
name: "Periodic Code Cleanliness Review"
2-
uto-amazonq-review.properties.json
32

4-
uto-amazonq-review.properties.json
3+
# REQUIREMENTS:
4+
# - A GitHub Personal Access Token with Copilot access must be created and stored as a repository secret named COPILOT_TOKEN
5+
# - See COPILOT_TOKEN_SETUP.md for detailed setup instructions
6+
57
on:
6-
uto-amazonq-review.properties.json
78
schedule:
8-
uto-amazonq-review.properties.json
99
# Run every 12 hours (at 00:00 and 12:00 UTC)
10-
uto-amazonq-review.properties.json
1110
- cron: '0 0,12 * * *'
12-
uto-amazonq-review.properties.json
1311
workflow_dispatch: # Allow manual trigger
14-
uto-amazonq-review.properties.json
1512

16-
uto-amazonq-review.properties.json
1713
permissions:
18-
uto-amazonq-review.properties.json
1914
contents: write
20-
uto-amazonq-review.properties.json
2115
pull-requests: write
22-
uto-amazonq-review.properties.json
2316
issues: write
24-
uto-amazonq-review.properties.json
2517

26-
uto-amazonq-review.properties.json
2718
jobs:
28-
uto-amazonq-review.properties.json
2919
code-cleanliness-review:
30-
uto-amazonq-review.properties.json
31-
runs-on: self-hosted
32-
uto-amazonq-review.properties.json
20+
runs-on: ubuntu-latest
3321
steps:
34-
uto-amazonq-review.properties.json
3522
- name: Checkout code
36-
uto-amazonq-review.properties.json
3723
uses: actions/checkout@main
38-
uto-amazonq-review.properties.json
3924
with:
40-
uto-amazonq-review.properties.json
4125
fetch-depth: 0 # Full history for better analysis
42-
uto-amazonq-review.properties.json
4326

44-
uto-amazonq-review.properties.json
4527
- name: Analyze Large Files
46-
uto-amazonq-review.properties.json
4728
id: analyze
48-
uto-amazonq-review.properties.json
4929
run: |
50-
uto-amazonq-review.properties.json
5130
echo "## Large Files Analysis" > /tmp/analysis.md
52-
uto-amazonq-review.properties.json
5331
echo "" >> /tmp/analysis.md
54-
uto-amazonq-review.properties.json
5532
echo "Files larger than 500 lines that may benefit from splitting:" >> /tmp/analysis.md
56-
uto-amazonq-review.properties.json
5733
echo "" >> /tmp/analysis.md
58-
uto-amazonq-review.properties.json
5934
60-
uto-amazonq-review.properties.json
6135
# Find files larger than 500 lines (excluding common large files)
62-
uto-amazonq-review.properties.json
6336
find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.ts" -o -name "*.java" -o -name "*.go" -o -name "*.cs" -o -name "*.rb" \) \
64-
uto-amazonq-review.properties.json
6537
! -path "*/node_modules/*" \
66-
uto-amazonq-review.properties.json
6738
! -path "*/dist/*" \
68-
uto-amazonq-review.properties.json
6939
! -path "*/build/*" \
70-
uto-amazonq-review.properties.json
7140
! -path "*/.venv/*" \
72-
uto-amazonq-review.properties.json
7341
! -path "*/vendor/*" \
74-
uto-amazonq-review.properties.json
7542
-exec wc -l {} \; | \
76-
uto-amazonq-review.properties.json
7743
awk '$1 > 500 {print $1 " lines: " $2}' | \
78-
uto-amazonq-review.properties.json
7944
sort -rn >> /tmp/analysis.md || echo "No large files found" >> /tmp/analysis.md
80-
uto-amazonq-review.properties.json
8145
82-
uto-amazonq-review.properties.json
8346
echo "" >> /tmp/analysis.md
84-
uto-amazonq-review.properties.json
8547
echo "## Code Complexity Analysis" >> /tmp/analysis.md
86-
uto-amazonq-review.properties.json
8748
echo "" >> /tmp/analysis.md
88-
uto-amazonq-review.properties.json
8949
echo "Files with potential complexity issues:" >> /tmp/analysis.md
90-
uto-amazonq-review.properties.json
9150
92-
uto-amazonq-review.properties.json
9351
# Find files with many functions/classes (basic heuristic)
94-
uto-amazonq-review.properties.json
9552
for ext in py js ts java go cs rb; do
96-
uto-amazonq-review.properties.json
9753
if [ "$ext" = "py" ]; then
98-
uto-amazonq-review.properties.json
9954
pattern="^def |^class "
100-
uto-amazonq-review.properties.json
10155
elif [ "$ext" = "js" ] || [ "$ext" = "ts" ]; then
102-
uto-amazonq-review.properties.json
10356
pattern="^function |^class |const.*=.*=>|function.*{$"
104-
uto-amazonq-review.properties.json
10557
else
106-
uto-amazonq-review.properties.json
10758
pattern="^class |^def |^func "
108-
uto-amazonq-review.properties.json
10959
fi
110-
uto-amazonq-review.properties.json
11160
112-
uto-amazonq-review.properties.json
11361
find . -type f -name "*.$ext" \
114-
uto-amazonq-review.properties.json
11562
! -path "*/node_modules/*" \
116-
uto-amazonq-review.properties.json
11763
! -path "*/dist/*" \
118-
uto-amazonq-review.properties.json
11964
! -path "*/build/*" \
120-
uto-amazonq-review.properties.json
12165
! -path "*/.venv/*" \
122-
uto-amazonq-review.properties.json
12366
! -path "*/vendor/*" \
124-
uto-amazonq-review.properties.json
12567
-exec sh -c 'count=$(grep -c "$1" "$2" 2>/dev/null || echo 0); if [ "$count" -gt 20 ]; then echo "$count definitions in $2"; fi' _ "$pattern" {} \; \
126-
uto-amazonq-review.properties.json
12768
2>/dev/null || true
128-
uto-amazonq-review.properties.json
12969
done | sort -rn >> /tmp/analysis.md
130-
uto-amazonq-review.properties.json
13170
132-
uto-amazonq-review.properties.json
13371
cat /tmp/analysis.md
134-
uto-amazonq-review.properties.json
13572
136-
uto-amazonq-review.properties.json
13773
- name: GitHub Copilot Code Review
138-
uto-amazonq-review.properties.json
139-
uses: github/copilot-cli-action@main
140-
uto-amazonq-review.properties.json
74+
uses: austenstone/copilot-cli-action@v2
14175
with:
142-
uto-amazonq-review.properties.json
143-
query: |
144-
uto-amazonq-review.properties.json
76+
copilot-token: ${{ secrets.COPILOT_TOKEN }}
77+
prompt: |
14578
Review the codebase for code cleanliness issues:
146-
uto-amazonq-review.properties.json
14779
1. Identify files that are too large (>500 lines) and suggest how to split them into smaller, focused modules
148-
uto-amazonq-review.properties.json
14980
2. Look for code duplication and suggest refactoring opportunities
150-
uto-amazonq-review.properties.json
15181
3. Check for consistent code style and formatting
152-
uto-amazonq-review.properties.json
15382
4. Identify complex functions that could be simplified
154-
uto-amazonq-review.properties.json
15583
5. Suggest improvements for code organization and structure
156-
uto-amazonq-review.properties.json
15784
6. Check for proper separation of concerns
158-
uto-amazonq-review.properties.json
15985
160-
uto-amazonq-review.properties.json
16186
Provide actionable recommendations with specific file names and line numbers.
162-
uto-amazonq-review.properties.json
163-
env:
164-
uto-amazonq-review.properties.json
165-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
166-
uto-amazonq-review.properties.json
16787
continue-on-error: true
168-
uto-amazonq-review.properties.json
16988

170-
uto-amazonq-review.properties.json
17189
- name: Create Issue for Code Cleanliness Review
172-
uto-amazonq-review.properties.json
17390
uses: actions/github-script@main
174-
uto-amazonq-review.properties.json
17591
with:
176-
uto-amazonq-review.properties.json
17792
github-token: ${{ secrets.GITHUB_TOKEN }}
178-
uto-amazonq-review.properties.json
17993
script: |
180-
uto-amazonq-review.properties.json
18194
const fs = require('fs');
182-
uto-amazonq-review.properties.json
18395
const analysis = fs.readFileSync('/tmp/analysis.md', 'utf8');
184-
uto-amazonq-review.properties.json
18596
186-
uto-amazonq-review.properties.json
18797
const date = new Date().toISOString().split('T')[0];
188-
uto-amazonq-review.properties.json
18998
const title = `Code Cleanliness Review - ${date}`;
190-
uto-amazonq-review.properties.json
19199
192-
uto-amazonq-review.properties.json
193100
const body = `# Periodic Code Cleanliness Review
194-
uto-amazonq-review.properties.json
195101
196-
uto-amazonq-review.properties.json
197102
This is an automated review conducted every 12 hours to maintain code quality.
198-
uto-amazonq-review.properties.json
199103
200-
uto-amazonq-review.properties.json
201104
${analysis}
202-
uto-amazonq-review.properties.json
203105
204-
uto-amazonq-review.properties.json
205106
## Recommendations
206-
uto-amazonq-review.properties.json
207107
208-
uto-amazonq-review.properties.json
209108
Please review the analysis above and:
210-
uto-amazonq-review.properties.json
211109
1. Split large files (>500 lines) into smaller, focused modules
212-
uto-amazonq-review.properties.json
213110
2. Refactor complex functions into smaller, testable units
214-
uto-amazonq-review.properties.json
215111
3. Remove code duplication
216-
uto-amazonq-review.properties.json
217112
4. Ensure consistent code style
218-
uto-amazonq-review.properties.json
219113
5. Improve code organization and structure
220-
uto-amazonq-review.properties.json
221114
222-
uto-amazonq-review.properties.json
223115
## Next Steps
224-
uto-amazonq-review.properties.json
225116
226-
uto-amazonq-review.properties.json
227117
- Assign this issue to relevant team members
228-
uto-amazonq-review.properties.json
229118
- Create follow-up PRs to address findings
230-
uto-amazonq-review.properties.json
231119
- Document any architectural decisions
232-
uto-amazonq-review.properties.json
233120
234-
uto-amazonq-review.properties.json
235121
---
236-
uto-amazonq-review.properties.json
237122
*This issue was automatically generated by the Code Cleanliness Review workflow.*
238-
uto-amazonq-review.properties.json
239123
`;
240-
uto-amazonq-review.properties.json
241124
242-
uto-amazonq-review.properties.json
243125
// Check if similar issue exists (open, created in last 24 hours)
244-
uto-amazonq-review.properties.json
245126
const issues = await github.rest.issues.listForRepo({
246-
uto-amazonq-review.properties.json
247127
owner: context.repo.owner,
248-
uto-amazonq-review.properties.json
249128
repo: context.repo.repo,
250-
uto-amazonq-review.properties.json
251129
state: 'open',
252-
uto-amazonq-review.properties.json
253130
labels: ['code-cleanliness', 'automated'],
254-
uto-amazonq-review.properties.json
255131
per_page: 10
256-
uto-amazonq-review.properties.json
257132
});
258-
uto-amazonq-review.properties.json
259133
260-
uto-amazonq-review.properties.json
261134
const recentIssue = issues.data.find(issue => {
262-
uto-amazonq-review.properties.json
263135
const createdAt = new Date(issue.created_at);
264-
uto-amazonq-review.properties.json
265136
const hoursSinceCreation = (Date.now() - createdAt) / (1000 * 60 * 60);
266-
uto-amazonq-review.properties.json
267137
return hoursSinceCreation < 24;
268-
uto-amazonq-review.properties.json
269138
});
270-
uto-amazonq-review.properties.json
271139
272-
uto-amazonq-review.properties.json
273140
if (recentIssue) {
274-
uto-amazonq-review.properties.json
275141
console.log(`Recent issue found: #${recentIssue.number}, skipping creation`);
276-
uto-amazonq-review.properties.json
277142
// Update existing issue with new analysis
278-
uto-amazonq-review.properties.json
279143
await github.rest.issues.createComment({
280-
uto-amazonq-review.properties.json
281144
owner: context.repo.owner,
282-
uto-amazonq-review.properties.json
283145
repo: context.repo.repo,
284-
uto-amazonq-review.properties.json
285146
issue_number: recentIssue.number,
286-
uto-amazonq-review.properties.json
287147
body: `## Updated Analysis (${date})\n\n${analysis}`
288-
uto-amazonq-review.properties.json
289148
});
290-
uto-amazonq-review.properties.json
291149
} else {
292-
uto-amazonq-review.properties.json
293150
// Create new issue
294-
uto-amazonq-review.properties.json
295151
await github.rest.issues.create({
296-
uto-amazonq-review.properties.json
297152
owner: context.repo.owner,
298-
uto-amazonq-review.properties.json
299153
repo: context.repo.repo,
300-
uto-amazonq-review.properties.json
301154
title: title,
302-
uto-amazonq-review.properties.json
303155
body: body,
304-
uto-amazonq-review.properties.json
305156
labels: ['code-cleanliness', 'automated', 'needs-review']
306-
uto-amazonq-review.properties.json
307157
});
308-
uto-amazonq-review.properties.json
309158
}
310-
uto-amazonq-review.properties.json

0 commit comments

Comments
 (0)