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

跨路径运行StaCoAn漏洞分析工具报NoSectionError错误求助

问题根因

StaCoAn的代码中加载配置文件时使用了相对路径,只有在项目根目录执行时,程序才能正确读取到同目录下的配置文件,切换到其他路径执行时相对路径指向的位置不存在合法的配置文件,因此抛出配置段不存在的报错。

解决方案

方案1:无需修改代码,适配流水线场景

在执行StaCoAn命令前先切换到工具的根目录,执行完成后再切回原工作目录即可,流水线中可以直接用子shell的方式执行,不会影响全局工作路径:

# 替换为你实际的StaCoAn根目录路径
STACOAN_PATH="/home/jenkins/StaCoAn"
# 子shell中执行,括号内的cd只作用于子进程
(cd $STACOAN_PATH && python src/stacoan.py 你的执行参数)
# 如果是用编译好的二进制文件,执行命令改为:
# (cd $STACOAN_PATH && ./stacoan 你的执行参数)

如果需要在任意路径直接调用,可以把上面的逻辑封装成shell脚本,放到/usr/local/bin等全局PATH路径下,示例脚本/usr/local/bin/stacoan内容如下:

#!/bin/bash
STACOAN_PATH="/home/jenkins/StaCoAn"
cd $STACOAN_PATH && exec ./stacoan "$@"

给脚本加执行权限:chmod +x /usr/local/bin/stacoan,之后在任意路径直接执行stacoan 参数即可正常使用。

方案2:修改源代码永久修复

修改配置文件加载逻辑,把相对路径改为基于当前文件路径拼接的绝对路径,找到项目中初始化configparser加载配置文件的代码位置,一般在src/config.py或者主入口开头的位置,将原来的加载代码:

config.read('config.ini')

修改为如下逻辑:

import os
# 获取当前文件所在的目录,向上定位到项目根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 拼接配置文件的绝对路径
CONFIG_PATH = os.path.join(BASE_DIR, 'config.ini')
config.read(CONFIG_PATH)

修改完成后重新测试非根目录执行,正常读取配置后即可解决该报错,需要二进制版本的话可以重新用PyInstaller编译一次即可。

内容的提问来源于stack exchange,提问作者Salvador Arreola Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:15:09