Udostępnij za pośrednictwem


Konfigurowanie i dostosowywanie zadań kompilacji

Uwaga

Od 31 grudnia 2022 r. rozszerzenie Microsoft Security Code Analysis (MSCA) zostało wycofane. Narzędzie MSCA jest zastępowane przez rozszerzenie DevOps usługi Azure DevOps firmy Microsoft. Postępuj zgodnie z instrukcjami w temacie Konfigurowanie , aby zainstalować i skonfigurować rozszerzenie.

W tym artykule opisano szczegółowo opcje konfiguracji dostępne w każdym z zadań kompilacji. Artykuł rozpoczyna się od zadań narzędzi do analizy kodu zabezpieczeń. Kończy się to zadaniami przetwarzania końcowego.

Zadanie skanera chroniącego przed złośliwym oprogramowaniem

Uwaga

Zadanie kompilacji Skaner ochrony przed złośliwym oprogramowaniem wymaga agenta kompilacji z włączonym Windows Defender. Hostowany program Visual Studio 2017 lub nowszy udostępnia taki agent. Zadanie kompilacji nie zostanie uruchomione na hostowanym agencie programu Visual Studio 2015.

Chociaż sygnatury nie mogą być aktualizowane na tych agentach, sygnatury powinny być zawsze starsze niż trzy godziny.

Szczegóły konfiguracji zadania są wyświetlane na poniższym zrzucie ekranu i tekście.

Konfigurowanie zadania kompilacji skanera chroniącego przed złośliwym oprogramowaniem

W polu Typ listy zrzutu ekranu jest wybrana opcja Podstawowa . Wybierz pozycję Niestandardowe , aby podać argumenty wiersza polecenia, które dostosują skanowanie.

Windows Defender używa klienta Windows Update do pobierania i instalowania podpisów. Jeśli aktualizacja podpisu zakończy się niepowodzeniem w agencie kompilacji, kod błędu HRESULT prawdopodobnie pochodzi z Windows Update.

Aby uzyskać więcej informacji na temat błędów Windows Update i ich ograniczania ryzyka, zobacz Windows Update kody błędów według składnika i artykułu TechNet Windows Update Agent — kody błędów.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML chroniących przed złośliwym oprogramowaniem

BinSkim, zadanie

Uwaga

Przed uruchomieniem zadania BinSkim kompilacja musi spełniać jeden z następujących warunków:

  • Kompilacja tworzy artefakty binarne z kodu zarządzanego.
  • Masz zatwierdzone artefakty binarne, które chcesz przeanalizować za pomocą binskim.

Szczegóły konfiguracji zadania są wyświetlane na poniższym zrzucie ekranu i liście.

Konfigurowanie zadania kompilacji BinSkim

  • Ustaw konfigurację kompilacji na Debuguj, aby pliki debugowania .pdb zostały wygenerowane. BinSkim używa tych plików do mapowania problemów w wyjściowych plikach binarnych z powrotem do kodu źródłowego.
  • Aby uniknąć badań i tworzenia własnego wiersza polecenia:
    • Na liście Typ wybierz pozycję Podstawowe.
    • Na liście Funkcja wybierz pozycję Analizuj.
  • W polu Cel wprowadź co najmniej jeden specyfikator wzorca pliku, katalogu lub filtru. Te specyfikatory rozpoznają co najmniej jeden plik binarny do przeanalizowania:
    • Wiele określonych obiektów docelowych musi być rozdzielonych średnikami (;).
    • Specyfikator może być pojedynczym plikiem lub zawierać symbole wieloznaczne.
    • Specyfikacje katalogów muszą zawsze kończyć się ciągiem \*.
    • Przykłady:
           *.dll;*.exe
           $(BUILD_STAGINGDIRECTORY)\*
           $(BUILD_STAGINGDIRECTORY)\*.dll;$(BUILD_STAGINGDIRECTORY)\*.exe;
  • Jeśli wybierzesz pozycję Wiersz polecenia na liście Typ , musisz uruchomić binskim.exe:
    • Upewnij się, że pierwsze argumenty do binskim.exe to analiza czasownika, po którym następuje co najmniej jedna specyfikacja ścieżki. Każda ścieżka może być pełną ścieżką lub ścieżką względną względem katalogu źródłowego.
    • Wiele ścieżek docelowych musi być oddzielonych spacją.
    • Można pominąć /o lub /output opcji. Wartość wyjściowa jest dodawana lub zastępowana.
    • Standardowe konfiguracje wiersza polecenia są wyświetlane w następujący sposób.
           analyze $(Build.StagingDirectory)\* --recurse --verbose
           analyze *.dll *.exe --recurse --verbose

Uwaga

Końcowy znak \* jest ważny, jeśli określisz katalogi dla obiektu docelowego.

Aby uzyskać więcej informacji na temat argumentów wiersza polecenia BinSkim, reguł według identyfikatora lub kodów zakończenia, zobacz Podręcznik użytkownika BinSkim.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami BinSkim YAML

Zadanie skanera poświadczeń

Szczegóły konfiguracji zadania są wyświetlane na poniższym zrzucie ekranu i liście.

Konfigurowanie zadania kompilacji Skaner poświadczeń

Dostępne opcje to:

  • Nazwa wyświetlana: nazwa zadania usługi Azure DevOps. Wartość domyślna to Uruchom skaner poświadczeń
  • Wersja główna narzędzia: dostępne wartości to CredScan V2, CredScan V1. Zalecamy klientom korzystanie z wersji CredScan w wersji 2 .
  • Format danych wyjściowych: dostępne wartości obejmują TSV, CSV, SARIF i PREfast.
  • Wersja narzędzia: zalecamy wybranie pozycji Najnowsze.
  • Folder skanowania: folder repozytorium do przeskanowania.
  • Typ pliku wyszukiwania: opcje lokalizowania pliku wyszukiwania, który jest używany do skanowania.
  • Plik pomijania: plik JSON może pomijać problemy w dzienniku danych wyjściowych. Aby uzyskać więcej informacji na temat scenariuszy pomijania, zobacz sekcję często zadawanych pytań w tym artykule.
  • Pełne dane wyjściowe: objaśnienia.
  • Rozmiar partii: liczba współbieżnych wątków używanych do uruchamiania skanera poświadczeń. Wartość domyślna to 20. Możliwe wartości wahają się od 1 do 2 147 483 647.
  • Limit czasu dopasowania: ilość czasu w sekundach na podjęcie próby dopasowania wyszukiwania przed porzuceniem sprawdzania.
  • Rozmiar buforu odczytu skanowania pliku: rozmiar w bajtach buforu używanego podczas odczytywania zawartości. Wartość domyślna to 524 288.
  • Maksymalna liczba bajtów odczytu skanowania plików: maksymalna liczba bajtów do odczytu z pliku podczas analizy zawartości. Wartość domyślna to 104 857 600.
  • Opcje kontrolki>Uruchom to zadanie: określa, kiedy zadanie zostanie uruchomione. Wybierz pozycję Warunki niestandardowe , aby określić bardziej złożone warunki.
  • Wersja: wersja zadania kompilacji w usłudze Azure DevOps. Ta opcja nie jest często używana.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML skanera poświadczeń

Roslyn Analyzers, zadanie

Uwaga

Przed uruchomieniem zadania Roslyn Analyzers kompilacja musi spełniać następujące warunki:

  • Definicja kompilacji obejmuje wbudowane zadanie kompilacji MSBuild lub VSBuild w celu skompilowania kodu C# lub Visual Basic. Zadanie analizatorów opiera się na danych wejściowych i wyjściowych wbudowanego zadania w celu uruchomienia kompilacji programu MSBuild z włączonymi analizatorami Roslyn.
  • Agent kompilacji z uruchomionym tym zadaniem kompilacji ma zainstalowany program Visual Studio 2017 w wersji 15.5 lub nowszej, aby używał kompilatora w wersji 2.6 lub nowszej.

Szczegóły konfiguracji zadania są wyświetlane na poniższej liście i uwaga.

Dostępne opcje to:

  • Zestaw reguł: wartości są wymagane przez protokół SDL, zalecane przez SDL lub własny niestandardowy zestaw reguł.
  • Wersja analizatorów: zalecamy wybranie pozycji Najnowsze.
  • Ostrzeżenia kompilatora Pomijanie pliku: plik tekstowy z listą ostrzeżeń, które są pomijane.
  • Opcje kontrolki>Uruchom to zadanie: określa, kiedy zadanie zostanie uruchomione. Wybierz pozycję Warunki niestandardowe , aby określić bardziej złożone warunki.

Uwaga

  • Analizatory Roslyn są zintegrowane z kompilatorem i mogą być uruchamiane tylko w ramach kompilacji csc.exe. W związku z tym to zadanie wymaga polecenia kompilatora, które uruchomione wcześniej w kompilacji mają być odtwarzane lub uruchamiane ponownie. To ponowne odtwarzanie lub uruchamianie odbywa się przez wykonywanie zapytań względem usługi Azure DevOps (wcześniej Visual Studio Team Services) dla dzienników zadań kompilacji programu MSBuild.

    Nie ma innego sposobu, aby zadanie niezawodnie pobrać wiersz polecenia kompilacji MSBuild z definicji kompilacji. Rozważaliśmy dodanie wolnego pola tekstowego, aby umożliwić użytkownikom wprowadzanie ich wierszy poleceń. Ale wtedy trudno byłoby zachować aktualność tych wierszy poleceń i zsynchronizować z główną kompilacją.

    Kompilacje niestandardowe wymagają ponownego odtworzenia całego zestawu poleceń, a nie tylko poleceń kompilatora. W takich przypadkach włączenie analizatorów Roslyn nie jest proste ani niezawodne.

  • Analizatory Roslyn są zintegrowane z kompilatorem. Do wywołania analizatory Roslyn wymagają kompilacji.

    To nowe zadanie kompilacji jest implementowane przez ponowne kompilowanie projektów języka C#, które zostały już utworzone. Nowe zadanie używa tylko zadań kompilacji MSBuild i VSBuild w tej samej definicji kompilacji lub kompilacji co oryginalne zadanie. Jednak w tym przypadku nowe zadanie używa ich z włączonymi analizatorami Roslyn.

    Jeśli nowe zadanie jest uruchamiane na tym samym agencie co oryginalne zadanie, dane wyjściowe nowego zadania zastępują dane wyjściowe oryginalnego zadania w folderze źródeł. Mimo że dane wyjściowe kompilacji są takie same, zalecamy uruchomienie programu MSBuild, skopiowanie danych wyjściowych do katalogu przejściowego artefaktów, a następnie uruchomienie analizatorów Roslyn.

Aby uzyskać dodatkowe zasoby dla zadania Roslyn Analyzers, zapoznaj się z analizatorami opartymi na platformie Roslyn.

Pakiet analizatora jest zainstalowany i używany przez to zadanie kompilacji na stronie NuGet Microsoft.CodeAnalysis.FxCopAnalyzers.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML analizatorów Roslyn

TSLint, zadanie

Aby uzyskać więcej informacji na temat TSLint, przejdź do repozytorium TSLint GitHub.

Uwaga

Jak być może wiesz, strona główna repozytorium GitHub TSLint mówi, że TSLint będzie przestarzały w 2019 roku. Firma Microsoft bada narzędzie ESLint jako alternatywne zadanie.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami TSLint YAML

Publikowanie zadania Dzienniki analizy zabezpieczeń

Szczegóły konfiguracji zadania są wyświetlane na poniższym zrzucie ekranu i liście.

Konfigurowanie zadania kompilacji Publikowanie dzienników analizy zabezpieczeń

  • Nazwa artefaktu: dowolny identyfikator ciągu.
  • Typ artefaktu: w zależności od wybranego wyboru można publikować dzienniki w Azure DevOps Server lub do udostępnionego pliku dostępnego dla agenta kompilacji.
  • Narzędzia: możesz zachować dzienniki dla określonych narzędzi lub wybrać pozycję Wszystkie narzędzia , aby zachować wszystkie dzienniki.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML w dziennikach zabezpieczeń publikowania

Zadanie Raport zabezpieczeń

Szczegóły konfiguracji raportu zabezpieczeń są wyświetlane na poniższym zrzucie ekranu i liście.

Konfigurowanie zadania kompilacji Raportu zabezpieczeń

  • Raporty: wybierz dowolną konsolę potoku, plik TSV i formaty plików HTML . Jeden plik raportu jest tworzony dla każdego wybranego formatu.
  • Narzędzia: wybierz narzędzia w definicji kompilacji, dla których chcesz uzyskać podsumowanie wykrytych problemów. Dla każdego wybranego narzędzia może istnieć opcja wyboru, czy w raporcie podsumowania są wyświetlane tylko błędy, czy też wyświetlane są zarówno błędy, jak i ostrzeżenia.
  • Opcje zaawansowane: jeśli nie ma dzienników dla jednego z wybranych narzędzi, możesz zarejestrować ostrzeżenie lub błąd. Jeśli rejestrujesz błąd, zadanie zakończy się niepowodzeniem.
  • Folder dzienników podstawowych: możesz dostosować folder dzienników podstawowych, w którym można znaleźć dzienniki. Jednak ta opcja zwykle nie jest używana.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML raportu zabezpieczeń

Zadanie po analizie

Szczegóły konfiguracji zadania są wyświetlane na poniższym zrzucie ekranu i liście.

Konfigurowanie zadania kompilacji po analizie

  • Narzędzia: wybierz narzędzia w definicji kompilacji, dla których chcesz warunkowo wstrzyknąć przerwę kompilacji. Dla każdego wybranego narzędzia może istnieć opcja wyboru, czy chcesz przerwać tylko błędy, czy też na błędach i ostrzeżeniach.
  • Raport: opcjonalnie możesz napisać wyniki, które powodują przerwanie kompilacji. Wyniki są zapisywane w oknie konsoli usługi Azure DevOps i pliku dziennika.
  • Opcje zaawansowane: jeśli nie ma dzienników dla jednego z wybranych narzędzi, możesz zarejestrować ostrzeżenie lub błąd. Jeśli rejestrujesz błąd, zadanie zakończy się niepowodzeniem.

Aby uzyskać informacje o konfiguracji YAML dla tego zadania, zapoznaj się z naszymi opcjami YAML analizy post analysis

Następne kroki

Aby uzyskać informacje o konfiguracji opartej na języku YAML, zapoznaj się z naszym przewodnikiem po konfiguracji YAML.

Jeśli masz dodatkowe pytania dotyczące rozszerzenia Analiza kodu zabezpieczeń i oferowanych narzędzi, zapoznaj się z naszą stroną często zadawanych pytań.