Clang-формат продолжает переключать местоположение комментария - PullRequest
2 голосов
/ 03 ноября 2019

Я запускаю clang-formt для исходного файла, и он продолжает переключать местоположение комментария, никогда не выбирая правильное местоположение.

Вот копия моего .clang-format файла:

BasedOnStyle: Microsoft

Информация о версии:

$ clang-format --version
clang-format version 9.0.0

Фрагмент ниже показывает результаты, когда я запускаю clang-format с -i, а затем --output-replacements-xml:

$ clang-format -i MyFile.cpp
$ clang-format --output-replacements-xml MyFile.cpp
<?xml version='1.0'?>
<replacements xml:space='preserve' incomplete_format='false'>
<replacement offset='2702' length='7'>&#10;            </replacement>
</replacements>
$ clang-format -i MyFile.cpp
$ clang-format MyFile.cpp
<?xml version='1.0'?>
<replacements xml:space='preserve' incomplete_format='false'>
<replacement offset='2702' length='13'>&#10;      </replacement>
</replacements>

Как видите, поле длины смещения замены продолжает меняться. Если бы я продолжал повторять это снова и снова, вы бы увидели, что он чередуется между двумя результатами, перечисленными выше. По сути, это просто перемещение местоположения конкретного комментария туда и обратно.

Вот источник, о котором идет речь:

Форматированная версия 1:

    if (mp) // if foo bar likes to foo, the foo
    {       // but bar foo also is bar
            // too bizz bazz buzz bizz
        status = contains(mp->foobar());

Форматированная версия 2:

    if (mp) // if foo bar likes to foo, the foo
    {       // but bar foo also is bar
      // too bizz bazz buzz bizz
        status = contains(mp->foobar());

Строка, о которой идет речь, - // too bizz bazz buzz bizz, поскольку ее местоположение никогда не "улаживается". Кто-нибудь знает, почему этот комментарий продолжает двигаться вперед и назад? Кроме того, любые идеи о том, как предотвратить это (изменение файла формата, другой версии средства форматирования и т. Д.).

...