sourceanalyzer
是 Fortify SAST的核心命令行工具,其主要功能是扫描源代码或二进制文件,识别安全漏洞(如SQL注入、XSS、缓冲区溢出等)、代码质量缺陷,并生成可审计的报告。
以下从核心功能、常用命令选项、典型使用场景和注意事项四个维度详细说明。
.fpr
)和可视化报告(HTML、PDF、Excel等),包含漏洞详情、风险等级、修复建议。sourceanalyzer
命令的基本格式为:
sourceanalyzer [全局选项] [操作类型] [操作参数]
选项 | 说明 |
---|---|
-debug | 启用调试模式,输出详细日志(用于排查扫描失败问题)。 |
-verbose | 显示详细进度信息(如当前扫描的文件、规则匹配状态)。 |
-logfile <路径> | 指定日志文件路径(默认输出到标准输出)。 |
-Xmx<size> | 设置JVM堆内存大小(如 -Xmx4G 分配4GB内存,避免大项目内存不足)。 |
-D<属性名>=<值> | 自定义Java系统属性(如 -Dfortify.sca.skipDupFiles=true 跳过重复文件)。 |
扫描操作需指定输入源(代码目录、构建命令、二进制文件等),常见模式包括:
sourceanalyzer -b <构建标签> [-clean] <源代码目录或文件列表>
-b <标签>
:为本次扫描指定唯一标签(如 myapp-202409
),用于后续关联中间文件和报告。-clean
:清理之前同标签的扫描缓存(强制重新扫描,避免旧数据干扰)。示例:扫描Java项目 src/main/java
目录,标签为 myapp-scan
:
sourceanalyzer -b myapp-scan -Xmx4G src/main/java
通过调用构建工具(如Maven、Gradle)触发编译,并在编译过程中收集代码信息(更准确,支持依赖解析)。
sourceanalyzer -b myapp-scan mvn clean compile
javac
编译过程,提取代码和依赖信息。sourceanalyzer -b myapp-scan gradle clean compileJava
sourceanalyzer -b myapp-scan ant compile
适用于已编译的项目(如JAR、WAR、DLL),需指定类路径(Classpath):
sourceanalyzer -b myapp-scan -cp "lib/*.jar" -scan <二进制文件或目录>
-cp
:指定类路径(多个路径用;
或:
分隔,Windows用;
,Linux/macOS用:
)。扫描完成后,会生成 .fpr
格式的中间文件(Fortify Project File),包含扫描结果。通过以下命令生成可视化报告:
sourceanalyzer -b <标签> -f <报告路径> -format <格式> [报告选项]
<格式>
:支持 html
、pdf
、excel
、csv
等。-Dreport.template=<模板路径>:自定义报告模板(需提前准备XML模板)。-Dreport.showSummary=true:显示漏洞统计摘要。-Dreport.severity=High,Medium:仅输出高风险和中风险漏洞。
示例:生成HTML报告到 reports/myapp.html
:
sourceanalyzer -b myapp-scan -f reports/myapp.html -format html
.fpr
文件(用于离线分析或上传SSC):sourceanalyzer -b myapp-scan -export <输出.fpr路径>
.fpr
文件(用于合并多模块扫描结果):sourceanalyzer -b myapp-scan -import <输入.fpr路径>
选项 | 说明 |
---|---|
-exclude <路径或模式> | 排除不需要扫描的文件/目录(如测试代码、第三方库)。支持通配符(如 -exclude "src/test/**")。 |
-include <路径或模式> | 仅扫描指定文件/目录(与 -exclude 互补)。 |
-source <语言版本> | 指定源代码语言版本(如 -source 11 表示Java 11)。 |
-allow-dup-files | 允许扫描重复文件(默认跳过,避免重复计算)。 |
-multi-threaded <线程数> | 启用多线程扫描(如 -multi-threaded 8 使用8个线程,提升大项目速度)。 |
-incremental | 启用增量扫描(仅扫描自上次扫描后变更的文件,需保留缓存目录)。 |
# 步骤1:扫描代码(集成Maven构建)
sourceanalyzer -b myapp-scan -Xmx4G -multi-threaded 8 mvn clean compile
# 步骤2:生成HTML报告(包含高风险漏洞)
sourceanalyzer -b myapp-scan -f reports/myapp_high_risk.html -format html -Dreport.severity=High
sourceanalyzer -b cpp-app-scan \ -exclude "third_party/**" \ # 排除第三方库 -source c++17 \ # 指定C++17标准 -cp "/usr/local/lib/*" \ # 指定链接库路径 src/ # 扫描源代码目录
sourceanalyzer
版本需与Fortify SSC服务器版本匹配(如SSC 22.1需使用6.40+的SCA版本),否则可能导致报告上传失败。-multi-threaded
)和增量扫描(-incremental
)。-Xmx
),建议至少4GB(复杂项目需8GB+)。-exclude "src/test/**"
),减少误报。-debug -logfile scan.log
生成详细日志,检查是否有编译错误、权限问题或规则冲突。-Dfortify.ruleset=<自定义规则路径>
加载自定义安全规则(如企业内部合规要求)。sourceanalyzer -help
查看完整选项列表。如果需要更具体的操作示例(如与CI/CD集成、特定语言扫描),可以进一步提问!
相关内容:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。