配置和自定义生成任务
注释
自 2022 年 12 月 31 日起,Microsoft安全代码分析(MSCA)扩展已停用。 MSCA 已被 Microsoft 安全 DevOps Azure DevOps 扩展 替代。 按照 配置 中的说明安装和配置扩展。
本文详细介绍了每个生成任务中可用的配置选项。 本文从安全代码分析工具的任务开始。 它以处理后任务结束。
反恶意软件扫描任务
注释
反恶意软件扫描程序生成任务需要启用 Windows Defender 的生成代理。 托管的 Visual Studio 2017 及更高版本提供此类代理工具。 生成任务不会在 Visual Studio 2015 托管代理上运行。
尽管无法在这些代理上更新安全签名,但安全签名应始终处于更新状态,不超过 3 小时。
任务配置的详细信息显示在以下屏幕截图和文本中。
在屏幕截图的 “类型 ”列表框中,已选择 “基本 ”。 选择 “自定义 ”以提供自定义扫描的命令行参数。
Windows Defender 使用 Windows 更新客户端下载和安装签名。 如果签名更新在您的生成代理上失败,则 HRESULT 错误代码可能来自 Windows 更新。
有关 Windows 更新错误及其缓解的详细信息,请参阅 Windows 更新错误代码(按组件 和 TechNet 文章 Windows 更新代理 - 错误代码)。
有关此任务的 YAML 配置的信息,请查看 我们的反恶意软件 YAML 选项
BinSkim 任务
注释
在运行 BinSkim 任务之前,您的生成项目必须满足以下条件之一:
- 您的构建从托管代码生成二进制工件。
- 你已提交要通过 BinSkim 分析的二进制工件。
以下屏幕截图和列表显示了任务配置的详细信息。
- 将生成配置设置为“调试”,以便生成 .pdb 调试文件。 BinSkim 使用这些文件将输出二进制文件中的问题映射回源代码。
- 为了避免研究和创建自己的命令行:
- 在 “类型” 列表中,选择“ 基本”。
- 在 “函数 ”列表中,选择“ 分析”。
- 在 Target 中,输入文件、目录或筛选器模式的一个或多个说明符。 这些说明符将解析为一个或多个需要分析的二进制文件:
- 多个指定的目标必须用分号分隔(;))。
- 说明符可以是单个文件,也可以包含通配符。
- 目录规范必须始终以 \*结尾。
- 例子:
*.dll;*.exe
$(BUILD_STAGINGDIRECTORY)\*
$(BUILD_STAGINGDIRECTORY)\*.dll;$(BUILD_STAGINGDIRECTORY)\*.exe;
- 如果在类型列表中选择命令行,则需要运行 binskim.exe:
- 确保传递给 binskim.exe 的第一个参数是动词 分析,后面跟一个或多个路径指定。 每个路径可以是完整路径,也可以是相对于源目录的路径。
- 多个目标路径必须用空格分隔。
- 可以省略 /o 或 /output 选项。 将为你添加或替换输出值。
- 标准命令行配置如下所示。
analyze $(Build.StagingDirectory)\* --recurse --verbose
analyze *.dll *.exe --recurse --verbose
注释
如果为目标指定目录时,尾随 \* 字符非常重要。
有关 BinSkim 命令行参数、按 ID 列出的规则或退出代码的详细信息,请参阅 BinSkim 用户指南。
有关此任务的 YAML 配置的信息,请查看 BinSkim YAML 选项
凭据扫描器任务
以下屏幕截图和列表显示了任务配置的详细信息。
可用选项包括:
- 显示名称:Azure DevOps 任务的名称。 默认值为“运行凭据扫描程序”
- 工具主版本:可用值包括 CredScan V2、 CredScan V1。 我们建议客户使用 CredScan V2 版本。
- 输出格式:可用值包括 TSV、 CSV、 SARIF 和 PREfast。
- 工具版本:建议选择 “最新”。
- 扫描文件夹:要扫描的存储库文件夹。
- 搜索器文件类型:用于查找用于扫描的搜索程序文件的选项。
- 抑制文件: JSON 文件可以抑制输出日志中的问题。 有关抑制方案的详细信息,请参阅本文的常见问题解答部分。
- 详细输出:不言自明。
- 批大小:用于运行凭据扫描程序的并发线程数。 默认值为 20。 可能的值范围为 1 到 2,147,483,647。
- 匹配超时:在放弃检查之前尝试搜索程序匹配的时间(以秒为单位)。
- 文件扫描读取缓冲区大小:读取内容时使用的缓冲区的大小(以字节为单位)。 默认值为 524,288。
- 最大文件扫描读取字节数:内容分析期间要从文件读取的最大字节数。 默认值为 104,857,600。
- 控件选项>运行此任务:指定任务何时运行。 选择 “自定义条件 ”以指定更复杂的条件。
- 版本:Azure DevOps 中的生成任务版本。 此选项不经常使用。
有关此任务的 YAML 配置的信息,请查看 凭据扫描程序 YAML 选项
Roslyn 分析器任务
注释
在运行 Roslyn 分析器任务之前,构建需要满足以下条件:
- 你的生成定义包括用于编译 C# 或 Visual Basic 代码的内置的 MSBuild 或 VSBuild 构建任务。 分析器任务依赖于内置任务的输入和输出来运行启用了 Roslyn 分析器的 MSBuild 编译。
- 运行此生成任务的生成代理已安装 Visual Studio 2017 版本 15.5 或更高版本,以便使用编译器版本 2.6 或更高版本。
任务配置的详细信息显示在以下列表中,请注意。
可用选项包括:
- 规则集:值是 SDL 必需、 SDL 建议或你自己的自定义规则集。
- 分析器版本:建议选择 “最新”。
- 编译器警告抑制文件:包含已禁止的警告 ID 列表的文本文件。
- 控件选项>运行此任务:指定任务何时运行。 选择 “自定义条件 ”以指定更复杂的条件。
注释
Roslyn 分析器与编译器集成,只能作为 csc.exe 编译的一部分运行。 因此,此任务需要先前在生成中运行的编译器命令才能重新播放或再次运行。 此重播或运行是通过查询 Azure DevOps(前 Visual Studio Team Services)获取 MSBuild 生成任务日志来完成的。
没有其他方法可以使任务可靠地从生成定义中获取 MSBuild 编译命令行。 我们考虑添加任意多边形文本框,以允许用户输入其命令行。 不过,要保持这些命令行 up-to-date 与主版本同步会很困难。
自定义生成需要重播整个命令集,而不仅仅是编译器命令。 在这些情况下,启用 Roslyn 分析器并不简单或可靠。
Roslyn 分析器与编译器集成。 若要调用,Roslyn 分析器需要编译。
此新生成任务是通过重新编译已生成的 C# 项目来实现的。 新任务仅使用与原始任务相同构建或构建定义中的 MSBuild 和 VSBuild 构建任务。 但是,在这种情况下,新任务会将它们与已启用 Roslyn 分析器一起使用。
如果新任务与原始任务在同一代理上运行,则新任务的输出将 覆盖源文件夹中 的原始任务的输出。 虽然生成输出相同,但我们建议运行 MSBuild,将输出复制到项目暂存目录,然后运行 Roslyn 分析器。
有关 Roslyn 分析器任务的其他资源,请查看 基于 Roslyn 的分析器。
可以在 NuGet 页 Microsoft.CodeAnalysis.FxCopAnalyzers 中找到此生成任务安装和使用的分析器包。
有关此任务的 YAML 配置的信息,请查看 Roslyn 分析器 YAML 选项
TSLint 任务
有关 TSLint 的详细信息,请转到 TSLint GitHub 存储库。
注释
如你所知, TSLint GitHub 存储库主页显示 TSLint 将在 2019 年某个时候弃用。 Microsoft正在调查 ESLint 作为替代任务。
有关此任务的 YAML 配置的信息,请查看 TSLint YAML 选项
发布安全分析日志任务
以下屏幕截图和列表显示了任务配置的详细信息。
- 项目名称:任何字符串标识符。
- 项目类型:根据所选内容,可以将日志发布到 Azure DevOps Server 或可供生成代理访问的共享文件。
- 工具:可以选择保留特定工具的日志,也可以选择“ 所有工具” 来保留所有日志。
有关此任务的 YAML 配置的信息,请查看我们的 发布安全日志 YAML 选项
安全报告任务
以下屏幕截图和列表显示了安全报告配置的详细信息。
- 报告:选择 管道控制台、TSV 文件 或 HTML 文件格式 。 为每个所选格式创建一个报表文件。
- 工具:选择要在其中汇总检测到问题的生成定义中的工具。 对于选择的每个工具,可以选择是只看到错误,还是在摘要报告中同时看到错误和警告。
- 高级选项:如果没有所选工具之一的日志,可以选择记录警告或错误。 如果记录错误,任务将失败。
- 基本日志文件夹:可以自定义要在其中找到日志的基日志文件夹。 但通常不使用此选项。
有关此任务的 YAML 配置的信息,请查看 安全报告 YAML 选项
分析后任务
以下屏幕截图和列表显示了任务配置的详细信息。
- 工具:选择在生成定义中可有条件注入生成中断的工具。 对于所选的每个工具,您可能有选项来选择是仅在错误时中断,还是在错误和警告时都中断。
- 报告:您可以选择性地写下导致生成中断的结果。 结果将写入 Azure DevOps 控制台窗口和日志文件。
- 高级选项:如果没有所选工具之一的日志,可以选择记录警告或错误。 如果记录错误,任务将失败。
有关此任务的 YAML 配置的信息,请查看 Post Analysis YAML 选项
后续步骤
有关基于 YAML 的配置的信息,请参阅我们的 YAML 配置指南。
如果对安全代码分析扩展和提供的工具有进一步的问题,请查看 我们的常见问题解答页。