Outil frontal simple qui peut exécuter divers outils d'analyse statique en lisant les informations requises de compile_commands.json.
Fournit la mise en forme de sortie pour l'intégration à d'autres outils, la parallérisation en cas de besoin, la capacité de remplacer / reconfigurer les indicateurs de compilateur et autres sur les exigences du plugin "outil".
Le développement actuel se fait principalement sur Windows, mais devrait fonctionner sur n'importe quelle plate-forme où vous avez un Python, un environnement de développement de travail pour votre propre projet et analyseur. Actuellement pris en charge:
Le projet est disponible dans PYPI comme distribution source:
pip install processcdb
Étant donné que ProcessCDB installe également quelques dépendances, l'utilisation de PIPX pour l'installation est prodige.
Une fois le package installé. Générer un fichier de configuration avec:
processcdb --dump-config
Cela générera un fichier de configuration Barebones à l'emplacement par défaut (peut être écrasé plus tard avec un argument - config). Modifiez ce fichier pour pointer des options "binaires" pour que les analyseurs pointent vers leur exécutable. Sous Windows, n'omettez pas l'extension de fichier.
Aide de base:
processcdb --help
Après un processus de génération d'un compile_commands.json, vous pouvez exécuter ProcessCDB avec un outil sélectionné comme ceci:
processcdb --tool clang-tidy
Cela essaiera de localiser le fichier JSON à partir du répertoire de travail actuel et exécute l'outil, dans ce cas, Clang-Tidy, contre tous les fichiers compilés et non sur liste noire dans le fichier COMFIG ProcessCDB ou dans le fichier de configuration des outils et génère la sortie vers la sortie standard. Si vous devez exécuter l'outil lorsque vous n'avez pas accès pour modifier le répertoire de travail actuel, vous pouvez passer --cdb et l'emplacement absolu:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
On peut diriger la sortie des outils vers un fichier avec --output point-point. Il convient de noter que certains outils ( -t ) peuvent fournir d'autres arguments pour le post-traitement ou les fins spécifiques à l'outil:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Si ProcessCDB est invoqué sans passer un argument --config , un fichier de configuration par défaut est utilisé. L'emplacement dépend du système d'exploitation. Si vous devez analyser plusieurs projets avec différents types de paramètres ou si vous souhaitez analyser avec différentes versions d'un scanner particulier, utilisez plusieurs fichiers de configuration.
Par exemple, si vous avez une base de code, vous souhaitez scanner avec Clang 11.0.0, mais votre projet est vraiment compilé avec MSVC de Microsoft et vous avez un autre projet qui compile avec Clang: Faire un fichier de configuration séparé pour MSVC et Clang et invoquer ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Si ProcessCDB est invoqué sans passer un argument --config , un fichier de configuration par défaut est utilisé. Pour générer un fichier de configuration, passez --dump-config au processuscdb. Pour enregistrer le fichier de configuration par défaut dans un fichier. Capturez la sortie standard ou fournissez un paramètre --config .
Chaque outil a une section distincte et chaque section peut être configurée soit dans la section spécifique à l'outil, soit par défaut. Minimal. La configuratio d'outil unique ressemblerait à ceci:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Ici, nous avons une section pour l'outil Clang-tidy, où nous définissons un binary variable sur une valeur de c:llvm-11.0.0binclang-tidy.exe .
Le module Python configparser est utilisé pour le chargement / l'analyse du fichier.
Les variables suivantes sont partagées entre les outils:
binary - chemin absolu vers un scanner.file_blacklist - liste des spécifications de fichiers qui doivent être omises de l'analysearg_blacklist - Liste des arguments de ligne de commande transmis au compilateur qui ne doivent pas être transmis à un outil.arg_additions - une liste des paires de clés / valeur. Si la clé est trouvée dans JSON, une valeur est placée dans les arguments de l'outil.jobs - Les processus par défaut ProcessCDB ou l'outil peuvent utiliser pour traiter. 0 pour la détection automatique.default_includes - Liste des chemins qui devraient être automatiquement transmis à l'outil comme incluent des chemins qui pourraient ne pas être spécifiés dans compile_commands.jsondefault_args - Liste des arguments qui doivent être transmis à l'outil qui ne sont pas fournis par compile_commands.jsonincludes_as_system : la liste des spécifications de fichiers qui devraient converties à partir de -I noral incluent -Système inclut.Chaque option de configuration qui est une liste et autorise plusieurs valeurs, utilisez un demi-colon comme séparateur d'élément.
Avec arg_blacklist , on peut se déshabiller des arguments de ligne de commande inutiles et arg_addition peut être utilisé pour injecter de nouveaux arguments. Par exemple, si la compilation d'un projet dans MSVC et les exceptions sont activées, la configuration suivante permettrait à l'outil Clang-tidy de fonctionner toujours correctement:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Comme d'abord, ProcessCDB remarquerait que compile_commands.json pourrait avoir un argument /EHsc , il ajouterait 2 nouveaux arguments -Xclang et '-fcxx-Exceptions', puis Arg_BlackList supprimerait alors l'original /EHsc
L'outil CPPCHECK a également une option supression_file qui, si nécessaire, devrait être l'emplacement absolu du fichier de suppression de CPPCHECKS.
La capacité de Clang-Tidy Toool à convertir le logfile LogFile en XML pour le support direct de Jenkins fait partie du projet CodeChecker et son licence sous Apache 2.0
Accueil: https://github.com/rasjani/processcdb Problèmes: https://github.com/rasjani/processcdb/issues