用于自定义生成任务的 YAML 配置选项

注意

Microsoft 安全代码分析 (MSCA) 扩展在 2022 年 12 月 31 日正式停用。 MSCA 被 Microsoft Security DevOps Azure DevOps 扩展取代。 请按照配置中的说明来安装和配置该扩展。

本文列出了每个生成任务中可用的所有 YAML 配置选项。 本文首先介绍了与安全代码分析工具相关的任务, 最后介绍了处理后任务。

反恶意软件扫描程序任务

InputType 类型 适用于 必需 默认值 选项(针对 pickList) 说明
InputType pickList 通用 True 基本 基础、定制
扫描类型 pickList InputType = Basic 真实 自定义扫描 CustomScan、FullSystemScan、QuickScan、YourConfiguredScan 要用于反恶意软件扫描的扫描类型。
文件目录路径 文件路径 ScanType = CustomScan 真实 $(Build.StagingDirectory) 指示要扫描的文件或目录。
DisableRemediation boolean ScanType = CustomScan False 选中时:1) 将忽略文件排除。 2) 将扫描存档文件。 3) 检测后不采取措施。 4) 检测后不写入事件日志条目。 5) 来自自定义扫描的检测不会显示在用户界面中。 6) 控制台输出将显示来自自定义扫描的检测列表。
BootSectorScan boolean 扫描类型 = 自定义扫描 false 如果选中此选项,则启用启动扇区扫描。
参数 string InputType = 自定义 -Scan -ScanType 3 -DisableRemediation -File $(Build.StagingDirectory) 命令行参数,其中,-File 的参数是一个绝对路径,或者是相对于生成代理上预定义的 $(Build.StagingDirectory) 的相对路径。 注意:如果没有提供 -File 的参数作为最后一个参数,则它将默认为 $(Build.StagingDirectory)。 你还可以提供 MpCmdRun.exe 工具允许的你自己的参数。

有关此工具的命令行参数的更多详细信息,请在 Arguments 字段中输入 -h 或 -? 并执行生成任务。
EnableServices boolean 始终 错误的 如果选中,则当 Windows Update 所需的服务被禁用时,它会尝试启用这些服务。
注意:请确保组策略没有禁用这些服务,并且运行此生成的帐户具有管理员权限。
SupportLogOnError boolean 总是 True 如果选中此项,则当发生错误时,它会收集用于诊断的支持文件。 此过程可能需要几分钟时间。
注意:请确保运行此生成的帐户具有管理员权限。
将签名更新失败视为 pickList 通用 正确 警告 错误、标准、警告 在运行时无法更新特征时使用的日志级别。 如果设置为 Error,则无法更新特征会导致生成任务失败。 请注意,在托管的生成代理上,特征更新失败很常见,即使特征可能还相当新(存在时间不到 3 小时)。
SignatureFreshness pickList 通用 UpToDate OneDay、ThreeDays、TwoDays、UpToDate 反恶意软件特征的最大允许使用期限。 如果特征无法更新且早于此值,则生成任务将根据“特征使用期限验证方式”字段中的选定值进行操作。 注意:如果选择最新,签名最多允许是 3 小时以内的。
TreatStaleSignatureAs pickList 总是 正确 错误 错误、标准、警告 当特征使用期限早于所选的“反恶意软件特征使用期限”时使用的日志级别。 过期的特征可能会被视为警告信息以便继续进行反恶意软件扫描,但不建议这样做。

BinSkim 任务

InputType 类型 适用于 必需 默认值 选项(适用于选择列表) 说明
InputType pickList 总是 基本 Basic、CommandLine
论点 字符串 InputType = CommandLine True 要执行的标准 BinSkim 命令行参数。 输出路径会被删除并替换。
有关此工具的命令行参数的更多详细信息,请在 Arguments 字段中输入 help 并执行生成任务。
函数 pickList 输入类型 = 基本 True 分析 analyze、dump、exportConfig、exportRules
AnalyzeTarget 文件路径 输入类型 = 基本 && 功能 = 分析 $(Build.ArtifactStagingDirectory)*.dll;
$(Build.ArtifactStagingDirectory)*.exe
可解析为一个或多个要分析的二进制文件的文件、目录或筛选模式的一个或多个指定符。 (以分号“;”分隔的列表)
AnalyzeSymPath string 输入类型 = 基本 && 功能 = 分析 False 目标的符号文件的路径。
AnalyzeConfigPath 字符串 输入类型 = 基本 && 功能 = 分析 默认值 将要用来配置分析的策略文件的路径。 传递“default”值以使用内置设置。
AnalyzePluginPath string InputType = Basic && Function = analyze False 将针对分析集中的所有目标调用的插件的路径。
AnalyzeRecurse 布尔值 InputType = Basic && Function = analyze False 在评估文件说明符参数时递归到子目录中。
AnalyzeVerbose boolean InputType = Basic && Function = analyze False 假的 生成详细输出。 生成的综合性报告旨在提供合规性方案的相应证据。
AnalyzeHashes boolean 输入类型 = Basic 和 功能 = analyze False 错误的 发出 SARIF 报告时输出分析目标的 SHA-256 哈希。
AnalyzeStatistics boolean InputType = 基本 && Function = 分析 False 为分析会话生成计时和其他统计信息。
AnalyzeEnvironment boolean 输入类型 = 基本 且 功能 = 分析 将运行的计算机环境详细信息记录到输出文件中。 警告:此选项会将可能的敏感信息(例如所有环境变量值)记录到发出的任何日志中。
导出规则输出类型 pickList InputType = Basic && Function = exportRules SARIF SARIF、SonarQube 要输出的规则描述符文件的类型。 这将包含在由“发布安全分析日志”生成任务发布的 BinSkim 日志文件夹中。
DumpTarget 文件路径 InputType = Basic && Function = dump $(Build.ArtifactStagingDirectory) 一个或多个文件、目录或筛选模式的说明符,可以解析为要分析的一个或多个二进制文件。 (“;”分隔的列表)
DumpRecurse boolean InputType = Basic && Function = dump False 在评估文件说明符参数时递归到子目录中。
DumpVerbose boolean InputType = Basic && Function = dump False 输出详细信息。 生成的综合性报告旨在提供合规性方案的相应证据。
toolVersion pickList 总是 最新 1.5.0、最新、最新预发布版 要运行的工具的版本。

凭据扫描器任务

InputType 类型 适用于 必需 默认值 选择列表选项 说明
输出格式 pickList 通用 pre csv、pre、tsv 凭据扫描程序结果文件的输出格式。
工具版本 pickList 通用 False 最新 1.27.7、Latest、LatestPreRelease 要运行的工具的版本。
扫描文件夹 文件路径 总是 False $(Build.SourcesDirectory) 存储库中要在其中扫描凭据的文件夹。
搜索者文件类型 pickList 总是 False 默认 自定义、默认、默认和自定义 用于查找用于扫描的搜索器文件的选项。
searchersFile 文件路径 searchersFileType == Custom OR searchersFileType == DefaultAndCustom 错误的 要执行检查的凭据扫描器配置文件。 通过提供凭据扫描程序搜索器文件路径的逗号分隔列表,可以包含和使用多个值。
suppressionsFile 文件路径 总是 False 凭据扫描程序抑制文件,用于在输出日志中抑制问题。
suppressAsError boolean 总是 False 错误 被抑制的匹配项将输出到输出文件 [-O]-matches.[-f] 而非输出到默认抑制的输出文件 [-O]-suppressed.[-f]。 (默认值为“False”)
详细输出 boolean 总是 False 输出详细信息。
批量大小 string 总是 虚假 用于并行运行凭据扫描程序的并发线程数。 (默认值为 20)
值必须位于 1-2147483647 范围内。
regexMatchTimeoutInSeconds 字符串 总是 False 在放弃检查之前,尝试搜索器匹配所花费的时间(以秒为单位)。
-Co RegexMatchTimeoutInSeconds=<Value> 添加到命令行。
fileScanReadBufferSize 字符 通用 False 读取内容时的缓冲区大小(以字节为单位)。 (默认值为 524288)
-Co FileScanReadBufferSize=<Value> 添加到命令行。
maxFileScanReadBytes string 总是 False 在内容分析过程中,从给定文件读取的最大字节数。 (默认值为 104857600)
-Co MaxFileScanReadBytes=<Value> 添加到命令行。

Roslyn 分析器任务

InputType 类型 适用于 必需 默认值 选项(用于选择列表) 说明
用户提供构建信息 pickList 总是 auto auto、msBuildInfo 为用户提供用于 Roslyn 分析的 MSBuild 版本、MSBuild 体系结构和生成命令行的选项。 如果选择了 Auto,则此任务会从同一管道中以前的 MSBuildVSBuild 和/或 .NET Core(用于生成)任务中检索生成信息。
msBuildVersion pickList userProvideBuildInfo == msBuildInfo 真实 16.0 15.0、16.0 MSBuild 版本。
msBuild架构 pickList userProvideBuildInfo == msBuildInfo True x86 DotNetCore、x64、x86 MSBuild 体系结构。 注意:如果生成命令行调用 dotnet.exe 生成,请选择“通过 .NET Core”选项 。
msBuildCommandline string userProvideBuildInfo == msBuildInfo True 用于编译你的解决方案或项目的完整生成命令行。

说明:此命令行应当以 MSBuild.exedotnet.exe 的完整路径开头。
此命令在运行时将以 $(Build.SourcesDirectory) 作为工作目录。
rulesetName pickList 通用 建议 定制、无、推荐、必需 要使用的已命名规则集。

如果选择了“Ruleset Configured In Your Visual Studio Project File(s)”,则会使用在 VS 项目文件中预先配置的规则集。 如果选择了“Custom”,则可以设置自定义规则集路径选项。
rulesetVersion pickList 规则集名称 == 必需 OR 规则集名称 == 推荐 最新 8.0、8.1、8.2、最新、最新预发布 所选 SDL 规则集的版本。
自定义规则集 string rulesetName = Custom 要使用的规则集的可访问路径。 相对路径将规范化为源存储库的根 ($(Build.SourcesDirectory))。

如果规则集指定了 Rules 并将 Actions 设置为 Error,则生成任务会失败。 若要使用这样做的规则集,请在生成任务的 Continue on error 中选中 Control Options
microsoftAnalyzersVersion pickList 总是 False 最新 2.9.3、2.9.4、2.9.6、最新版本、最新预发布版本 要运行的 Microsoft.CodeAnalysis.FxCopAnalyzers 包的版本。
用于编译器警告的抑制文件 文件路径 总是 用于抑制 C# 和 VB 编译器警告的抑制文件。

一个纯文本文件,其中每个警告 ID 列在单独的一行。
对于编译器警告,请仅指定警告标识符的数字部分。 例如,1018 将抑制 CS1018,CA1501 将抑制 CA1501。

一个相对文件路径将追加到源代码库的根目录 ($(Build.SourcesDirectory))。

TSLint 任务

InputType 类型 适用于 必需 默认值 选项(针对选择列表) 说明
RuleLibrary pickList 总是 tslint custom、microsoft、tslint 所有结果都包括所选 TSLint 版本附带的规则(仅限基础)。

仅限基础 - 仅限 TSLint 附带的规则。

包括 Microsoft 规则 - 下载 tslint-microsoft-contrib 并包括其规则以供在 TSLint 运行中使用。 选择此选项将隐藏 Type Checking 复选框,因为该复选框是 Microsoft 的规则所需的,将会自动使用。 它还将取消隐藏 Microsoft Contribution Version 字段,从而允许选择 tslint-microsoft-contrib 中的 的版本。

包括自定义规则 - 取消隐藏 Rules Directory 字段,该字段接受供在 TSLint 运行中使用的 TSLint 规则所在目录的可访问路径。

注意: 默认值已更改为 tslint,因为许多用户在配置 Microsoft 规则集时遇到问题。 有关特定的版本配置,请参阅 GitHub 上的 tslint-microsoft-contrib
规则目录 字符串 RuleLibrary == custom 包含可供在 TSLint 运行中使用的其他 TSLint 规则的可访问目录。
规则集 pickList RuleLibrary != microsoft tsrecommended custom、tslatest、tsrecommended 定义要对 TypeScript 文件运行的规则。

tslint:latest - 扩展了 tslint:recommended 并不断更新以包括每个 TSLint 版本中的最新规则的配置。 使用此配置可能会在小版本更新之间引入不兼容更改,因为启用了会导致代码 lint 失败的新规则。 当 TSLint 进行重大版本更新时,tslint:recommended 将更新为与 tslint:latest 匹配一致。

tslint:recommended - TSLint 推荐用于一般 TypeScript 编程的一组稳定的、有点“固执己见”的规则。 此配置遵循 semver,因此它在次版本或修补程序版本之间不会有中断性变更。
RulesetMicrosoft pickList RuleLibrary == microsoft 正确 mssdlrequired 自定义、微软推荐、微软SDL推荐、微软SDL要求、最新版本、推荐版本 定义要对 TypeScript 文件运行的规则。

- 运行 tslint 提供的所有可用检查和满足所需安全开发生命周期 (SDL) 策略的 tslint-microsoft-contrib 规则。

microsoft:sdl-recommended - 运行所有符合 Security Development Lifecycle (SDL) 政策中必需和推荐的 tslint 和 tslint-microsoft-contrib 规则所提供的可用检查。

microsoft:recommended 所有由 tslint-microsoft-contrib 规则的创建者推荐的检查项目。 这包括安全检查和非安全检查。

tslint:latest - 扩展了 tslint:recommended 并不断更新以包括每个 TSLint 版本中的最新规则的配置。 在不同的次版本之间使用此配置可能会引入重大变更,因为启用了会导致代码中出现 lint 失败的新规则。 当 TSLint 进行重大版本更新时,tslint:recommended 将被更新为与 tslint:latest 相同。

tslint:recommended - TSLint 推荐用于一般 TypeScript 编程的一组稳定的、有点“固执己见”的规则。 此配置遵循 semver,因此它在次版本或修补程序版本之间不会有中断性变更。
规则集文件 string Ruleset == custom 或 RulesetMicrosoft == custom 配置文件指定要运行的规则。

配置路径将被添加为自定义规则的路径。
文件选择类型 pickList 总是 fileGlob fileGlob、projectFile
文件 字符串 FileSelectionType == fileGlob 正确 ***.ts 一个文件 glob,它确定了要处理的文件。 路径相对于 Build.SourcesDirectory 值。

Microsoft 的贡献库要求使用项目文件。 如果你将 Microsoft 的贡献库与 File Glob Pattern 选项一起使用,则会为你生成一个项目文件。
ECMAScriptVersion pickList FileSelectionType == fileGlob && RuleLibrary == microsoft 正确 ES3 ES2015、ES2016、ES2017、ES3、ES5、ES6、ESNext 使用 TypeScript 编译器所配置的 ECMAScript 目标版本。 使用项目文件时,这是 TypeScript tsconfig.json 文件的 compilerOptions.target 字段。
项目 字符串 FileSelectionType == projectFile 一个 tsconfig.json 文件的路径,该文件用于指定要对其运行 TSLint 的 TypeScript 文件。 路径相对于 Build.SourcesDirectory 值。
TypeCheck boolean RuleLibrary != microsoft && FileSelectionType == projectFile False 在运行 lint 分析规则时启用类型检查器。
ExcludeFiles string 总是 一个glob,用于指示要从Lint分析中排除的文件。 路径相对于 Build.SourcesDirectory 值。 可以指定多个值,用分号分隔。
输出格式 pickList 总是 json checkstyle、codeFrame、filesList、json、msbuild、pmd、prose、stylish、verbose、vso 用于生成输出的格式化程序。 请注意,JSON 格式与事后分析兼容。
NodeMemory 字符串 总是 False 分配给节点以运行 TSLint 的明确内存量,以 MB 为单位。 示例:8000

映射到节点的 --max_old_space=<value> CLI 选项,该选项是 v8 option
工具版本 pickList RuleLibrary != microsoft 正确 最新 4.0.0、4.0.1、4.0.2、4.1.0、4.1.1、4.2.0、4.3.0、4.3.1、4.4.0、4.4.1、4.4.2、4.5.0、4.5.1、5.0.0、5.1.0、5.2.0、5.3.0、5.3.2、5.4.0、5.4.1、5.4.2、5.4.3、5.5.0、latest TSLint 的版本,用于下载和运行。
TypeScript版本 pickList 总是 正确 最新 0.8.0、0.8.1、0.8.2、0.8.3、0.9.0、0.9.1、0.9.5、0.9.7、1.0.0、1.0.1、1.3.0、1.4.1、1.5.3、1.6.2、1.7.3、1.7.5、1.8.0、1.8.10、1.8.2、1.8.5、1.8.6、1.8.7、1.8.9、1.9.0、2.0.0、2.0.10、2.0.2、2.0.3、2.0.6、2.0.7、2.0.8、2.0.9、2.1.1、2.1.4、2.1.5、2.1.6、2.2.0、2.2.1、自定义、最新 要下载和使用的 TypeScript 的版本。
注意: 这需要与用来编译代码的 TypeScript 版本相同。
TypeScriptVersionCustom string TypeScriptVersion == 定制 真实 最新 要下载和使用的 TypeScript 的版本。
注意: 这需要与用来编译代码的 TypeScript 版本相同。
微软贡献版本 pickList RuleLibrary == microsoft 最新 4.0.0、4.0.1、5.0.0、5.0.1、最新版本 需下载并使用的 tslint-microsoft-contrib(SDL 规则)的版本。
注意:将选择与为 tslint-microsoft-contrib 选择的版本兼容的 tslint 版本。 此生成任务将封闭对 tslint-microsoft-contrib 的更新,直到可以进行一段时间的测试。

“发布安全分析日志”任务

InputType 类型 适用于 必需 默认值 选项(用于选择列表) 说明
工件名称 字符串 通用 真实 CodeAnalysisLogs 要创建的项目的名称。
工件类型 pickList 总是 容器 Container、FilePath 要创建的工件类型。
目标路径 string ArtifactType = FilePath 错误的 \my\share$(Build.DefinitionName)
$(Build.BuildNumber)
目标文件共享,用于复制文件
AllTools boolean 总是 发布由所有安全开发工具生成任务生成的结果。
AntiMalware boolean AllTools = false 正确 发布由反恶意软件生成任务生成的结果。
BinSkim 布尔值 AllTools = false 真实 发布由 BinSkim 生成任务生成的结果。
CredScan boolean AllTools = false 真实 发布由凭据扫描程序生成任务生成的结果。
RoslynAnalyzers boolean AllTools = false True 发布由 Roslyn 分析器构建任务生成的结果。
TSLint boolean AllTools = false 发布由 TSLint 生成任务生成的结果。 请注意,报告仅支持 JSON 格式的 TSLint 日志。 如果选择了其他格式,请相应地更新你的 TSLint 生成任务。
工具日志不存在操作 picklist 总是 真实 标准 错误、无、标准、警告 找不到所选工具的日志(意味着该工具未运行)时要采取的操作,或者在选中“所有工具”的情况下找不到任意工具的日志时要采取的操作。

选项:
None: 只有将 VSTS 变量 system.debug 设置为 true 时才会将消息写入到可访问的详细输出流中。
标准: (默认值)写入一条标准输出消息,指出没有找到该工具的日志。
警告: 写入一条黄色警告消息,指出没有找到该工具的日志,这将在生成摘要页上显示为警告。
错误: 写入一条红色错误消息并引发异常,中断生成。 使用此选项可确保通过选择各个工具来确保运行哪些工具。

安全报告任务

InputType 类型 适用于 必需 默认值 选项(针对选择列表) 说明
VstsConsole 布尔值 总是 错误的 将结果写入管道控制台。
TsvFile 布尔型 总是 False 生成一个 tsv 文件(制表符分隔的值),找到的每个结果对应一行,并使用制表符分隔结果信息。
HtmlFile boolean 总是 生成 html 报告文件。
AllTools boolean 总是 报告由所有安全开发工具构建任务所生成的结果。
BinSkim boolean AllTools = false 真实 假的 报告 BinSkim 构建任务生成的结果。
BinSkimBreakOn pickList AllTools = true OR BinSkim = true 真实 错误 错误、警告上方 要报告的结果的级别。
CredScan boolean AllTools = false 错误 报告由凭据扫描程序构建任务所产生的结果。
RoslynAnalyzers boolean AllTools = false True 报告由 Roslyn 分析器任务生成的结果。
RoslynAnalyzersBreakOn pickList AllTools = true OR RoslynAnalyzers = true 错误 错误,上方警告 要报告的结果的级别。
TSLint boolean AllTools = false 正确 报告由 TSLint 构建任务生成的结果。 请注意,报告仅支持 JSON 格式的 TSLint 日志。 如果选择了其他格式,请相应地更新你的 TSLint 生成任务。
TSLintBreakOn pickList AllTools = true OR TSLint = true 错误 错误、警告以上 要报告的结果的级别。
工具日志未找到操作 picklist 总是 标准 Error、None、Standard、Warning 找不到所选工具的日志(意味着该工具未运行)时要采取的操作,或者在选中“所有工具”的情况下找不到任意工具的日志时要采取的操作。

选项:
None: 只有将 VSTS 变量 system.debug 设置为 true 时才会将消息写入到可访问的详细输出流中。
标准: (默认值)写入一条标准输出消息,指出没有找到该工具的日志。
警告: 写入一条黄色警告消息,指出没有找到该工具的日志,这将在生成摘要页上显示为警告。
错误: 写入一条红色错误消息并引发异常,中断生成。 使用此选项可确保通过选择各个工具来确保运行哪些工具。
自定义日志文件夹 字符串 总是 分析工具日志所在的基文件夹;各个日志文件将位于此路径下按每个工具命名的子文件夹中。

事后分析任务

InputType 类型 适用于 必需 默认值 选项(例如下拉列表) 说明
AllTools 布尔值 总是 真实 错误 如果有任何 Microsoft 安全代码分析生成任务发现任何问题,则中断生成。
BinSkim boolean AllTools = false 如果根据你选择的“中断选项”发现任何 BinSkim 问题,则终止构建。
BinSkimBreakOn pickList AllTools = true OR BinSkim = true 真实 错误 错误,警告在上 导致构建失败的问题严重程度。
CredScan boolean AllTools = false 真实 如果发现任何凭据扫描程序问题,则中断生成。
RoslynAnalyzers boolean AllTools = false false 如果发现任何 Roslyn 分析器问题,则停止生成。
RoslynAnalyzersBreakOn pickList AllTools = true OR RoslynAnalyzers = true 正确 错误 错误、警告上方 足以中断构建的问题级别。
TSLint boolean AllTools = false false 如果发现任何 TSLint 问题,则中断生成。 请注意,事后分析仅支持 JSON 格式的 TSLint 日志。 如果选择了其他格式,请相应地更新你的 TSLint 生成任务。
TSLintBreakOn pickList AllTools = true OR TSLint = true True 错误 错误、警告在上 导致构建失败的问题的严重级别。
VstsConsole boolean 总是 False 将结果写入管道控制台。
工具日志未找到操作 picklist 总是 正确 标准 错误、无、标准、警告 找不到所选工具的日志(意味着该工具未运行)时要采取的操作,或者在选中“所有工具”的情况下找不到任意工具的日志时要采取的操作。

选项:
None: 只有将 VSTS 变量 system.debug 设置为 true 时才会将消息写入到可访问的详细输出流中。
标准: (默认值)写入一条标准输出消息,指出没有找到该工具的日志。
警告: 写入一条黄色警告消息,指出没有找到该工具的日志,这将在生成摘要页上显示为警告。
错误: 写入一条红色错误消息并引发异常,中断生成。 使用此选项可确保通过选择各个工具来确保运行哪些工具。

后续步骤

对于安全代码分析扩展和所提供的工具,如果仍有疑问,请查看我们的常见问题解答页