clang-tidy вставляет несколько спецификаторов переопределения при исправлении - PullRequest
0 голосов
/ 28 октября 2018

У меня есть cmake проект, который я хотел бы модернизировать, используя clang-tidy.Чтобы не происходило слишком много событий одновременно, я только активировал опцию modernize-use-override.Однако, когда я применяю это:

$> run-clang-tidy  -header-filter='.*'  -checks='-*, modernize-use-override' -fix

к проекту, clang-tidy вставляет несколько экземпляров спецификатора override, например:

void update_sizes() override override override etc.

Я пытался следоватьданный совет здесь и использование cmake для создания базы данных команд компиляции json:

$>cmake ../../ -DCMAKE_BUILD_TYPE=debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

Я убедился, что cmake на самом деле подбирает компилятор clang, установив егопо умолчанию для всей системы (с использованием update-alternative).В этом случае cmake генерирует make-файлы, которые вызывают компилятор clang.

Я использую Ubuntu 18.10 и clang 7.

Я также пробовал это с использованием clang-6 и установкой cmake генерировать ninja сценариев сборки вместо make файлов, но результат всегда один и тот же.

Весь проект прекрасно компилируется как с gcc, так и с clang до исправления.Применяется.

Обратите внимание, что здесь есть аналогичное обсуждение , однако здесь дан совет использовать run-clang-tidy.py, и это именно то, что я делаю.Поэтому я не считаю это дубликатом.

1 Ответ

0 голосов
/ 05 ноября 2018

Это та же проблема, на которую вы ссылались в обсуждении, на которое вы ссылались, и на мой взгляд это ошибка.У вас есть несколько вариантов:

  1. Сообщить об ошибке как лягушку.Ждите долго.
  2. Исправьте ошибку самостоятельно.Тратьте много времени.
  3. Используйте любой инструмент с возможностью замены текста в нескольких файлах / каталогах (например, Notepad ++).Найдите и замените все вхождения «override override» на «override».Повторяйте до тех пор, пока больше не будет повторений.Дрожь от уродства используемого вами решения.:)
...