Il s'agit de la commande scan-build-3.7 qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
scan-construction — Analyseur statique Clang
SYNOPSIS
scan-construction [-ohkvV] [-analyse-en-têtes] [-activer-vérificateur [nom_vérificateur]]
[-disable-vérificateur [nom_vérificateur]] [--Aidez-moi] [--help-vérificateurs]
[--html-titre [=titre]] [--continue] [-plist] [-plist-html] [--status-bogues]
[--use-c++ [= chemin_compilateur]] [--use-cc [= chemin_compilateur]] [--vue]
[-contraintes [modèle]] [-maxloop N] [-rapports de non-échec] [-Statistiques]
[-boutique [modèle]] build_command [build_options]
DESCRIPTION
scan-construction est un script Perl qui invoque l'analyseur statique Clang. Options utilisées par
scan-construction ou par l'analyseur apparaissent en premier, suivis du build_command et n'importe quel
options_de_construction normalement utilisé pour construire le système cible.
L'analyseur statique utilise une longue liste d'algorithmes de vérification, voir CHECKERS. La sortie peut être
écrit au format standard .plist et/ou HTML.
Les options suivantes sont prises en charge :
-analyse-en-têtes
Analysez également les fonctions dans les fichiers #inclus.
-activer-vérificateur nom_vérificateur, -disable-vérificateur nom_vérificateur
Activer désactiver nom_vérificateur. Voir CHECKERS.
-h, --Aidez-moi
Affichez ce message.
--help-vérificateurs
Liste des vérificateurs par défaut, voir CHECKERS.
--html-titre[=titre]
Spécifiez le titre utilisé sur les pages HTML générées. Un titre par défaut est généré si
titre n'est pas spécifié.
-k, --continue
Ajoutez une option « continuer » à build_command. Prend actuellement en charge make et
xcodebuild. Il s'agit d'une option pratique ; on peut spécifier ce comportement directement
en utilisant les options de construction.
-o Répertoire cible pour les fichiers de rapport HTML. Des sous-répertoires seront créés au besoin pour
représentent des appels séparés de l'analyseur. Si cette option n'est pas spécifiée, un
le répertoire est créé dans / Tmp (TMPDIR sur Mac OS X) pour stocker les rapports.
-plist Sortez les résultats sous la forme d'un ensemble de fichiers .plist. (Par défaut, la sortie de scan-construction is
un ensemble de fichiers HTML.)
-plist-html
Sortir les résultats sous la forme d'un ensemble de fichiers HTML et .plist
--status-bogues
Définissez l'état de sortie sur 1 s'il a trouvé des bogues potentiels et sur 0 dans le cas contraire. Par défaut la sortie
statut de scan-construction est-ce retourné par build_command.
--use-c++[=chemin_compilateur]
Devinez le compilateur par défaut pour votre code C++ et Objective-C++. Utilisez cette option pour
spécifier un autre compilateur.
--use-cc[=chemin_compilateur]
Devinez le compilateur par défaut pour votre code C et Objective-C. Utilisez cette option pour
spécifier un autre compilateur.
-v Sortie détaillée de scan-construction et l'analyseur. Un deuxième et un troisième v des augmentations
verbosité.
-V, --vue
Affichez les résultats de l'analyse dans un navigateur Web lorsque la génération est terminée.
-contraintes [modèle]
Spécifiez le moteur de contraintes utilisé par l'analyseur. Par défaut, le modèle 'range' est
utilisé. Spécifier « de base » utilise un modèle de contrainte plus simple et moins puissant utilisé par
checker-0.160 et versions antérieures.
-maxloop N
Spécifiez le nombre de fois qu'un bloc peut être visité avant d'abandonner. La valeur par défaut est 4.
Augmentez pour une couverture plus complète au détriment de la vitesse.
-rapports de non-échec
Ne créez pas de sous-répertoire « échecs » qui inclut les rapports de plantage de l'analyseur et
fichiers sources prétraités.
-Statistiques Génère des statistiques de visites pour le projet en cours d'analyse.
-boutique [modèle]
Spécifiez le modèle de magasin utilisé par l'analyseur. Par défaut, le modèle de magasin 'région'
est utilisé. 'region' spécifie un modèle de magasin sensible au champ. Les utilisateurs peuvent également spécifier
« de base » qui est beaucoup moins précis mais peut analyser plus rapidement le code. « de base » était
le modèle de magasin par défaut pour checker-0.221 et versions antérieures.
EXIT STATUT
scan-construction renvoie la valeur renvoyée par build_command à moins que --status-bogues or --continue
est utilisé.
CHECKERS
Les vérificateurs répertoriés ci-dessous peuvent être activés/désactivés à l'aide de la -activer-vérificateur et
-disable-vérificateur option. Un groupe de vérificateurs par défaut est exécuté à moins qu'il ne soit explicitement désactivé.
Les vérificateurs qui constituent exactement le groupe par défaut dépendent du système d'exploitation dans
utilisation; ils sont répertoriés avec --help-vérificateurs.
core.AdjustedReturnValue
Vérifiez si la valeur de retour d'un appel de fonction est différente de celle de l'appelant
attend (par exemple, des appels via des pointeurs de fonction).
core.AttributeNonNull
Vérifiez les pointeurs nuls passés en tant qu'arguments à une fonction dont les arguments sont
marqué avec l'attribut 'nonnull'.
core.CallAndMessage
Vérifiez les erreurs logiques pour les appels de fonction et les expressions de message Objective-C
(par exemple, arguments non initialisés, pointeurs de fonction null).
core.DivideZero
Vérifiez la division par zéro.
core.NullDereference
Vérifiez les déréférencements de pointeurs nuls.
core.StackAddressEscape
Vérifiez que les adresses à empiler en mémoire n'échappent pas à la fonction.
core.UndefinedBinaryOperatorResult
Vérifiez les résultats indéfinis des opérateurs binaires.
core.VLASizecore.VLASize
Vérifiez les déclarations de VLA de taille indéfinie ou nulle.
core.builtin.BuiltinFunctions
Évaluer les fonctions intégrées du compilateur, par exemple allouer()
core.builtin.NoReturnFunctions
Évaluez les fonctions de « panique » qui sont connues pour ne pas revenir à l'appelant.
core.uninitialized.ArraySubscript
Recherchez les valeurs non initialisées utilisées comme indices de tableau.
core.uninitialized.Assign
Vérifiez l'attribution de valeurs non initialisées.
core.uninitialized.Branch
Vérifiez les valeurs non initialisées utilisées comme conditions de branchement.
core.uninitialized.CapturedBlockVariable
Recherchez les blocs qui capturent des valeurs non initialisées.
core.uninitialized.UndefReturn
Vérifiez les valeurs non initialisées renvoyées à l'appelant.
code mort.DeadStores
Vérifiez les valeurs stockées dans des variables qui ne sont jamais lues par la suite.
debug.DumpCFG
Affichez les graphiques de flux de contrôle.
debug.DumpCallGraph
Afficher le graphique des appels.
debug.DumpDominators
Imprimez l'arbre de dominance pour un graphique de flux de contrôle donné.
debug.DumpLiveVars
Imprimez les résultats de l'analyse des variables en direct.
débogage.Stats
Émettre des avertissements avec les statistiques de l'analyseur.
debug.TaintTest
Marquez les symboles entachés comme tels.
débogage.ViewCFG
Afficher les graphiques de flux de contrôle à l'aide de GraphViz.
debug.ViewCallGraph
Afficher le graphique des appels à l'aide de GraphViz.
llvm.Conventions
Vérifiez le code pour les conventions de base de code LLVM.
osx.API Vérifiez la bonne utilisation des différentes API Mac OS X.
osx.AtomicCAS
Évaluer les appels à OSatomique fonctions.
osx.SecKeychainAPI
Vérifiez les utilisations appropriées des API Secure Keychain.
osx.cocoa.AtSync
Vérifiez les pointeurs nuls utilisés comme mutex pour @synchronized.
osx.cocoa.ClassRelease
Vérifiez l'envoi de 'retain', 'release' ou 'autorelease' directement à une classe.
osx.cocoa.IncompatibleMethodTypes
Avertir des signatures de méthode Objective-C avec des incompatibilités de type.
osx.cocoa.NSAutoreleasePool
Avertir des utilisations sous-optimales de NSAutoreleasePool en mode Objective-C GC.
osx.cocoa.NSError
Vérifiez l'utilisation des paramètres NSError**.
osx.cocoa.NilArg
Vérifiez les arguments nil interdits dans les appels de méthode Objective-C.
osx.cocoa.RetainCount
Vérifiez les fuites et la gestion incorrecte du nombre de références.
osx.cocoa.SelfInit
Vérifiez que 'self' est correctement initialisé dans une méthode d'initialisation.
osx.cocoa.UnusedIvars
Avertir des ivars privés qui ne sont jamais utilisés.
osx.cocoa.VariadicMethodTypes
Vérifiez la transmission de types non-Objective-C aux méthodes variadiques qui n'attendent que
Types Objective-C.
osx.coreFoundation.CFError
Vérifiez l'utilisation des paramètres CFErrorRef*.
osx.coreFoundation.CFNumber
Vérifiez l'utilisation appropriée de Numéro CFNCréer()
osx.coreFoundation.CFRetainRelease
Vérifier les arguments nuls pour CFRetenir() Version CF(), et CF Make Collectable()
osx.coreFoundation.containers.OutOfBounds
Vérifie l'index hors limites lors de l'utilisation du Tableau CFA API.
osx.coreFoundation.containers.PointerSizedValues
Avertit si Tableau CFA, CFDictionnaire, ou CFSetComment sont créés avec des valeurs autres que la taille du pointeur.
sécurité.FloatLoopCounter
Avertir sur l'utilisation d'une valeur à virgule flottante comme compteur de boucle (CERT : FLP30-C, FLP30-CPP).
security.insecureAPI.UncheckedReturn
Avertit sur les utilisations de fonctions dont les valeurs de retour doivent toujours être vérifiées.
sécurité.insecureAPI.getpw
Avertir sur les utilisations de obtenirpw()
sécurité.insecureAPI.gets
Avertir sur les utilisations de obtient()
sécurité.insecureAPI.mkstemp
Avertir quand mkstemp() est passé à moins de 6 X dans la chaîne de format.
sécurité.insecureAPI.mktemp
Avertir sur les utilisations de mktemp()
sécurité.insecureAPI.rand
Avertir sur les utilisations de rand() aléatoire(), et les fonctions associées.
sécurité.insecureAPI.strcpy
Avertir sur les utilisations de strcpy() et strcat()
sécurité.insecureAPI.vfork
Avertir sur les utilisations de fourche()
unix.API
Vérifiez les appels à diverses fonctions UNIX/Posix.
unix.Malloc
Vérifiez les fuites de mémoire, le double gratuit et l'utilisation après l'utilisation gratuite.
unix.cstring.BadSizeArg
Vérifiez l'argument de taille passé dans les fonctions de chaîne C pour les erreurs courantes
modèles
unix.cstring.NullArg
Vérifiez que les pointeurs null sont passés en tant qu'arguments aux fonctions de chaîne C.
EXEMPLE
scan-construction -o /tmp/monhtmldir a prendre une -j4
L'exemple ci-dessus provoque le dépôt des rapports d'analyse dans un sous-répertoire de
/tmp/monhtmldir et courir a prendre une grâce à la fonction -j4 option. Un sous-répertoire différent est créé
à chaque fois scan-construction analyse un projet. L'analyseur doit prendre en charge la plupart des builds parallèles,
mais pas de versions distribuées.
AUTEURS
scan-construction a été écrit par Ted Kremenek. Documentation apportée par
James K. Lowdenjklowden@schemamania.org>.
Utilisez scan-build-3.7 en ligne à l'aide des services onworks.net