Clang-tidy
Цей інструмент знаходиться в пакеті clang-tools-extra, який можна отримати через пакетний менеджер. Для прикладу на Arch:
work@machine:~$ sudo pacman -S clang-tools-extra
Або на Ubuntu:
work@machine:~$ sudo apt-get install clang-tidy
clang-tidy - це інструмент аналізу базований на C++ Clang. Він забезпечує широкий статичний аналіз виявлення та виправлення можливих помилок, продуктивності, переносимості та підтримки коду.
Аналіз
Візьмемо для прикладу ось цю невеличку програмку з виводом тексту-привітання та ініціалізацією вказівника:
При запуску аналізатора він видасть попередження, що не потрібно використовувати 0 (тобто int
), а краще використати типобезпечніший nullptr
:
/home/olexandr/main.cpp:4:18: warning: use nullptr [modernize-use-nullptr]
void* pointer = 0;
^
nullptr
Команда для аналізу файлу main.cpp:
work@machine:~$ clang-tidy -checks=* -header-filter=* -p ./ main.cpp
#Проблема
- ###Що ж робити, якщо проект великий?
Я вирішив, що варто рекурсивно обійти весь проект запускаючи аналізатор для усіх файлів.
- Для початку можна просто вивести рекурсивно усі файли, тому пишемо ось так:
#!/bin/bash
echo 'Clang-tidy analizator started.'
shopt -s globstar #Включення рекурсії для **
for file in ./**; do #./ - краще замінити на іншу папку
echo $file
done
- Впровадити команду для аналізу одного файлу у цикл:
#!/bin/bash
echo 'Clang-tidy analizator started.'
shopt -s globstar
for file in ./**; do
clang-tidy -checks=* -header-filter=* -p ./ $file
done
- Додати вкінці команди аргумент -fix для автоматичного виправлення коду:
clang-tidy -checks=* -header-filter=* -p ./ $file -f
- ###Покращення скрипту
Залишилось зробити виконуваним та винести папку як зовнішній параметр:
#Тепер файлик виконуваний
chmod +x yourScript.sh
і зовнішній параметр:
#!/bin/bash
if [ -z "$1" ]
then
echo 'Вкажіть папку проекту!'
else
echo 'Clang-tidy аналізатор стартував.'
shopt -s globstar
for file in $1**; do
clang-tidy -checks=* -header-filter=* -p ./ $file
done
fi
Ще немає коментарів