rmi-backend/scripts/ruff-fix.sh

74 lines
2.1 KiB
Bash

#!/bin/bash
cd /home/dev/rmi/backend
echo "=== Step 1: Auto-fix with ruff ==="
ruff check app/ --fix --unsafe-fixes
echo "=== Step 2: Count remaining errors ==="
ruff check app/ 2>&1 | grep "Found" | tail -1
echo "=== Step 3: Fix B904 (raise from None) ==="
# Find files with B904 and add 'from None' to raise statements
python3 -c "
import re
import os
result = os.popen('ruff check app/ 2>&1').read()
# Find files with B904
b904_files = set()
lines = result.split('\n')
current_file = None
for i, line in enumerate(lines):
file_match = re.search(r' -->\s*(app/[^:]+):', line)
if file_match:
current_file = file_match.group(1)
if 'B904' in line and current_file:
b904_files.add(current_file)
print(f'Files with B904: {len(b904_files)}')
count = 0
for filepath in b904_files:
if not os.path.exists(filepath):
continue
try:
with open(filepath, 'r') as f:
lines = f.readlines()
new_lines = []
i = 0
while i < len(lines):
line = lines[i]
new_lines.append(line)
# Check if this line ends 'except' (no 'as')
if re.match(r'^\s*except\s*:$', line):
# Look ahead for raise within next 5 lines
j = i + 1
while j < min(i + 6, len(lines)):
if 'raise ' in lines[j] and ' from ' not in lines[j]:
indent = len(lines[j]) - len(lines[j].lstrip())
new_lines.append(' ' * indent + 'from None\n')
break
new_lines.append(lines[j])
if 'raise' in lines[j]:
break
j += 1
i = j + 1
else:
i += 1
if new_lines != lines:
with open(filepath, 'w') as f:
f.writelines(new_lines)
count += 1
print(f'Fixed B904: {filepath}')
except Exception as e:
print(f'Error: {filepath} - {e}')
print(f'Fixed {count} files with B904')
"
echo "=== Step 4: Count again ==="
ruff check app/ 2>&1 | grep "Found" | tail -1