Commande lint
Objectif
Recherche les problèmes potentiels dans les programmes en langage C et C + +.
Syntaxe
Lint [ -a ] [ -b ] [ -c ] [ -C ] [ -h ] [ -lClé ] [ -n ] [ -oBibliothèque ] [ -qDBCS ] [ -p ] [ -t ] [ -u ] [ -v ] [ -w Classe [Classe ... ] ] [ -x ] [ -MA ] [ -NdNombre ] [ -NlNombre ] [ -NnNombre ] [ -NtNombre ] [ -IRépertoire ] [ -DNom [=Définition ] ] [ -UNom ] Fichier ...
Descriptif
La commande lint vérifie le code source des langages C et C + + pour les erreurs de codage et de syntaxe et pour le code inefficace ou non portable. Vous pouvez utiliser ce programme pour:
- Identifiez le code source et l'incompatibilité de la bibliothèque.
- Appliquer les règles de vérification de type de manière plus stricte que le compilateur.
- Identifiez les problèmes potentiels avec les variables.
- Identifiez les problèmes potentiels liés aux fonctions.
- Identifiez les problèmes liés au contrôle de flux.
- Identifiez les constructions juridiques qui peuvent générer des erreurs ou être inefficaces.
- Identifiez les déclarations de variables et de fonctions inutilisées.
- Identifiez le code éventuellement non portable.
Remarque: La vérification des fichiers de langage C++ par la commande lint requiert la présence du package C Set + + Compiler.
L'utilisation inter-fichiers des fonctions est vérifiée pour trouver des fonctions qui renvoient des valeurs dans certaines instances et non dans d'autres, des fonctions appelées avec des nombres ou des types d'arguments variables, et des fonctions dont les valeurs ne sont pas utilisées ou dont les valeurs sont utilisées mais non renvoyées.
La commande lint interprète les extensions de nom de fichier comme suit:
- Les noms de fichier se terminant par .c sont des fichiers source en langage C.
- Noms de fichiers se terminant par .C sont des fichiers source en langage C + +.
- Les noms de fichiers se terminant par .ln sont des fichiers non ASCII que la commande lint produit lorsque l'option -c ou l'option -o est utilisé.
La commande lint vous avertit des fichiers avec d'autres suffixes et les ignore.
La commande lint prend tous les .c, .Les fichierset .ln et les bibliothèques spécifiées par -l les indicateurs et les traitent dans l'ordre dans lequel ils apparaissent sur la ligne de commande. Par défaut, elle ajoute la bibliothèque lint llib-lc.ln standard à la fin de la liste des fichiers. Toutefois, lorsque vous sélectionnez l'option -p , la commande lint utilise la bibliothèque portable llib-port.ln . Par défaut, le second passage de lint vérifie la compatibilité mutuelle de cette liste de fichiers ; toutefois, si vous spécifiez l'indicateur -c , les fichiers .ln et llib-lx.ln sont ignorés.
Les indicateurs -c et -o permettent l'utilisation incrémentielle de la commande lint sur un ensemble de fichiers source en langage C et C + +. En général, il faut utiliser la commande lint une fois pour chaque fichier source avec l'option -c. Chacune de ces exécutions génère un fichier .ln qui correspond au fichier .c et écrit tous les messages concernant ce fichier source. Une fois que vous avez exécuté tous les fichiers source séparément via la commande lint , exécutez-la à nouveau, sans l'indicateur -c , en répertoriant tous les fichiers .ln avec les indicateurs -l requis. Toutes les incohérences entre fichiers sont écrites. Cette procédure fonctionne bien avec la commande make , ce qui lui permet d'exécuter la commande lint uniquement sur les fichiers source modifiés depuis la dernière vérification de cet ensemble de fichiers source.
Les symboles de préprocesseur lint et LINT sont définis pour permettre la modification ou la suppression de certains codes douteux pour la commande lint . Par conséquent, les symboles lint et LINT doivent être considérés comme un mot réservé pour tout le code qui doit être vérifié par lint.
Les commentaires suivants dans un programme source en langage C et C++ modifient le mode de fonctionnement de la commande lint lors de la vérification du programme source:
| Article | Descriptif |
|---|---|
| / *NOTREACHED* / | Supprime les commentaires sur le code inaccessible. |
| / *VARARGSNombre*/ | Supprime la vérification de l'ancienne déclaration de fonction de style suivante pour les différents nombres d'arguments, mais vérifie le type de données des premiers arguments Number . Si vous n'incluez pas de valeur pour Number, la commande lint ne vérifie aucun argument (Number= 0). Les prototypes de fonction ANSI doivent utiliser les points de suspension pour indiquer des paramètres non spécifiés plutôt que ce mécanisme de commentaire. |
| / *ARGSUSED* / | Supprime les avertissements relatifs aux paramètres de fonction non utilisés dans la définition de fonction. |
| / *LINTLIBRARY* / | Si vous placez ce commentaire au début d'un fichier, la commande lint n'identifie pas les fonctions et paramètres de fonction inutilisés dans le fichier. Elle est utilisée lors de l'exécution de la commande lint sur les bibliothèques. |
| / *NOTUSED* / | Supprime les avertissements concernant les symboles externes inutilisés, les fonctions et les paramètres de fonction dans le fichier à partir de son point d'occurrence. Il s'agit d'un sur-ensemble de la directive de commentaire / *LINTLIBRARY* / , mais qui s'applique également aux symboles externes. Il est utile pour supprimer les avertissements concernant les prototypes de fonction inutilisés et les autres déclarations d'objet externe. |
| / *NOTDEFINED* / | Supprime les avertissements concernant les symboles et les fonctions externes utilisés, mais non définis, dans le fichier à partir de son point d'occurrence. |
| / *LINTSTDLIB* / | Permet à une bibliothèque de contrôle de prototype standard d'être formée à partir de fichiers d'en-tête en faisant apparaître des déclarations de prototype de fonction en tant que définitions de fonction. Cette directive active implicitement les directives de commentaire / *NOTUSED* / et / *LINTLIBRARY* / pour réduire les niveaux de bruit d'avertissement. |
Les messages d'avertissement de la commande lint indiquent le nom de fichier et le numéro de ligne. Au fur et à mesure que chaque fichier passe par le premier passage, des avertissements sont signalés pour chaque fichier et chaque numéro de ligne.
Si vous n'avez pas spécifié l'indicateur -c , la commande lint collecte les informations collectées à partir de tous les fichiers d'entrée et vérifie leur cohérence. A ce stade, s'il n'est pas clair si un message provient d'un fichier source donné ou de l'un de ses fichiers inclus, la commande lint affiche le nom du fichier source suivi d'un point d'interrogation.
Les programmes ANSI qui incluent de nombreux fichiers d'en-tête standard peuvent souhaiter mettre l'option -n pour désactiver la vérification par rapport à la bibliothèque standard ANSI -wD pour réduire le nombre d'avertissements concernant les prototypes non utilisés, et l'option -n pour désactiver la vérification par rapport à la bibliothèque standard ANSI. Pour les programmes non ANSI, il est conseillé de spécifier l'indicateur -wk afin de réduire le nombre d'avertissements concernant l'absence de prototypes de fonction.
Indicateurs
| Article | Descriptif |
|---|---|
| -a | Supprime les messages relatifs aux affectations de valeurs longues à des variables qui ne sont pas longues. |
| -b | Supprime les messages relatifs aux instructions d'interruption inaccessibles. |
| -c | Fait en sorte que la commande lint génère un fichier .ln pour chaque fichier .c sur la ligne de commande. Ces fichiers .ln sont le produit du premier passage de la commande lint uniquement et ne sont pas vérifiés pour la compatibilité entre les fonctions. |
| -C | Indique que les bibliothèques C++ doivent être utilisées (dans le répertoire /usr/lpp//xlC/lib ). |
| -h | N'essaie pas de détecter les bogues, les styles inappropriés ou de réduire les déchets. |
| -lClé | Inclut la bibliothèque lint llib-lKey.ln supplémentaire. Vous pouvez inclure une version lint de la bibliothèque mathématique llib-lm.ln en spécifiant -lm sur la ligne de commande ou la bibliothèque llib-ldos.ln en spécifiant l'indicateur -ldos sur la ligne de commande. Utilisez cet indicateur pour inclure les bibliothèques lint locales lors de la vérification des fichiers qui font partie d'un projet comportant un grand nombre de fichiers. Cet indicateur n'empêche pas la commande lint d'utiliser la bibliothèque llib-lc.ln . La bibliothèque lint doit se trouver dans le répertoire /usr/ccs/lib . |
| -n | Supprime la vérification de la compatibilité avec les bibliothèques lint standard ou portables. Cela s'applique à la fois aux bibliothèques ANSI et aux bibliothèques en mode étendu. |
| -oBibliothèque | Permet à la commande lint de créer la bibliothèque lint llib-lLibrary.ln . L'indicateur -c annule toute utilisation de l'indicateur -o . La bibliothèque lint produite est l'entrée qui est donnée au deuxième passage de la commande lint . L'indicateur -o permet simplement de sauvegarder ce fichier dans la bibliothèque nommée lint. Pour générer une bibliothèque llib-l.ln sans messages superflus, utilisez l'indicateur -x . L'indicateur -v est utile si les fichiers source de la bibliothèque lint sont uniquement des interfaces externes (par exemple, la façon dont le fichier llib-lc est écrit). Ces paramètres d'indicateur sont également disponibles via l'utilisation de lignes de commentaire de commande lint . |
| -P | Vérifie la portabilité vers d'autres dialectes de la langue C. |
| -t | Recherche les affectations problématiques lors du portage de 32 à 64 bits. Seuls les cas suivants sont vérifiés:
|
| -u | Supprime les messages relatifs aux fonctions et aux variables externes qui sont utilisées et non définies ou définies et non utilisées. Utilisez cet indicateur pour exécuter la commande lint sur un sous-ensemble de fichiers d'un programme plus grand. |
| -v | Supprime les messages relatifs aux paramètres de fonction qui ne sont pas utilisés. |
| -w Classe [Classe ...] | Contrôle la génération de rapports sur les classes d'avertissement. Toutes les classes d'avertissement sont actives par défaut, mais elles peuvent être désactivées individuellement en incluant l'option appropriée dans l'argument Classe . Les options individuelles sont répertoriées comme suit:
|
| -X | Supprime les messages relatifs aux variables qui ont des déclarations externes mais qui ne sont jamais utilisées. |
| -MA | Applique les règles standard du langage ANSI C. Le mode par défaut est égal au mode C étendu. Le mode ANSI ajoute les prototypes de fonction de bibliothèque ANSI standard à la place du mode étendu par défaut de la bibliothèque C lint. Le mode ANSI impose une référence d'objet inter-fichier plus stricte et fournit des vérifications de liaison de définition. |
| -NdNuméro | Remplace la taille de la table de dimensions par Nombre. La valeur par défaut de Nombre est 2000. |
| -NlNuméro | Remplace le nombre de noeuds type par Nombre. La valeur par défaut de Nombre est 8000. |
| -NnNuméro | Augmente la taille de la table des symboles à Nombre. La valeur par défaut de Number est 1500. |
| -NtNombre | Remplace le nombre de noeuds d'arborescence par Nombre. La valeur par défaut de Nombre est 1000. |
En outre, la commande lint reconnaît les indicateurs suivants de la commande cpp (préprocesseur de macro):
| Article | Descriptif |
|---|---|
| -IRépertoire | Ajoute le Répertoire à la liste des répertoires dans lesquels la commande lint recherche les fichiers #include . |
| -DNom[ =Définition] | Définit le Nom, comme s'il s'agit du fichier #define . La valeur par défaut de Définition est 1. |
| -q DBCS | Définit le mode multioctet spécifié par l'environnement local en cours. |
| -UNom | Supprime toute définition initiale du Nom, où Nom est un symbole réservé prédéfini par le préprocesseur particulier. |
Statut de sortie
Cette commande renvoie les valeurs de sortie suivantes :
| Article | Descriptif |
|---|---|
| 0 % | L'opération a abouti. |
| >0 | Une erreur s'est produite. |
Exemples
- Pour rechercher des erreurs dans un programme C, entrez:
lint command.c - Pour supprimer certains messages, entrez:
Cette vérificationprogram.c, mais n'affiche pas de messages d'erreur sur les paramètres de fonction inutilisés (-v) ou les éléments externes inutilisés (-x).lint -v -x program.c - Pour vérifier le programme par rapport à une bibliothèque lint supplémentaire, entrez:
Cette vérificationprogram.csur la bibliothèque /usr/ccs/lib/llib-lc.ln standard lint et sur la bibliothèque /usr/lib/llib-lsubs.ln lint.lint -lsubs program.c - Pour effectuer une vérification par rapport à la bibliothèque portable et à une bibliothèque supplémentaire, entrez:
Cette vérificationprogram.ccontre la bibliothèque lint portable /usr/ccs/lib/llib-port.ln et la bibliothèque lint /usr/lib/llib-lsubs.ln .lint -lsubs -p program.c - Pour vérifier uniquement par rapport à une bibliothèque non standard, entrez:
Cette vérificationprogram.csur /usr/lib/llib-lsubs.lnuniquement.lint -lsubs -n program.c
Fichiers
| Article | Descriptif |
|---|---|
| /usr/lib/lint[12} | Programmes |
| /usr/ccs/lib/llib-lansi | Déclarations pour les fonctions ANSI standard (source) |
| /usr/ccs/lib/llib-lansi.ln | Déclarations pour les fonctions ANSI standard (format binaire) |
| /usr/ccs/lib/llib-lc | Déclarations pour les fonctions standard (source) |
| /usr/ccs/lib/llib-lc.ln | Déclarations pour les fonctions standard (format binaire) |
| /usr/ccs/lib/llib-lcrses | Déclarations pour les fonctions curses (source) |
| /usr/ccs/lib/llib-lcrses.ln | Déclarations pour les fonctions curses (format binaire) |
| /usr/ccs/lib/llib-lm | Déclarations pour les fonctions mathématiques standard (source) |
| /usr/ccs/lib/llib-lm.ln | Déclarations pour les fonctions mathématiques standard (format binaire) |
| /usr/ccs/lib/llib-port | Déclarations relatives aux fonctions portables (source) |
| /usr/ccs/lib/llib-port.ln | Déclarations pour les fonctions portables (format binaire) |
| /usr/lpp//xlC/lib | Répertoire contenant les bibliothèques C++ |
| /var/tmp/*lint* | Fichiers temporaires |