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:
- 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
iAdvancedSecurity-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.
- W przypadku skompilowanych języków sprawdź, czy proces kompilacji kompiluje kod i odbywa się między zadaniami
- 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.
- 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:
- Konfigurowanie kroków kompilacji
- Usuń krok AutoBuild, a zamiast tego skonfiguruj określone kroki kompilacji dla skompilowanych języków w potokach.
- Zapoznaj się z wytycznymi dotyczącymi konfiguracji podanymi w artykule Konfigurowanie usługi GitHub Advanced Security dla usługi Azure DevOps.
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:
- Zapoznaj się z wytycznymi dotyczącymi konfiguracji lub skryptami konfiguracji podanymi w temacie Konfigurowanie usługi GitHub Advanced Security dla usługi Azure DevOps.
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:
- Ustawianie zmiennej potoku języka
- Upewnij się, że zmienna potoku języka jest poprawnie skonfigurowana. Zapoznaj się z wytycznymi dotyczącymi konfiguracji podanymi w artykule Konfigurowanie usługi GitHub Advanced Security dla usługi Azure DevOps.
- Obsługiwane języki to
csharp
, ,cpp
,java
go
python
javascript
,ruby
i .swift
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:
- 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.
- 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.
- 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 iAdvanced 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:
- Wybierz najnowszy pakiet wersji CodeQL z usługi GitHub.
- 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 parametruv2.16.0
nazwa 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. - 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 dox64.complete
pliku powinna mieć wartość./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete
.