共用方式為


設定及自訂建置工作

注意

自 2022 年 12 月 31 日起,Microsoft 安全性程式碼分析 (MSCA) 擴充功能已淘汰。 MSCA 會由 Microsoft Security DevOps Azure DevOps 擴充功能取代。 請遵循 設定中的指示 來安裝和設定擴充功能。

本文會詳細說明每個建置工作中可用的組態選項。 本文從安全性程式碼分析工具的工作開始。 到後處理工作結束。

反惡意程式碼掃描器工作

注意

反惡意程式碼掃描器建置工作需要已啟用 Windows Defender 的組建代理程式。 裝載的 Visual Studio 2017 和更新版本可提供這樣的代理程式。 建置工作無法在 Visual Studio 2015 裝載的代理程式上執行。

雖然無法在這些代理程式上更新簽章,但簽章建立時間應該一律小於三個小時。

工作組態的詳細資料會顯示在下列螢幕擷取畫面和文字中。

設定反惡意程式碼掃描器建置工作

在螢幕擷取畫面的 [類型] 清單方塊中選取 [基本]。 選取 [自訂] 以提供能自訂掃描的命令列引數。

Windows Defender 會使用 Windows Update 用戶端來下載並安裝簽章。 如果您組建代理程式的簽章更新失敗,則 Windows Update 可能會顯示 HRESULT 錯誤碼。

如需 Windows Update 錯誤及其風險降低措施的詳細資訊,請參閱依元件列出的 Windows Update 錯誤碼和 TechNet 的 Windows Update 代理程式 - 錯誤碼一文。

如需這項工作 YAML 組態的相關資訊,請查看我們的反惡意程式碼 YAML 選項

BinSkim 工作

注意

您的組建必須先符合下列條件之一,才能執行 BinSkim 工作:

  • 您的組建能透過受控程式碼產生二進位成品。
  • 您已提交要用 BinSkim 分析的二進位成品。

工作組態的詳細資料會顯示在下列螢幕擷取畫面和清單中。

設定 BinSkim 建置工作

  • 將組建組態設為 [偵錯] 以產生 .pdb 偵錯檔案。 BinSkim 會利用這些檔案,將輸出二進位檔中的問題對應回原始程式碼。
  • 若要您不想研究和建立自己的命令列:
    • 在 [類型] 清單中,選取 [基本]。
    • 在 [函式] 清單中,選取 [分析]。
  • 在 [目標] 中,為檔案、目錄或篩選模式輸入一或多個規範。 這些規範會解析為一個或多個待分析的二進位檔:
    • 多個指定目標之間必須以分號 (;) 分隔。
    • 規範可以是單一檔案或包含萬用字元。
    • 目錄規格必須一律以 \* 結尾。
    • 範例:
           *.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 命令列引數、不同識別碼的規則或結束代碼的詳細資訊,請參閱 BinSkim 使用者指南

如需這項工作 YAML 組態的相關資訊,請查看我們的 BinSkim YAML 選項

認證掃描器工作

工作組態的詳細資料會顯示在下列螢幕擷取畫面和清單中。

設定認證掃描器建置工作

可用的選項包括:

  • 顯示名稱:Azure DevOps 工作的名稱。 預設值為 [執行認證掃描器]
  • 工具主要版本:可用的值包括 CredScan V2CredScan V1。 建議客戶使用 CredScan V2 版本。
  • 輸出格式:可用的值包括 TSVCSVSARIFPREfast
  • 工具版本:建議您選取 [最新]。
  • 掃描資料夾:待掃描的存放庫資料夾。
  • 搜尋程式檔案類型:尋找用於掃描的搜尋程式檔案的選項。
  • 歸併檔案JSON 檔案可以歸併輸出記錄中的問題。 如需關於歸併情形的詳細資訊,請參閱本文的常見問題集一節。
  • 詳細資訊輸出:不必解釋就能理解。
  • 批次大小:用來執行認證掃描器的並行執行緒數目。 預設值為 20。 可能值的範圍為 1 至 2,147,483,647。
  • 比對逾時: 在放棄繼續檢查之前,嘗試讓搜尋程式進行比對的時間 (單位為秒)。
  • 檔案掃描讀取緩衝區大小:讀取內容時所使用的緩衝區大小 (單位為位元組)。 預設值為 524,288。
  • 檔案掃描讀取位元組上限:在內容分析期間,要從指定檔案讀取的最大位元組數。 預設值為 104,857,600。
  • 控制選項>執行此工作:指定工作何時執行。 選擇 [自訂條件] 以指定更複雜的條件。
  • 版本:Azure DevOps 中的建置工作版本。 這個選項並不常用。

如需這項工作 YAML 組態的相關資訊,請查看我們的認證掃描器 YAML 選項

Roslyn 分析器工作

注意

您的組件必須先符合下列條件,才能執行 Roslyn 分析器工作:

  • 您的組建定義包含內建 MSBuild 或 VSBuild 建置工作以編譯 C# 或 Visual Basic 程式碼。 分析器工作需要內建工作的輸入和輸出,以在啟用 Roslyn 分析器的狀況下執行 MSBuild 編譯。
  • 執行此建置工作的組建代理程式已安裝 Visual Studio 2017 15.5 版或更新版本,因此它會使用第 2.6 版或更新版本的編譯器。

工作組態的詳細資料會顯示在下列清單和附註中。

可用的選項包括:

  • 規則集:其值為必要 SDL建議 SDL 或您的自訂規則集。
  • 分析器版本:建議您選取 [最新]。
  • 編譯器警告歸併檔案:包含歸併之警告識別碼清單的文字檔。
  • 控制選項>執行此工作:指定工作何時執行。 選擇 [自訂條件] 以指定更複雜的條件。

注意

  • Roslyn 分析器會與編譯器整合,而且只能做為 csc.exe 編譯的一部分來執行。 因此,這項工作需要重新執行或再次執行先前已在組建中執行過的編譯器命令。 此重新執行或執行的動作,會透過查詢 Azure DevOps (先前稱為 Visual Studio Team Services) 中的 MSBuild 建置工作記錄來完成。

    工作無法透過其他方法,從組建定義可靠地取得 MSBuild 編譯命令列。 我們曾考慮要加入任意形狀的文字方塊來讓使用者輸入其命令列。 但是這麼一來,就很難讓這些命令列保持最新狀態,並與主要組建同步。

    自訂組建需要重新執行整個命令集,而不能只執行編譯器命令。 在這些情況下,啟用 Roslyn 分析器並不是件簡單或可靠的事。

  • Roslyn 分析器會與編譯器整合。 Roslyn 分析器需要通過編譯才能叫用。

    這個新的建置工作需要重新編譯先前已建置的 C# 專案才能實作。 新工作只會使用與原始工作相同之組建或組建定義中的 MSBuild 和 VSBuild 建置工作。 不過,在此情況下,新工作會啟用 Roslyn 分析器以使用它們。

    如果新工作與原始工作在相同代理程式上執行,則新工作的輸出會覆寫原始工作在 s 來源資料夾中的輸出。 雖然組建輸出相同,但建議您執行 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 組態相關資訊,請查看我們的後置分析 YAML 選項

下一步

如需 YAML 型組態的相關資訊,請參閱我們的 YAML 組態指南

如果您有關於安全性程式碼分析擴充功能和所提供的工具的進一步問題,請參閱我們的常見問題集頁面