Udostępnij za pośrednictwem


Rozwiązywanie problemów ze skanowaniem kodu

Ogólnie rzecz biorąc, jeśli występują błędy podczas wykonywania codeQL, interfejs wiersza polecenia CodeQL zgłasza stan każdego polecenia, które jest uruchamiane jako kod zakończenia. Kod zakończenia zawiera informacje dotyczące kolejnych poleceń lub innych narzędzi, które korzystają z interfejsu wiersza polecenia CodeQL. Aby uzyskać więcej informacji na temat szczegółów kodu zakończenia, zobacz Kody zakończenia.

Błąd: polecenie CodeQL "database finalize" (32)

Ten błąd wskazuje problem z finalizacją tworzenia bazy danych CodeQL, potencjalnie z powodu błędów wyodrębniania lub brakujących kroków kompilacji.

Kroki rozwiązywania problemów:

  1. Sprawdź, czy kod istnieje i został skompilowany
    • W przypadku skompilowanych języków sprawdź, czy proces kompilacji kompiluje kod i odbywa się między zadaniami AdvancedSecurity-Codeql-Init i AdvancedSecurity-Codeql-Analyze . Typowe polecenia kompilacji i wymagane flagi (takie jak czyste no-cache/no-demon) można znaleźć tutaj w artykule Określanie poleceń kompilacji.
    • W przypadku języków interpretowanych upewnij się, że w projekcie istnieje jakiś kod źródłowy dla określonego języka.
  2. Sprawdzanie błędów wyodrębniania
    • Sprawdź, czy błędy wyodrębniania wpływają na kondycję bazy danych CodeQL.
    • Przejrzyj plik dziennika pod kątem błędów wyodrębniania i ostrzeżeń, aby ocenić ogólną kondycję bazy danych.
  3. Badanie przytłaczających błędów
    • Jeśli większość plików napotka błędy wyodrębniania, zbadaj dokładniej główną przyczynę nieprawidłowego wyodrębniania.

Błąd: skrypt autobuild (1)

Ten błąd opisuje błąd automatycznej kompilacji, sugerując problem z konfiguracją lub konfiguracją skanowania kodu.

Kroki rozwiązywania problemów:

Błąd: Katalogi CodeQL nie znaleziono w pamięci podręcznej narzędzi agenta

Ten błąd wskazuje problem z instalowaniem języka CodeQL dla własnych agentów.

Kroki rozwiązywania problemów:

Błąd: zmienna potoku języka nie jest ustawiona

Ten błąd występuje podczas próby uruchomienia języka CodeQL bez ustawiania zmiennej potoku określającej języki do skanowania.

Kroki rozwiązywania problemów:

KodQL nie zwraca żadnych wyników

Ta sekcja zawiera wskazówki dotyczące sytuacji, w których analiza CodeQL nie daje żadnych wyników.

Kroki rozwiązywania problemów:

  1. Sprawdzanie wykrytych luk w zabezpieczeniach
    • Rozważ możliwość, że kod może naprawdę nie mieć luk w zabezpieczeniach. Jeśli luki w zabezpieczeniach są oczekiwane, ale nie zostały wykryte, przejdź do dalszej weryfikacji.
  2. Przeglądanie konfiguracji zestawu zapytań
    • W razie potrzeby potwierdź używany zestaw zapytań i rozważ przejście do bardziej kompleksowego pakietu.
    • Alternatywnie można tworzyć niestandardowe zestawy zapytań na potrzeby dostosowanej analizy.
  3. Dostosowywanie uprawnień do wyświetlania wyników
    • Upewnij się, że odpowiednie uprawnienia, co najmniej na poziomie współautora, są przyznawane w celu uzyskania dostępu do wyników analizy. Aby uzyskać więcej informacji, zobacz Uprawnienia zabezpieczeń zaawansowanych.

Limit czasu codeQL

AdvancedSecurity-Codeql-Analyze@1 Jeśli zadanie jest wyświetlane This job was abandoned ... we lost contact with the agent i używasz hostowanego agenta firmy Microsoft, zadanie osiąga wbudowany sześciogodzinny limit czasu dla płatnych hostowanych agentów. Możesz zamiast tego podjąć próbę uruchomienia analizy na własnym agencie.

Uprawnienia zadania skanowania kodu

Zadanie kompilacji skanowania kodu używa tożsamości potoku do wywoływania interfejsów API REST usługi Advanced Security. Domyślnie potoki w tym samym projekcie mają dostęp do przekazywania pliku SARIF wygenerowanego przez uruchomienie analizy CodeQL. Jeśli te uprawnienia zostaną usunięte z konta usługi kompilacji lub jeśli masz konfigurację niestandardową (na przykład potok hostowany w innym projekcie niż repozytorium), musisz przyznać te uprawnienia ręcznie.

Kroki rozwiązywania problemów:

  • Udziel Advanced Security: View alerts konta usługi kompilacji używanego w potoku i Advanced Security: Manage and dismiss alerts uprawnienie do tego, które dla potoków o zakresie projektu to [Project Name] Build Service ([Organization Name]), a w przypadku potoków o zakresie kolekcji jest .Project Collection Build Service ([Organization Name])

Ręczna instalacja pakietu CodeQL do własnego agenta

Zainstaluj pakiet CodeQL w pamięci podręcznej narzędzi agenta, korzystając ze skryptu konfiguracji dla architektury dostępnego w usłudze GitHub. Te skrypty wymagają $AGENT_TOOLSDIRECTORY ustawienia zmiennej środowiskowej na lokalizację katalogu narzędzi agenta na agencie, np. C:/agent/_work/_tool. Alternatywnie możesz ręcznie zaimplementować następujące kroki:

  1. Wybierz najnowszy pakiet wersji CodeQL z usługi GitHub.
  2. Pobierz i rozpakuj pakiet do następującego katalogu wewnątrz katalogu narzędzi agenta, zazwyczaj znajdujący się w folderze _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Przy użyciu bieżącej wersji parametru v2.16.0nazwa folderu będzie miała ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/tytuł . Dowiedz się więcej o katalogu narzędzi agenta.
  3. Utwórz pusty plik o x64.complete nazwie w folderze ./CodeQL/0.0.0-[codeql-release-bundle-tag] . Korzystając z poprzedniego przykładu, ścieżka pliku końcowego do x64.complete pliku powinna mieć wartość ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.