Merge #9 into develop from fix/memory_reflection
新增反思功能(功能配置接口+反思celery后台检测反思的迭代周期) * fix/memory_reflection: (24 commits squashed) - 新增反思功能(功能配置接口+反思celery后台检测反思的迭代周期) - 新增反思功能(功能配置接口+反思celery后台检测反思的迭代周期) - 新增反思功能(检测代码/规范化程序) - 新增反思功能(检测代码/规范化程序) - 新增反思功能(检测代码/规范化程序) - 新增反思功能(检测代码/规范化程序) - 新增反思功能(检测代码/规范化程序) - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 - 反思优化 Signed-off-by: aliyun8644380055 <accounts_68c0f5d519f260d93ee2997e@mail.teambition.com> Commented-by: aliyun8644380055 <accounts_68c0f5d519f260d93ee2997e@mail.teambition.com> Commented-by: aliyun6762716068 <accounts_68cb7c6b61f5dcc4200d6251@mail.teambition.com> Reviewed-by: aliyun6762716068 <accounts_68cb7c6b61f5dcc4200d6251@mail.teambition.com> Merged-by: aliyun6762716068 <accounts_68cb7c6b61f5dcc4200d6251@mail.teambition.com> CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/9
This commit is contained in:
108
api/check_code.py
Executable file
108
api/check_code.py
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
代码质量检查脚本
|
||||
自动检查代码中的导入错误、未使用变量、语法问题等
|
||||
|
||||
用法:
|
||||
python check_code.py # 检查整个 app/ 目录
|
||||
python check_code.py file1.py file2.py # 检查指定文件
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def run_command(cmd: list[str], description: str) -> tuple[bool, str]:
|
||||
"""运行命令并返回结果"""
|
||||
print(f"\n{'=' * 60}")
|
||||
print(f"🔍 {description}")
|
||||
print(f"{'=' * 60}")
|
||||
|
||||
try:
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, check=False)
|
||||
|
||||
output = result.stdout + result.stderr
|
||||
success = result.returncode == 0
|
||||
|
||||
if success:
|
||||
print(f"✅ {description} - 通过")
|
||||
else:
|
||||
print(f"❌ {description} - 发现问题")
|
||||
if output:
|
||||
print(output[:2000]) # 只显示前2000字符
|
||||
|
||||
return success, output
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 执行失败: {e}")
|
||||
return False, str(e)
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
# 获取命令行参数中的文件列表
|
||||
target_files = sys.argv[1:] if len(sys.argv) > 1 else None
|
||||
|
||||
if target_files:
|
||||
# 检查指定文件
|
||||
print(f"🚀 开始代码质量检查 (指定文件: {len(target_files)} 个)...")
|
||||
target_paths = target_files
|
||||
ruff_target = target_files
|
||||
py_compile_files = [f for f in target_files if f.endswith('.py')]
|
||||
else:
|
||||
# 检查整个 app/ 目录
|
||||
print("🚀 开始代码质量检查 (整个 app/ 目录)...")
|
||||
target_paths = ["app/"]
|
||||
ruff_target = ["app/"]
|
||||
py_compile_files = list(Path("app").rglob("*.py"))
|
||||
|
||||
checks = [
|
||||
{
|
||||
"cmd": ["ruff", "check"] + ruff_target + ["--output-format=concise"],
|
||||
"description": "Ruff 代码检查 (导入、语法、风格)",
|
||||
"auto_fix": ["ruff", "check"] + ruff_target + ["--fix", "--unsafe-fixes"],
|
||||
},
|
||||
{
|
||||
"cmd": ["python", "-m", "py_compile"] + [str(f) for f in py_compile_files],
|
||||
"description": "Python 语法检查",
|
||||
"auto_fix": None,
|
||||
},
|
||||
]
|
||||
|
||||
results = []
|
||||
for check in checks:
|
||||
success, output = run_command(check["cmd"], check["description"])
|
||||
results.append(
|
||||
{"name": check["description"], "success": success, "output": output, "auto_fix": check.get("auto_fix")}
|
||||
)
|
||||
|
||||
# 汇总报告
|
||||
print(f"\n{'=' * 60}")
|
||||
print("📊 检查汇总")
|
||||
print(f"{'=' * 60}")
|
||||
|
||||
all_passed = True
|
||||
for result in results:
|
||||
status = "✅ 通过" if result["success"] else "❌ 失败"
|
||||
print(f"{status} - {result['name']}")
|
||||
if not result["success"]:
|
||||
all_passed = False
|
||||
if result["auto_fix"]:
|
||||
print(f" 💡 可以运行自动修复: {' '.join(result['auto_fix'])}")
|
||||
|
||||
if all_passed:
|
||||
print("\n🎉 所有检查通过!")
|
||||
return 0
|
||||
else:
|
||||
print("\n⚠️ 发现问题,请查看上面的详细信息")
|
||||
print("\n💡 快速修复命令:")
|
||||
if target_files:
|
||||
print(f" ruff check {' '.join(target_files)} --fix --unsafe-fixes")
|
||||
else:
|
||||
print(" ruff check app/ --fix --unsafe-fixes")
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user