Argus Lite — Code Scanner (Free)

Polar Sponsor
爱发电 赞助
.NET 9.0

Argus Lite — 代码扫描器(免费)。对单个 Python 文件扫描前 10 大关键安全与缺陷模式。Argus Pro 功能的免费预览。

argus Lite QQ自由代码扫描器. 扫描一个 Python 文件, 与前十条关键安全和错误规则相对应.

功能概述

argus Lite QQ自由代码扫描器. 扫描一个 Python 文件, 与前十条关键安全和错误规则相对应.是一项面向实际任务的技能,主要用于Free vs Pro.;Feature.;

核心要点

  • Argus Lite (Free).;
  • Argus Pro.;
  • Files. 1 文件仅存: Full目录递归.。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Argus Lite — 免费代码扫描器

对单个 Python 文件执行 Top 10 关键安全与缺陷规则扫描。

免费版 vs 专业版

功能 Argus Lite(免费版) Argus Pro(专业版)
文件支持 仅限 1 个文件 完整目录递归扫描
规则数量 10 条(关键/高危) 40+ 条,含性能类规则
支持语言 仅 Python Python + JavaScript
JSON 输出 ✅ 支持 CI 集成
CI 退出码 ✅ 支持 FAIL_ON_CRITICAL
忽略路径
结果去重 基础级(单文件内) 智能跨文件去重

👉 升级专业版:openclaw skills install argus-pro —— 授权密钥获取地址:ko-fi.com/s/8b27346505

💰 套餐优惠:全部 5 项 Pro 技能仅需 $29ko-fi.com/s/7625accf3f(立省 $16)

第一步 — 安装依赖

pip3 install rich --break-system-packages --quiet

第二步 — 快速安全扫描(Lite 版)

import os, re
from pathlib import Path
from rich.console import Console
from rich.table import Table
from rich.panel import Panel
from rich import box

console = Console()

SRC_PATH = os.environ.get("SOURCE_PATH",".").strip()
src      = Path(SRC_PATH)

# 查找一个待扫描的 Python 文件
if src.is_dir():
    py_files = list(src.rglob("*.py"))
    if not py_files:
        console.print(f"[yellow]未在 {SRC_PATH} 中找到 .py 文件[/yellow]")
        raise SystemExit(0)
    target = py_files[0]
    if len(py_files) > 1:
        console.print(f"[yellow]ℹ️  Lite 版每次仅扫描 1 个文件。当前扫描:{target}\n   (升级至 Pro 版可一次性扫描全部 {len(py_files)} 个文件)[/yellow]\n")
elif src.is_file():
    target = src
else:
    console.print(f"[red]❌ 未找到路径:{SRC_PATH}[/red]")
    raise SystemExit(1)

# 仅启用 Top 10 关键/高危规则(Lite 版)
RULES = [
    ("PY001","critical","security", r"bevals*(",                           "eval() 执行任意代码 —— 关键风险。",         "请改用 ast.literal_eval() 进行安全解析。"),
    ("PY002","critical","security", r"bexecs*(",                           "exec() 将字符串作为 Python 代码执行。",       "请重构代码,避免动态执行。"),
    ("PY003","critical","security", r"bpickle.loads?s*(",                 "使用不可信数据调用 pickle.load() → 可导致远程代码执行。",     "请改用 json.loads() 替代。"),
    ("PY004","high","security",     r"(?i)(password|secret|api_key|token)s*=s*[\'\"].+[\'\"]", "检测到硬编码凭证。",          "请移至环境变量中管理。"),
    ("PY005","high","security",     r"shells*=s*True",                      "subprocess 中启用 shell=True → 存在命令注入风险。",      "请改用列表参数形式:subprocess.run(['cmd','arg'])"),
    ("PY006","high","security",     r".executes*(.*(%|.format(|f[\'\"])|)", "通过字符串格式化可能导致 SQL 注入。",          "请使用参数化查询:cursor.execute(sql,(val,))"),
    ("PY009","medium","bug",        r"excepts*:",                            "空 except 子句会捕获 SystemExit 和 KeyboardInterrupt 等系统异常。",   "请显式使用 except Exception: 或捕获具体异常类型。"),
    ("PY016","medium","security",   r"hashlib.(md5|sha1)s*(",              "MD5/SHA1 已被密码学攻破,不再安全。",                  "请改用 hashlib.sha256() 或 bcrypt(用于密码哈希)。"),
    ("PY007","medium","bug",        r"defs+w+s*([^)]*=s*[\\[\\]])",      "可变默认参数 [] —— 将在所有函数调用间共享。",  "请使用 None 作为默认值,并在函数内部初始化列表。"),
    ("PY017","high","security",     r"brandom.(random|randint|choice)s*(", "random 模块不具备密码学安全性。",          "请改用 secrets 模块生成安全敏感值。"),
]

console.print(Panel.fit(
    f"[bold red]🐛 Argus Lite — 快速扫描[/bold red]\n"
    f"文件:[yellow]{target}[/yellow]\n"
    f"[dim]Lite 版:1 个文件、10 条规则 —— 升级 Pro 版可扫描整个代码库[/dim]",
    border_style="red"
))

findings = []
try:
    source = target.read_text(encoding="utf-8", errors="replace")
    for lineno, line in enumerate(source.splitlines(), 1):
        for rule_id, sev, category, pattern, message, fix in RULES:
            if re.search(pattern, line):
                findings.append({"id":rule_id,"severity":sev,"category":category,
                                 "line":lineno,"code":line.strip()[:80],"message":message,"fix":fix})
except Exception as e:
    console.print(f"[red]读取文件时出错:{e}[/red]")
    raise SystemExit(1)

# 去重处理(基于 rule_id + 行号)
seen, unique = set(), []
for f in findings:
    key = (f["id"],f["line"])
    if key not in seen:
        seen.add(key)
        unique.append(f)

SEV_COLOUR = {"critical":"red","high":"orange3","medium":"yellow","low":"dim"}

if not unique:
    console.print(Panel(
        f"[green]✅ 在 {RULES.__len__()} 条规则扫描中未发现任何问题![/green]\n"
        f"[dim]Pro 版支持 40+ 条规则扫描,涵盖性能模式等 —— 升级以获得全面覆盖。[/dim]",
        border_style="green"
    ))
else:
    tbl = Table(title=f"🔍 {len(unique)} 处问题(位于 {target.name})", box=box.ROUNDED, border_style="red")
    tbl.add_column("ID",      width=7,  style="dim")
    tbl.add_column("Sev",     width=9)
    tbl.add_column("Line",    width=6,  justify="right", style="yellow")
    tbl.add_column("Issue",   width=50)
    for fi in unique:
        sc = SEV_COLOUR.get(fi["severity"],"white")
        tbl.add_row(fi["id"],f"[{sc}]{fi['severity'].upper()}[/{sc}]",str(fi["line"]),fi["message"][:48])
    console.print(tbl)

    for fi in [f for f in unique if f["severity"] in ("critical","high")]:
        sc = SEV_COLOUR.get(fi["severity"],"white")
        console.print(Panel(
            f"[dim]第 {fi['line']} 行:[/dim] [italic]{fi['code']}[/italic]\n\n"
            f"[white]{fi['message']}[/white]\n\n"
            f"[green]修复建议:[/green] {fi['fix']}",
            title=f"[{sc}]{fi['severity'].upper()}[/{sc}] — {fi['id']}",
            border_style=sc
        ))

console.print()
console.print(Panel(
    f"[bold yellow]🔒 想要更多功能?[/bold yellow]\n\n"
    f"Argus Pro 可扫描 [bold]您的整个代码库[/bold],支持 [bold]40+ 条规则[/bold],覆盖 Python 与 JavaScript —— "
    f"包括性能问题、内存泄漏、N+1 查询模式等。此外还提供 CI 就绪的 JSON 输出及 FAIL_ON_CRITICAL 退出码。\n\n"
    f"[bold cyan]openclaw skills install argus-pro[/bold cyan]\n"
    f"获取授权密钥 → [bold]ko-fi.com/s/8b27346505[/bold]",
    title="升级至 Argus Pro",
    border_style="cyan"
))

相关专题

更多
Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

0

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

0

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

0

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

0

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

0

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

0

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

0

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

0

22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133万人学习