# 使用说明

# 扫描规则

目前内置了几千条扫描规则,可以通过语言、问题级别、类型以及规则名称对规则进行筛选。 An image 点击规则列表的每行可以查看规则检查详情页,在详情页中可以对规则进行编辑 注:只有企业管理员有扫描规则的编辑权限 An image 编辑时可以修改规则的问题级别以及类型。取消编辑可以取消编辑状态,点右下角的确定是保存编辑内容,取消则是关闭规则详情页。 An image

# 规则集

在代码库设置扫描规则时需要设置规则集,对代码进行扫描时将会按照规则集中的规则出具报告。

系统内置了一个规则集,包括所有的规则,企业管理员也可以自定义规则集,点右上角的新建,自定义规则集。新建包括两种形式:一种是直接新建另一种是从其他规则集复制。

An image

  • 直接新建规则集:需要填写规则集名称、说明、可以直接设置规则集的管理员、按照语言、问题级别、类型以及规则名称对规则进行筛选并将规则添加到规则集中。

An image

  • 从其他规则集复制:需要填写规则集名称、说明、可以直接设置规则集的管理员、选择规则集时可以选择多个规则集,若选择多个规则集时规则取已选择的规则集的并集。

An image

  • 查看、复制、删除:可直接点击规则集列表中的每行直接查看规则集详情,也可以点右侧的查看浏览规则集详情。在列表页可以直接进行规则集的复制和删除。

An image

  • 编辑:在规则集的详情页可以直接对规则集进行编辑,取消编辑可以取消编辑状态,点右下角的确定是保存编辑内容,取消则是关闭规则详情页。

An image

# 被检项目

# 被检项目列表

支持对git/svn协议的第三方代码库进行代码扫描,支持手动扫描、单次定时扫描、周期性定时扫描 An image

# 添加被检项目

填写仓库基本信息,包括:git/svn地址、用户名和密码。
An image
填写被检项目的手动和周期性定时扫描配置,点击【保存】,被检项目添加完成。
手动全量扫描配置页
An image
定时全量扫描配置页
An image

# 被检项目权限管理

点击被检项目的【成员与角色】按钮,可以查看被检项目的角色管理和成员管理。
角色管理tab页展示管理员、普通成员、访客的角色权限
An image
成员管理tab页,展示不同角色下成员信息,支持被检项目管理员添加、删除成员操作
An image

# 手动发起扫描

点击被检项目的【手动发起扫描】按钮,用户填写完需要扫描的分支后,手动触发代码扫描。 An image
An image
手动扫描支持设置单次定时扫描。触发方式选择【定时扫描】后,设置运行时间,单次执行的定时扫描设置完成。
An image

# 扫描历史任务

点击被检项目的【扫描历史任务】按钮,查看被检项目执行过的所有历史任务记录,点击扫描记录,展示扫描报告详情 An image An image

# 扫描.Net Framework项目

# 基于经典.Net Framework开发的项目, 扫描时计算资源要求采用Machine模式的Windows节点

扫描过程中需要对项目进行编译,请确保用于执行扫描任务的Windows节点上满足项目编译环境(基于MSBuild),且已安装了Java jre, Git, NodeJs(可选)

注:此部分基础环境由用户自己配置,以上可执行程序及编译器MSBuild.exe确保已配置到了全局Path路径,若项目中除了C#同时还有Js等其他语言文件要扫描,请安装扫描工具所需的NodeJs环境(推荐版本v14)

An image

# 上面的基础环境准备好后,下载压缩包并解压到固定目录C:\ProgramData\ezScan\下面即可

下载命令:curl -o scanner_win64.zip "https://ezone.work/pkg/ezscan/raw/file/snapshot?version=v1.0.0&pkgName=ezscan/scanner" -k -u ezscan:3e2e0cf2188347738d1f33819e3853b81652426652079

解压后在C:\ProgramData\ezScan\下有两个子目录:scanner和MSBuildScanner

  • scanner目录下main.exe是扫描器终端程序(基于python3.9.11 win64环境打包)
  • MSBuildScanner下是.Net Framework项目的扫描工具(依赖Java运行环境)

# SpotBugs扫描参数说明

Java项目流水线编译构建插件支持对编译产出进行扫描,目前支持Maven, Gradle, Ant三种构建插件。

# - 编译产出路径

请填写编译产出文件的相对路径:每次构建任务默认会有一个工作目录/build/{当前构建编号},生成的文件都会在这个工作目录下。

若项目编译后的class文件在工作目录相对路径/output/classes下,请填写output/classes,扫描工具会遍历目录/build/{当前构建编号}/output/classes下的class文件进行分析。

若要直接分析jar包文件,同理填写jar包所在的目录即可。

注意

  • 如果指定目录下同时包含jar包和class文件,则扫描工具只会分析jar包忽略class文件;可同时分析目录下的多个jar包。 若有不用分析的三方jar包或class文件,请注意不要放在该目录下,避免因三方文件过多造成不必要的分析甚至会分析超时。

  • 对于Ant编译产出,由于SpotBugs原始分析结果中仅包含代码问题所属的类、方法等粗略信息,而缺失代码问题所在文件、行号等关键信息,扫描报告中目前还未展示问题行号以及具体的代码片段。 在处理扫描报告时会根据类、方法等信息匹配代码库文件路径(前提是文件名和类名是一致的)。

# - 只需扫描的包名

对于大项目,包比较多扫描时间较长或者只想关注部分核心的包,可以指定只想扫描的包名,支持通配符。

  • 包名或class需填写完整的引用路径,例如:com.foobar.pkgname.*
  • 如果要分析所有子包,将*换成-,例如:com.foobar.pkgname.-

参数说明原文:

onlyAnalyze: com.foobar.MyClass, com.foobar.mypkg.*:

Restrict analysis to find bugs to given comma-separated list of classes and packages. Unlike filtering, this option avoids running analysis on classes and packages that are not explicitly matched: for large projects, this may greatly reduce the amount of time needed to run the analysis. (However, some detectors may produce inaccurate results if they aren’t run on the entire application.) Classes should be specified using their full classnames (including package), and packages should be specified in the same way they would in a Java import statement to import all classes in the package (i.e., add .* to the full name of the package). Replace .* with .- to also analyze all subpackages.