You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SonarQube中删除超一周未使用项目?含自动化与手动方案问询

嘿,针对你要删除SonarQube里超过一周未使用项目的需求,我整理了自动化和手动两种可行方案,帮你高效搞定这件事:

自动化执行方案

SonarQube提供了完整的Web API,完全可以实现自动化批量删除符合条件的项目,步骤如下:

  • 第一步:生成权限足够的Token
    登录SonarQube后,进入个人设置(右上角头像 -> My Account -> Security),生成一个拥有admin权限或者至少projects.delete权限的Token,记下来后面要用。

  • 第二步:编写脚本筛选并删除项目
    你可以用Python、Bash等语言写脚本,核心是调用两个API:

    1. GET api/projects/search:获取所有项目列表,返回的每个项目对象里包含lastAnalysisDate字段(最后一次分析的时间)
    2. POST api/projects/delete:传入项目key删除指定项目

    给你一个Python的示例脚本(需要先安装requests库):

    import requests
    from datetime import datetime, timedelta
    
    # 配置信息
    SONAR_URL = "http://你的SonarQube地址"
    SONAR_TOKEN = "你的Token"
    DAYS_THRESHOLD = 7
    
    # 计算一周前的日期(SonarQube的日期格式是ISO 8601,比如2024-05-20T12:34:56+0800)
    cutoff_date = (datetime.now() - timedelta(days=DAYS_THRESHOLD)).isoformat()
    
    # 获取所有项目
    headers = {"Authorization": f"Bearer {SONAR_TOKEN}"}
    params = {"ps": 500}  # 每页最多500个项目,可根据实际调整
    projects = []
    
    while True:
        response = requests.get(f"{SONAR_URL}/api/projects/search", headers=headers, params=params)
        response.raise_for_status()
        data = response.json()
        projects.extend(data["components"])
        if data["paging"]["pageIndex"] * data["paging"]["pageSize"] >= data["paging"]["total"]:
            break
        params["p"] = data["paging"]["pageIndex"] + 1
    
    # 筛选出超过一周未分析的项目
    stale_projects = [p for p in projects if p.get("lastAnalysisDate", "") < cutoff_date]
    
    # 批量删除
    for project in stale_projects:
        print(f"正在删除项目:{project['name']} (key: {project['key']})")
        delete_response = requests.post(
            f"{SONAR_URL}/api/projects/delete",
            headers=headers,
            params={"project": project["key"]}
        )
        delete_response.raise_for_status()
    
    print(f"完成!共删除{len(stale_projects)}个超过一周未使用的项目")
    

    你可以把这个脚本放到定时任务里(比如Linux的cron,Windows的任务计划),定期自动执行。

手动操作方案

如果暂时不想写脚本,也可以优化你现在的批量操作流程,更精准高效:

  • 登录SonarQube,进入「项目管理」页面(顶部导航栏 -> Projects -> Manage Projects)
  • 点击页面上方的「筛选」按钮,添加筛选条件:选择「最后分析日期」,然后设置为「早于」,再选择7天前的日期
  • 筛选完成后,点击页面左上角的批量选择复选框,选中所有符合条件的项目
  • 点击页面顶部的「删除」按钮,在弹出的确认框中确认即可完成批量删除

注意事项

  • 不管是自动化还是手动操作,删除前建议先备份SonarQube数据库,避免误删重要项目
  • 自动化脚本首次运行时,可以先注释掉删除的代码,只打印要删除的项目列表,确认无误后再执行删除操作
  • 如果你的SonarQube版本较旧,API参数可能略有不同,可以参考官方的API文档调整

内容的提问来源于stack exchange,提问作者Vignesh P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:12:34