clang-tidy -fix не применяет никаких изменений

Я запускаю clang-tidy с помощью следующей команды:

run-clang-tidy.py -checks="-*,cppcoreguidelines-*,hicpps-*" -header-filter=".*" -fix"

(или clang-tidy -checks="-*,cppcoreguidelines-*,hicpps-*" -header-filter=".*" -fix" тоже работает)

Это возвращает много ошибок. В терминале также написано applying fixes..., поскольку я добавил параметр -fix.

Моя проблема в том, что для cppcoreguidelines-* и hicpps-* исправления не применяются, а только показаны. Выбираю ли я проверки, чтобы не поддерживать исправление моей 1000 проблем?


person Sharky    schedule 07.11.2018    source источник
comment
Вы пробовали это на меньшем количестве файлов / проверок или на одном файле и проверке? Какие ошибки он возвращает?   -  person pablo285    schedule 09.11.2018
comment
Извините за мой язык, но когда я написал, что команда вернула много ошибок, я имел в виду список правил, которые я нарушаю в своем коде (ошибки clang). Команда ведет себя так, как должна возвращать этот список ошибок, но не применяет исправления для ошибок с параметром - fix   -  person Sharky    schedule 11.11.2018


Ответы (2)


Вам следует использовать параметр -fix-errors вместо просто -fix. Последний не будет применять никаких исправлений, если присутствуют ошибки компилятора. См. документацию по clang-tidy:

  -fix                          -
                                  Apply suggested fixes. Without -fix-errors
                                  clang-tidy will bail out if any compilation
                                  errors were found.
  -fix-errors                   -
                                  Apply suggested fixes even if compilation
                                  errors were found. If compiler errors have
                                  attached fix-its, clang-tidy will apply them as
                                  well.
person pablo285    schedule 18.01.2019

Я также столкнулся с той же проблемой, когда пытался автоматически применить исправления clang-tidy через скрипт LLVM run-clang-tidy python:

Причина проблемы для меня заключалась в несовпадении run-clang-tidy.py script, clang-tidy и версии clang-apply-replacements. Последней была версия 10 вместо 11, поэтому установка clang-tidy-11 и связывание clang-apply-replacements с clang-apply-replacements-11 устранили проблему для меня. Я также загрузил сценарий run-clang-tidy из репозитория LLVM с соответствующим тегом.

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

clang++ --version
clang-tidy --version
clang-apply-replacements --version
person mutableVoid    schedule 10.06.2021