fix: auto-fix code issues (cron)

- 修复重复导入/字段
- 修复异常处理
- 修复PEP8格式问题
- 添加类型注解
This commit is contained in:
AutoFix Bot
2026-03-03 06:03:38 +08:00
parent 2a0ed6af4d
commit 9fd1da8fb7
41 changed files with 901 additions and 768 deletions

View File

@@ -45,7 +45,7 @@ class CodeReviewer:
def scan_file(self, file_path: Path) -> None:
"""扫描单个文件"""
try:
with open(file_path, "r", encoding="utf-8") as f:
with open(file_path, encoding="utf-8") as f:
content = f.read()
lines = content.split("\n")
except Exception as e:
@@ -82,12 +82,12 @@ class CodeReviewer:
self._check_sensitive_info(content, lines, rel_path)
def _check_bare_exceptions(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查裸异常捕获"""
for i, line in enumerate(lines, 1):
if re.search(r"except\s*:\s*$", line.strip()) or re.search(
r"except\s+Exception\s*:\s*$", line.strip()
r"except\s+Exception\s*:\s*$", line.strip(),
):
# 跳过有注释说明的情况
if "# noqa" in line or "# intentional" in line.lower():
@@ -102,7 +102,7 @@ class CodeReviewer:
self.issues.append(issue)
def _check_duplicate_imports(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查重复导入"""
imports = {}
@@ -126,7 +126,7 @@ class CodeReviewer:
imports[key] = i
def _check_pep8_issues(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查 PEP8 问题"""
for i, line in enumerate(lines, 1):
@@ -144,7 +144,7 @@ class CodeReviewer:
# 行尾空格
if line.rstrip() != line:
issue = CodeIssue(
file_path, i, "trailing_whitespace", "行尾有空格", "info"
file_path, i, "trailing_whitespace", "行尾有空格", "info",
)
self.issues.append(issue)
@@ -152,12 +152,12 @@ class CodeReviewer:
if i > 1 and line.strip() == "" and lines[i - 2].strip() == "":
if i < len(lines) and lines[i].strip() == "":
issue = CodeIssue(
file_path, i, "extra_blank_line", "多余的空行", "info"
file_path, i, "extra_blank_line", "多余的空行", "info",
)
self.issues.append(issue)
def _check_unused_imports(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查未使用的导入"""
try:
@@ -187,12 +187,12 @@ class CodeReviewer:
if name in ["annotations", "TYPE_CHECKING"]:
continue
issue = CodeIssue(
file_path, lineno, "unused_import", f"未使用的导入: {name}", "info"
file_path, lineno, "unused_import", f"未使用的导入: {name}", "info",
)
self.issues.append(issue)
def _check_string_formatting(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查混合字符串格式化"""
has_fstring = False
@@ -218,7 +218,7 @@ class CodeReviewer:
self.issues.append(issue)
def _check_magic_numbers(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查魔法数字"""
# 常见的魔法数字模式
@@ -258,18 +258,18 @@ class CodeReviewer:
]:
continue
issue = CodeIssue(
file_path, i, "magic_number", f"{msg}: {num}", "info"
file_path, i, "magic_number", f"{msg}: {num}", "info",
)
self.issues.append(issue)
def _check_sql_injection(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查 SQL 注入风险"""
for i, line in enumerate(lines, 1):
# 检查字符串拼接的 SQL
if re.search(r'execute\s*\(\s*["\'].*%s', line) or re.search(
r'execute\s*\(\s*f["\']', line
r'execute\s*\(\s*f["\']', line,
):
if "?" not in line and "%s" in line:
issue = CodeIssue(
@@ -282,7 +282,7 @@ class CodeReviewer:
self.manual_review_issues.append(issue)
def _check_cors_config(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查 CORS 配置"""
for i, line in enumerate(lines, 1):
@@ -297,7 +297,7 @@ class CodeReviewer:
self.manual_review_issues.append(issue)
def _check_sensitive_info(
self, content: str, lines: list[str], file_path: str
self, content: str, lines: list[str], file_path: str,
) -> None:
"""检查敏感信息"""
for i, line in enumerate(lines, 1):
@@ -314,7 +314,7 @@ class CodeReviewer:
):
# 排除一些常见假阳性
if not re.search(r'["\']\*+["\']', line) and not re.search(
r'["\']<[^"\']*>["\']', line
r'["\']<[^"\']*>["\']', line,
):
issue = CodeIssue(
file_path,
@@ -340,7 +340,7 @@ class CodeReviewer:
continue
try:
with open(full_path, "r", encoding="utf-8") as f:
with open(full_path, encoding="utf-8") as f:
content = f.read()
lines = content.split("\n")
except Exception as e:
@@ -366,7 +366,7 @@ class CodeReviewer:
# 将 except Exception: 改为 except Exception:
if re.search(r"except\s*:\s*$", line.strip()):
lines[idx] = line.replace(
"except Exception:", "except Exception:"
"except Exception:", "except Exception:",
)
issue.fixed = True
elif re.search(r"except\s+Exception\s*:\s*$", line.strip()):
@@ -395,7 +395,7 @@ class CodeReviewer:
report.append(f"共修复 {len(self.fixed_issues)} 个问题:\n")
for issue in self.fixed_issues:
report.append(
f"- ✅ {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}"
f"- ✅ {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}",
)
else:
report.append("")
@@ -405,7 +405,7 @@ class CodeReviewer:
report.append(f"共发现 {len(self.manual_review_issues)} 个问题:\n")
for issue in self.manual_review_issues:
report.append(
f"- ⚠️ {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}"
f"- ⚠️ {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}",
)
else:
report.append("")
@@ -415,7 +415,7 @@ class CodeReviewer:
report.append(f"共发现 {len(self.issues)} 个问题:\n")
for issue in self.issues:
report.append(
f"- 📝 {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}"
f"- 📝 {issue.file_path}:{issue.line_no} - {issue.issue_type}: {issue.message}",
)
else:
report.append("")