Outils pour utilisateurs

Outils du site


prog:iwyu

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
prog:iwyu [2021/04/11 21:11] – Création rootprog:iwyu [2024/02/23 16:28] (Version actuelle) – Ajout des options à l'exécution root
Ligne 1: Ligne 1:
 [[https://include-what-you-use.org|Site web]] [[https://include-what-you-use.org|Site web]]
 +
 +====CMake====
 +
 +  * Configuration
  
 S'intègre parfaitement avec [[prog:cmake|CMake]]. S'intègre parfaitement avec [[prog:cmake|CMake]].
Ligne 6: Ligne 10:
  
 Puis lancer la génération des fichiers ''Makefile'' avec ''%%CC="clang" CXX="clang++" cmake -S . -B build%%'' pour générer également le fichier ''compile_commands.json''. Puis lancer la génération des fichiers ''Makefile'' avec ''%%CC="clang" CXX="clang++" cmake -S . -B build%%'' pour générer également le fichier ''compile_commands.json''.
 +
 +  * Exécution de l'analyse
  
 <code bash> <code bash>
-iwyu_tool -p . -- -Xiwyu --mapping_file="$(pwd)/../.iwyu-suppressions"+iwyu_tool -p . -- -Xiwyu --mapping_file="$(pwd)/../.iwyu-suppressions" > fix.log
 </code> </code>
 +
 +Il est possible de mettre autant de ''-Xiwyu %%--%%mapping_file='' que l'on veut.
  
 Le dossier spécifié par ''-p'' est celui qui contient le fichier ''compile_commands.json''. Le dossier spécifié par ''-p'' est celui qui contient le fichier ''compile_commands.json''.
 +
 +  * Option d'exécution
 +
 +Si vous préférez les entêtes aux ''forward declaration'', il faut ajouter l'option ''%%--no_fwd_decls%%''.
 +
 +Par défaut, iwyu va analyser tous les fichiers sources (''.cpp'', ''.cc'', ...) depuis le fichier ''compile_commands.json''. Les fichiers entête analysés doivent avoir le même nom (hors extension) que celui du fichier contenant le code source. Si on veut analyser d'autres fichiers, il faut utiliser l'option ''%%-Xiwyu --check_also="*path/*.h"%%'' (format wildcard). Les ''%%--check_also%%'' sont cumulables.
 +
 +  * Application des résultats
 +
 +<code bash>
 +fix_includes.py --nosafe_headers < fix.log
 +</code>
 +
 +Par défaut, les headers ne sont pas modifiés. Il faut ajouter l'option ''%%--nosafe_headers%%''.
 +====Options====
 +
 +  * Filtrer les erreurs
  
 Il est possible de supprimer certains avertissements en utilisant un fichier (ici ''.iwyu-suppressions''). Il est important que le chemin de ce fichier soit absolu. Il est possible de supprimer certains avertissements en utilisant un fichier (ici ''.iwyu-suppressions''). Il est important que le chemin de ce fichier soit absolu.
Ligne 25: Ligne 50:
  
 Dans la seconde partie ''public'', on met le nom du juste entête. Dans la seconde partie ''public'', on met le nom du juste entête.
 +
 +  * Qt
 +
 +Dans le code source, il y a un script ''mapgen/iwyu-mapgen-qt.py'' qui permet de générer du fichier de correspondance. Il est impératif de l'utiliser avec la version exacte de Qt.
 +
 +Attention, tout est codé en expression régulière et ''iwyu'' n'est pas du tout optimisé pour ça. Il est conseillé de remplacer tous les ''%%"@[\"<](Qt3DCore/)?qcomponent\\.h[\">]"%%'' par ''%%"<qcomponent.h>"%%'' et éventuellement d'ajuster en fonction des premiers résultats.
prog/iwyu.1618168293.txt.gz · Dernière modification : 2021/04/11 21:11 de root