Il s'agit de la commande sparse qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos nombreux 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
sparse - Analyseur sémantique pour C
SYNOPSIS
clairsemé [ATTENTION OPTIONS] ... fichier.c
DESCRIPTION
Sparse analyse la source C et recherche les erreurs, produisant des avertissements sur l'erreur standard.
Sparse accepte les options contrôlant l'ensemble des avertissements à générer. Pour activer les avertissements
Sparse n'est pas émis par défaut, utilisez l'option d'avertissement correspondante -Quelque chose.
Sparse émet certains avertissements par défaut ; pour désactiver ces avertissements, passez la négation de
l'option d'avertissement associée, -Wno-quelque chose.
ATTENTION OPTIONS
-Wsparse-all
Activer tous les avertissements clairsemés, à l'exception de ceux explicitement désactivés via
-Wno-quelque chose.
-Wespace d'adressage
Avertir contre le code qui mélange des pointeurs vers différents espaces d'adressage.
Sparse permet un attribut étendu __attribute__((espace_d'adressage(num))) on
pointeurs, qui désignent une cible de pointeur dans l'espace d'adressage num (une constante
entier). Avec -Wespace d'adressage, Sparse traite les pointeurs avec des types de cible identiques
mais des espaces d'adressage différents comme types distincts. Pour ignorer cet avertissement, par exemple
pour les fonctions qui convertissent des pointeurs entre des espaces d'adressage, utilisez un type qui
inclut __attribut__((force)).
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez -Wno-espace-d'adressage.
-Wbitwise
Avertir des opérations non prises en charge ou des incompatibilités de type avec des types entiers restreints.
Sparse prend en charge un attribut étendu, __attribute__((bit à bit)), qui crée un
nouveau type entier restreint à partir d'un type entier de base, distinct du type entier de base
type entier et de tout autre type entier restreint non déclaré dans le même
déclaration ou typedef. Par exemple, cela permet aux programmes de créer typedefs pour
types entiers avec un endianisme spécifique. Avec -WbitwiseSparse vous avertira de tout
utilisation d'un type restreint dans les opérations arithmétiques autres que les opérations au niveau du bit,
et sur toute conversion d'un type restreint en un autre, sauf via un cast qui
inclut __attribut__((force)).
__bitwise finit par être une « séparation d'entiers plus forte ». Celle-ci ne vous permet pas
à mélanger avec des entiers non binaires, il est donc désormais beaucoup plus difficile de perdre le type en
erreur.
__bitwise est destiné aux *types uniques* qui ne peuvent pas être mélangés avec d'autres types, et qui
vous ne voudriez jamais l'utiliser simplement comme un entier aléatoire (l'entier 0 est spécial, cependant,
et est accepté silencieusement si je me souviens bien – c'est un peu comme « NULL » pour les pointeurs). Donc
« gfp_t » ou les types « safe endianness » seraient __bitwise : vous ne pouvez opérer que sur
en effectuant des opérations spécifiques qui connaissent *ce* type particulier.
En général, vous privilégiez une approche bit à bit si vous recherchez la sécurité des types. Sparse ne l'est pas.
émettre ces avertissements par défaut.
-Wcast-to-as
Avertir contre les casts qui ajoutent un espace d'adressage à un type de pointeur.
Un casting qui comprend __attribut__((force)) supprimera cet avertissement.
Sparse n'émet pas ces avertissements par défaut.
-Wcast-tronquer
Avertir contre les conversions qui tronquent les valeurs constantes.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez -Wno-cast-tronquer.
-Wcontext
Avertir des erreurs potentielles de synchronisation ou d'autres contextes délimités.
Sparse prend en charge plusieurs moyens de désigner des fonctions ou des instructions qui délimitent
contextes, comme la synchronisation. Fonctions avec l'attribut étendu
__attribut__((contexte(expression,dans le contexte,contexte_extérieur)) exiger le contexte
expression (par exemple, un verrou) pour avoir la valeur dans le contexte (une constante
entier non négatif) lorsqu'il est appelé, et renvoie la valeur contexte_extérieur (une constante
entier non négatif). Pour les API définies via des macros, utilisez la forme d'instruction
__contexte__(expression,en_valeur,valeur_out) dans le corps de la macro.
et -Wcontext Sparse avertira lorsqu'il verra une fonction modifier le contexte sans
indiquant cela avec un aux contextes attribut, soit en diminuant un contexte en dessous de zéro
(comme en libérant un verrou sans l'acquérir), ou en revenant avec un verrou modifié
contexte (par exemple, en acquérant un verrou sans le libérer). Sparse avertira également
à propos de blocs de code qui peuvent potentiellement s'exécuter dans des contextes différents.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez -Wno-context.
-Wdecl Avertir de toute non-statique définition de variable ou de fonction qui n'a pas de précédent
déclaration.
Les symboles privés (fonctions et variables) internes à un fichier source donné doivent
utilisé statique, pour permettre des optimisations supplémentaires du compilateur, permettre la détection des éléments inutilisés
symboles et empêcher d'autres codes de s'appuyer sur ces symboles internes.
les symboles utilisés par d'autres fichiers sources nécessiteront des déclarations visibles par ces autres
fichiers sources, comme dans un fichier d'en-tête. Toutes les déclarations doivent appartenir à l'une des catégories suivantes :
ces deux catégories. Ainsi, avec -WdeclSparse avertit de toute définition de symbole
avec ni l'un ni l'autre statique ni une déclaration. Pour corriger cet avertissement, déclarez privé
symboles statique, et assurez-vous que les fichiers définissant les symboles publics ont le symbole
déclarations disponibles en premier (par exemple en incluant le fichier d'en-tête approprié).
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez -Wno-decl.
-Wdéclaration-après-déclaration
Avertir des déclarations qui ne sont pas au début d'un bloc.
Ces déclarations sont autorisées dans le C99 mais pas dans le C89.
Sparse émet ces avertissements par défaut uniquement lorsque le dialecte C est C89 (c'est-à-dire -ansi
ou -std=c89). Pour les désactiver, utilisez -Wno-déclaration-après-déclaration.
-Wdefault-bitfield-sign
Avertir de tout champ de bits sans signature explicite.
Les champs de bits n'ont pas de signature par défaut spécifiée par la norme. (C99 6.7.2) Un champ de bits
sans explicite signé or non signé crée un problème de portabilité pour les logiciels
qui dépend de la plage de valeurs disponible. Pour résoudre ce problème, spécifiez le champ de bits
tapez comme signé or non signé explicitement.
Sparse n'émet pas ces avertissements par défaut.
-Wdesignated-init
Avertir de l'initialisation positionnelle des structures marquées comme nécessitant une désignation
initialiseurs.
Sparse permet un attribut __attribute__((designated_init)) qui marque une structure comme
nécessitant des initialiseurs désignés. Sparse avertira des erreurs de position
initialisation d'une variable de structure ou d'un littéral de structure d'un type qui a ceci
attribuer.
Exiger des initialiseurs désignés pour un type de structure particulier isolera le code
en utilisant ce type de structure à partir des modifications apportées à la disposition du type, évitant ainsi le besoin de
modifier les initialiseurs pour ce type, sauf s'ils initialisent un type supprimé ou incompatible
champ modifié.
Des exemples courants de ce type de structure incluent des collections de pointeurs de fonction pour
les implémentations d'une classe d'opérations liées, pour lesquelles la valeur par défaut est NULL
pour un champ non mentionné dans un initialiseur désigné indiquera correctement le
l'absence de cette opération.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez
-Wno-designated-init.
-Wdo-tandis que
Avertir contre les boucles do-while qui ne délimitent pas le corps de la boucle avec des accolades.
Sparse n'émet pas ces avertissements par défaut.
-Wenum-inadéquation
Avertir contre l'utilisation d'une expression incorrecte enum type lors de l'initialisation
une enum type, affectation à un autre enum type, ou en passant un argument à un
fonction qui attend une autre enum type.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez -Wno-enum-non-concordance.
-Winit-cstring
Avertir concernant l'initialisation d'un tableau de caractères avec une chaîne C constante trop longue.
Si la taille du tableau de caractères et la longueur de la chaîne sont identiques, il n'y a pas de
espace pour le dernier caractère nul de la chaîne dans le tableau :
char s[3] = "abc";
Si le tableau est utilisé comme un tableau d'octets et non comme une chaîne C, cet avertissement n'est que du bruit.
Cependant, si le tableau est passé à des fonctions traitant des chaînes C comme printf(%s)
et strcmp, cela peut causer un problème.
Sparse n'émet pas ces avertissements par défaut.
-Wnon-pointeur-null
Avertir contre l'utilisation de 0 comme pointeur NULL.
0 est de type entier. NULL est de type pointeur.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez
-Wno-non-pointeur-null.
-Wold-initialiseur
Avertir sur l'utilisation de la syntaxe GCC pré-C99 pour les initialiseurs désignés.
C99 fournit une syntaxe standard pour les champs désignés dans struct or union
initialiseurs :
struct structname var = { .field = valeur };
GCC dispose également d'une ancienne syntaxe non standard pour les initialiseurs désignés qui est antérieure
C99:
struct structname var = { champ : valeur };
Sparse avertira de l'utilisation de la syntaxe non standard de GCC pour les éléments désignés
initialiseurs. Pour corriger cet avertissement, convertissez les initialiseurs désignés pour utiliser le
syntaxe standard C99.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez
-Wno-old-initialiseur.
-Champ de bits signé Wone-bit
Avertir de tout élément signé champs de bits.
Un seul morceau signé le champ de bits ne peut avoir que les valeurs 0 et -1, ou avec certains compilateurs
seulement 0 ; cela entraîne un comportement inattendu pour les programmes qui s'attendaient à cette capacité
pour stocker 0 et 1.
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez
-Wno-one-bit-signed-bitfield.
-Wparen-chaîne
Avertir contre l'utilisation d'une chaîne entre parenthèses pour initialiser un tableau.
La syntaxe C standard n'autorise pas une chaîne entre parenthèses comme initialiseur de tableau.
GCC autorise cette syntaxe comme extension. Avec -Wparen-chaîne, Sparse avertira
à propos de cette syntaxe.
Sparse n'émet pas ces avertissements par défaut.
-Wptr-soustraction-coups
Avertir lors de la soustraction de deux pointeurs vers un type avec une taille non-puissance de deux.
La soustraction de deux pointeurs vers un type donné donne une différence en termes de nombre
d'éléments de ce type. Pour générer cette valeur, les compilateurs devront généralement
diviser la différence par la taille du type, une opération potentiellement coûteuse
pour les tailles autres que les puissances de deux.
Le code écrit à l’aide de la soustraction de pointeurs peut souvent utiliser une autre approche à la place, telle que
comme l'indexation de tableau avec une variable d'index de tableau explicite, ce qui peut permettre aux compilateurs
pour générer un code plus efficace.
Sparse n'émet pas ces avertissements par défaut.
-Wreturn-void
Avertir si une fonction avec le type de retour void renvoie une expression void.
C99 le permet et, dans certains cas, cela permet d'utiliser du code plus générique dans les macros
qui utilisent typeof ou acceptent un type comme argument de macro. Cependant, certains programmes
considérez ce style pauvre, et ces programmes peuvent utiliser -Wreturn-void pour recevoir des avertissements
à ce sujet.
Sparse n'émet pas ces avertissements par défaut.
-Wombre
Avertir lors de la déclaration d'un symbole qui masque une déclaration portant le même nom dans un
portée extérieure.
De telles déclarations peuvent conduire à un code sujet aux erreurs.
Sparse n'émet pas ces avertissements par défaut.
-Wtransparent-union
Avertir de toute déclaration utilisant l'extension GCC
__attribute__((transparent_union)).
Sparse émet ces avertissements par défaut. Pour les désactiver, utilisez
-Wno-transparent-union.
-Wtypesign
Avertir lors de la conversion d'un pointeur vers un type entier en un pointeur vers un type entier
avec une signature différente.
Sparse n'émet pas ces avertissements par défaut.
-Wundef
Avertir contre les conditions du préprocesseur qui utilisent la valeur d'un indéfini
symbole du préprocesseur.
La norme C (C99 6.10.1) permet d'utiliser la valeur d'un symbole de préprocesseur non défini
dans les conditions du préprocesseur, et spécifie qu'il doit avoir une valeur de 0. Cependant,
ce comportement peut conduire à des erreurs subtiles.
Sparse n'émet pas ces avertissements par défaut.
MISC OPTIONS
-gcc-base-dir dir
Recherchez les en-têtes système fournis par le compilateur dans dir/include/ et dir/include-fixé/.
-multiarch-dir dir
Recherchez les en-têtes système dans le sous-répertoire multiarch dirL’ dir le nom serait
prennent normalement la forme du triplet GNU normalisé de la cible. (par exemple i386-linux-
gnou).
AUTRES OPTIONS
-ftabstop=LARGEUR
Définissez la distance entre les taquets de tabulation. Cela permet aux colonnes de rapport clairsemées de correspondre.
Nombres dans les avertissements ou les erreurs. Si la valeur est inférieure à 1 ou supérieure à 100,
L'option est ignorée. La valeur par défaut est 8.
Utiliser Sparse Online avec les services onworks.net
