To jest polecenie scan-build-3.7, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
kompilacja skanowania — Analizator statyczny Clang
STRESZCZENIE
kompilacja skanowania [-ohkvV] [-analizuj-nagłówki] [-włącz sprawdzanie [nazwa_sprawdzacza]]
[-wyłącz sprawdzanie [nazwa_sprawdzacza]] [--help] [--help-checkers]
[--html-tytuł [=tytuł]] [--kontynuować] [-plista] [-plist-html] [--błędy stanu]
[--use-c++ [=ścieżka_kompilatora]] [--use-cc [=ścieżka_kompilatora]] [--pogląd]
[-ograniczenia [model]] [-maxloop N] [-brak raportów o awariach] [-statystyki]
[-sklep [model]] polecenie_kompilacji [opcje_kompilacji]
OPIS
kompilacja skanowania to skrypt Perla, który wywołuje analizator statyczny Clang. Opcje używane przez
kompilacja skanowania lub przez analizator pojawiają się jako pierwsze, a po nich następuje polecenie_kompilacji i jakikolwiek
opcje_kompilacji zwykle używane do budowania systemu docelowego.
Analizator statyczny wykorzystuje długą listę algorytmów sprawdzających, patrz WARCABY. Wyjście może być
napisane w standardowym formacie .plist i/lub HTML.
Obsługiwane są następujące opcje:
-analizuj-nagłówki
Przeanalizuj także funkcje w #included plikach.
-włącz sprawdzanie nazwa_sprawdzacza, -wyłącz sprawdzanie nazwa_sprawdzacza
Włącz / wyłącz nazwa_sprawdzacza. Zobaczyć WARCABY.
-h, --help
Wyświetl ten komunikat.
--help-checkers
Lista domyślnych kontrolerów, patrz WARCABY.
--html-tytuł[=tytuł]
Określ tytuł używany na wygenerowanych stronach HTML. Domyślny tytuł jest generowany jeśli
tytuł nie jest określony.
-k, --kontynuować
Dodaj opcję „kontynuuj” do polecenie_kompilacji. Obecnie obsługuje markę i
xcodebuild. Jest to opcja wygodna; można bezpośrednio określić to zachowanie
za pomocą opcji kompilacji.
-o Katalog docelowy dla plików raportów HTML. Podkatalogi zostaną utworzone w miarę potrzeb
reprezentują oddzielne wywołania analizatora. Jeśli ta opcja nie zostanie określona, a
tworzony jest katalog w / Tmp (TMPDIR w systemie Mac OS X) do przechowywania raportów.
-plista Wyniki wyprowadź jako zestaw plików .plist. (Domyślnie wyjście kompilacja skanowania is
zestaw plików HTML.)
-plist-html
Wyprowadź wyniki jako zestaw plików HTML i .plist
--błędy stanu
Ustaw status wyjścia na 1, jeśli znaleziono potencjalne błędy, i 0 w przeciwnym razie. Domyślnie wyjście
status kompilacja skanowania to jest to zwrócone przez polecenie_kompilacji.
--use-c++[=ścieżka_kompilatora]
Zgadnij domyślny kompilator dla Twojego kodu C++ i Objective-C++. Użyj tej opcji, aby
określ alternatywny kompilator.
--use-cc[=ścieżka_kompilatora]
Zgadnij domyślny kompilator dla Twojego kodu C i Objective-C. Użyj tej opcji, aby
określ alternatywny kompilator.
-v Pełne dane wyjściowe z kompilacja skanowania i analizator. Drugi i trzeci v wzrosty
gadatliwość.
-V, --pogląd
Wyświetl wyniki analizy w przeglądarce internetowej po zakończeniu kompilacji.
-ograniczenia [model]
Określ silnik więzów używany przez analizator. Domyślnie jest to model „zakresowy”.
używany. Określenie „podstawowego” powoduje użycie prostszego i mniej wydajnego modelu ograniczeń używanego przez
checker-0.160 i starsze.
-maxloop N
Określ, ile razy można odwiedzić blok, zanim się poddasz. Wartość domyślna to 4.
Zwiększenie w celu zapewnienia bardziej kompleksowego zasięgu kosztem szybkości.
-brak raportów o awariach
Nie twórz podkatalogu „awarie”, który zawiera raporty o awariach analizatora i
wstępnie przetworzone pliki źródłowe.
-statystyki Generuje statystyki odwiedzin dla analizowanego projektu.
-sklep [model]
Określ model sklepu używany przez analizator. Domyślnie model sklepu „region”.
Jest używane. „region” określa model sklepu wrażliwy na pola. Użytkownicy mogą również określić
„podstawowy”, który jest znacznie mniej precyzyjny, ale pozwala szybciej analizować kod. „podstawowe” było
domyślny model sklepu dla checker-0.221 i wcześniejszych.
EXIT STATUS
kompilacja skanowania zwraca wartość zwróconą przez polecenie_kompilacji chyba że --błędy stanu or --kontynuować
Jest używane.
WARCABY
Kontrolery wymienione poniżej można włączyć/wyłączyć za pomocą -włącz sprawdzanie oraz
-wyłącz sprawdzanie opcje. Uruchamiana jest domyślna grupa modułów sprawdzających, chyba że została wyraźnie wyłączona.
To, które dokładnie kontrolery stanowią domyślną grupę, zależy od systemu operacyjnego
używać; są wymienione --help-checkers.
core.AdjustedReturnValue
Sprawdź, czy wartość zwracana przez wywołanie funkcji jest inna niż wartość wywołująca
oczekuje (np. od wywołań poprzez wskaźniki funkcji).
core.AttributeNonNull
Sprawdź, czy wskaźniki zerowe są przekazywane jako argumenty do funkcji, której argumentami są
oznaczone atrybutem „nonnull”.
core.CallAndMessage
Sprawdź błędy logiczne w wywołaniach funkcji i wyrażeniach komunikatów języka C
(np. niezainicjowane argumenty, wskaźniki funkcji null).
core.DivideZero
Sprawdź dzielenie przez zero.
core.NullDereference
Sprawdź dereferencje wskaźników zerowych.
core.StackAddressEscape
Sprawdź, czy adresy pamięci stosu nie uciekną z funkcji.
core.UnknownBinaryOperatorResult
Sprawdź niezdefiniowane wyniki operatorów binarnych.
rdzeń.VLASize
Sprawdź deklaracje VLA o niezdefiniowanym lub zerowym rozmiarze.
core.wbudowane.Wbudowane funkcje
Oceń wbudowane funkcje kompilatora, np przydziel().
core.wbudowany.NoReturnFunctions
Oceń funkcje „paniki”, o których wiadomo, że nie zwracają się do osoby wywołującej.
core.uninitialized.ArraySubscript
Sprawdź niezainicjowane wartości użyte jako indeksy tablicy.
rdzeń.niezainicjowany.Przypisz
Sprawdź, czy nie przypisano niezainicjowanych wartości.
core.uninitialized.Branch
Sprawdź niezainicjowane wartości użyte jako warunki rozgałęzienia.
core.uninitialized.CapturedBlockZmienna
Sprawdź bloki przechwytujące niezainicjowane wartości.
core.uninitialized.UndefReturn
Sprawdź, czy do obiektu wywołującego nie zostały zwrócone niezainicjowane wartości.
Deadcode.DeadStores
Sprawdź wartości zapisane w zmiennych, które nigdy nie zostaną później odczytane.
debug.DumpCFG
Wyświetl wykresy przepływu sterowania.
debug.DumpCallGraph
Wyświetl wykres połączeń.
debug.DumpDominators
Wydrukuj drzewo dominacji dla danego wykresu przepływu sterowania.
debug.DumpLiveVars
Drukuj wyniki analizy zmiennych na żywo.
debugowanie.Statystyki
Emituj ostrzeżenia ze statystykami analizatora.
debug.TaintTest
Oznacz skażone symbole jako takie.
debug.WyświetlCFG
Wyświetl wykresy przepływu sterowania za pomocą WykresWiz.
debug.Wyświetl wykres wywołań
Wyświetl wykres połączeń za pomocą WykresWiz.
llvm.Konwencje
Sprawdź kod pod kątem konwencji bazy kodu LLVM.
osx.API Sprawdź, czy różne interfejsy API systemu Mac OS X są prawidłowo wykorzystywane.
osx.AtomicCAS
Oceń połączenia do OSAtomiczny funkcje.
osx.SecKeychainAPI
Sprawdź, czy prawidłowo korzysta się z interfejsów API Secure Keychain.
osx.cocoa.AtSync
Sprawdź, czy wskaźniki zerowe są używane jako muteksy dla @synchronized.
osx.cocoa.ClassRelease
Sprawdź, czy wysyłane są polecenia „zatrzymaj”, „zwolnij” lub „automatyczne wydanie” bezpośrednio do klasy.
osx.cocoa.In CompatibleMethodTypes
Ostrzegaj o podpisach metod Objective-C z niezgodnościami typów.
osx.cocoa.NSAutoreleasePool
Ostrzegaj o nieoptymalnych zastosowaniach NSAutorelease Pool w trybie GC Objective-C.
osx.cocoa.NSEBłąd
Sprawdź użycie parametrów NSError**.
osx.cocoa.NilArg
Sprawdź, czy nie występują zabronione argumenty zerowe w wywołaniach metod Objective-C.
osx.cocoa.RetainCount
Sprawdź, czy nie ma wycieków i niewłaściwego zarządzania liczbą referencji.
osx.cocoa.SelfInit
Sprawdź, czy „self” jest poprawnie zainicjowane w metodzie inicjującej.
osx.cocoa.UnusedIvars
Ostrzegaj o prywatnych ivarach, które nigdy nie są używane.
osx.cocoa.VariadicMethodTypes
Sprawdź, czy typy inne niż Objective-C są przekazywane do metod variadic, które oczekują tylko
Typy Objective-C.
osx.coreFoundation.CFEbłąd
Sprawdź użycie parametrów CFErrorRef*.
osx.coreFoundation.CFNumber
Sprawdź właściwe zastosowania Utwórz numer CF().
osx.coreFoundation.CFRetainRelease
Sprawdź, czy nie ma argumentów zerowych CFZachowaj() CFZwolnienie(), oraz CFMake do kolekcjonowania().
osx.coreFoundation.containers.OutOfBounds
Sprawdza, czy indeks jest poza zakresem podczas korzystania z metody CFArray API.
osx.coreFoundation.containers.PointerSizedValues
Ostrzega, jeśli CFArray, Słownik CFlub Zestaw CF są tworzone z wartościami innymi niż wskaźnik.
bezpieczeństwo.FloatLoopCounter
Ostrzegaj przed użyciem wartości zmiennoprzecinkowej jako licznika pętli (CERT: FLP30-C, FLP30-CPP).
security.insecureAPI.UncheckedReturn
Ostrzegaj o korzystaniu z funkcji, których zwracane wartości muszą być zawsze sprawdzane.
security.insecureAPI.getpw
Ostrzegaj o użyciu getpw().
security.insecureAPI.gets
Ostrzegaj o użyciu dostaje().
security.insecureAPI.mkstemp
Ostrzegaj, kiedy mkstemp() jest przekazywanych mniej niż 6 znaków X w ciągu formatującym.
security.insecureAPI.mktemp
Ostrzegaj o użyciu mktemp().
security.insecureAPI.rand
Ostrzegaj o użyciu rand() przypadkowy() i powiązane funkcje.
security.insecureAPI.strcpy
Ostrzegaj o użyciu strcpy() i strcat().
security.insecureAPI.vfork
Ostrzegaj o użyciu widelec().
unix.API
Sprawdź wywołania różnych funkcji UNIX/Posix.
unix. Malloc
Sprawdź, czy nie ma wycieków pamięci, podwójnie wolne i wolne od użycia.
unix.cstring.BadSizeArg
Sprawdź, czy argument rozmiaru przekazany do funkcji łańcuchowych C nie zawiera typowych błędów
wzorce.
unix.cstring.NullArg
Sprawdź, czy wskaźniki zerowe są przekazywane jako argumenty do funkcji łańcuchowych C.
PRZYKŁAD
kompilacja skanowania -o /tmp/myhtmlkatalog robić -j4
Powyższy przykład powoduje, że raporty analityczne zostaną zapisane w podkatalogu
/tmp/myhtmlkatalog i uciekać robić z -j4 opcja. Tworzony jest inny podkatalog
za każdym razem kompilacja skanowania analizuje projekt. Analizator powinien obsługiwać większość kompilacji równoległych,
ale nie dystrybuowane kompilacje.
AUTORSKI
kompilacja skanowania został napisany przez Teda Kremenka. Dokumentacja udostępniona przez
Jamesa K. Lowdena[email chroniony]>.
Użyj scan-build-3.7 online, korzystając z usług onworks.net