Простой фронт-инструмент, который может запускать различные инструменты статического анализа, прочитав необходимую информацию от compile_commands.json.
Обеспечивает форматирование выходного сигнала для интеграции с другими инструментами, параллелизации при необходимости, возможность переопределить/перенастроить флаги компилятора и тому подобное по требованиям плагина «инструмент».
Текущая разработка осуществляется в основном в Windows, но должна работать на любой платформе, где у вас есть Python, рабочая среда разработки для вашего собственного проекта и анализатора. В настоящее время поддерживаются:
Проект доступен в PYPI в качестве распределения источников:
pip install processcdb
Поскольку ProcessCDB также установит несколько зависимостей, рекомендуется использовать PIPX для установки.
После установки упаковки. Создать файл конфигурации с:
processcdb --dump-config
Это будет генерировать файл конфигурации Barebones в местоположение по умолчанию (может быть перезаписано позже с аргументом -config). Отредактируйте этот файл, чтобы указать «двоичные» варианты для этих анализатора, чтобы указать на их исполняемый файл. В Windows не опускайте расширение файла.
Основная помощь:
processcdb --help
После процесса генерации compile_commands.json вы можете запустить ProcessCDB с помощью выбранного инструмента, подобного этому:
processcdb --tool clang-tidy
Это попытается найти файл JSON из текущего рабочего каталога и запускает инструмент, в данном случае Clang-Tidy, против всех файлов, которые скомпилируются, а не в черном списке в файле comfig processCDB или в собственном файле конфигурации инструментов и генерирует выход для стандартного вывода. Если вам нужно запустить инструмент, когда у вас нет доступа к изменению текущего рабочего каталога, вы можете пройти --cdb и абсолютное место:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
Можно направить инструменты, выводящие в файл с аргументом --output . Стоит отметить, что определенные инструменты ( -t ) могут предоставить дополнительные аргументы для пост -обработки или конкретных целей инструмента:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Если ProcessCDB используется без передачи аргумента --config , используется файл конфигурации по умолчанию. Расположение зависит от операционной системы. Если вам нужно проанализировать несколько проектов с различными настройками или вы хотите проанализировать с различными версиями конкретного сканера, используйте несколько файлов конфигурации.
Например, если у вас есть кодовая база, которую вы хотите сканировать с Clang 11.0.0, но ваш проект действительно составлен с Microsoft MSVC, и у вас есть еще один проект, который компилируется с Clang: Сделайте отдельный файл конфигурации для MSVC и Clang и Invoke ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Если ProcessCDB используется без передачи аргумента --config , используется файл конфигурации по умолчанию. Чтобы сгенерировать файл конфигурации, перенесите --dump-config в ProcessCDB. Чтобы сохранить файл конфигурации по умолчанию в файл. Либо захватить стандартный выход или предоставить параметр --config .
Каждый инструмент имеет отдельный раздел, и каждый раздел может быть настроен либо в разделе конкретного инструмента, либо по умолчанию. Минимальный. Конфигурация единого инструмента будет выглядеть примерно так:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Здесь у нас есть раздел для инструмента Clang-Tidy, где мы настраиваем binary файл для значения c:llvm-11.0.0binclang-tidy.exe .
Модуль Python configparser используется для загрузки/анализа файла.
Следующие переменные разделяются между инструментами:
binary - абсолютный путь к сканеру.file_blacklist - Список характеристик файлов, которые должны быть опущены из сканированияarg_blacklist - список аргументов командной строки, передаваемых компилятору, который не должен передаваться в инструмент.arg_additions - список пар клавиш/значения. Если ключ найден в JSON, значение помещается в аргументы инструмента.jobs - Номер по умолчанию процессы ProcessCDB или инструмент может использовать для обработки. 0 для автоматического обнаружения.default_includes - список путей, которые должны быть автоматически переданы в инструмент, как включают пути, которые не могут быть указаны в compile_commands.jsondefault_args - Список аргументов, которые должны быть переданы в инструмент, который не предоставлен compile_commands.jsonincludes_as_system : Список характеристик файлов, которые должны преобразовать из обычного -i включить в -исистему.Каждый вариант конфигурации, который является списком и позволяет несколько значений, используйте Semicolon в качестве разделителя элемента.
С помощью arg_blacklist можно лишить ненужные аргументы командной строки, и arg_addition можно использовать для внедрения новых аргументов. Например, если он компилирует проект в MSVC и исключения включены, следующая конфигурация позволит инструменту Clang-Tidy по-прежнему работать правильно:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Как сначала, ProcessCDB заметит, что Compile_Commands.json может иметь аргумент /EHsc , он добавит 2 новых аргумента -Xclang и '-fcxx-exceptions', а затем arg_blacklist удалит исходный /EHsc
Инструмент CPPCHECK также имеет опцион supression_file , который, при необходимости, должен быть абсолютным местоположением собственного файла подавления CPPCHECKS.
Способность Clang-Tidy Toool конвертировать Logfile в XML для прямой поддержки Jenkins является частью проекта Codechecker, и его лицензировано в Apache 2.0
Главная: https://github.com/rasjani/processcdb Выпуски: https://github.com/rasjani/processcdb/issues