Здравствуйте, Ночной Смотрящий, Вы писали:
V>>Давно последний раз на Resharper C++ смотрел?
НС>Никакой чудо решарпер не поможет сделать С++ столь же пригодным к рефакторингу, как C# или Java.
Вдогонку, немного технических подробностей.
Сложность автокомплита, навигации и рефакторинга С++ в сравнении с C# или Java возражений никогда не вызывала.
Сложность эта заключается в системе препроцессора, который подключает файлы через include и раскрывает макроопределения.
В итоге возможна ситуация, когда в зависимости от определений символов, "смысл" одного и того же подключаемого из разных мест файла может изменяться.
Эта сложность объективная, но не непреодолимая.
Напомню, что в C# тоже есть возможность подключать одни и те же физические файлы в разные проекты и тоже можно воссоздать ситуацию, когда одни и те же символы имеют в таком многократно подключенном файле разный смысл. Чтобы корректно разбираться со "смыслом" таких файлов, Решарперу необходима информация из файлов проектов C#.
Аналогично он поступает с проектами С++ — разбирает файлы проектов и в точности знает значения всех символов во всех версиях одного и того же файла.
Разумеется, подхватывает так же настройки самой среды разработки и переменные среды, т.к. и там и там обычно содержится информация (или часть её) о внешних зависимостях.
Еще рядом упоминал, что Решарпер С++ и CLion отлично "вынюхивает" Make и CMake-файлы, теперь не хуже чем формат MSBuild для C#/C++, т.е. теперь он способен построить точную модель кода для различных видов проектов, что и требуется для точной навигации/автокомплита/рефакторинга.
Рзумеется, задача эта оказалось более сложной, чем для C# или Java, но они её решили, респект.
Да, в процессе рефакторинга такие подключаемые из разных мест файлы, "меняющие свой смысл", могут утрачивать валидность.
Происходящее в этом случае аналогично кейзу для C#, когда один и тот же файл подключается из разных проектов, т.е. поведение Решарпера для двух этих языков аналогично — на этапе предпросмотра изменений он сигнализирует о будущих ошибках в коде в результате рефакторинга, давая возможность отметить или нет те места, которые можно скипнуть в процессе рефакторинга и/или вообще согласиться или нет с происходящим.
А да, вдогонку.
Еще же Решарпер делает анализ кода и много чего подсказывает:
https://www.jetbrains.com/clion/whatsnew/