LINUX.ORG.RU

QtCreator умеет переименовывать, выделять функции, находить места исользования.

four_str_sam
()

Без конкретики: что тебе нужно и что в твоём понимании «адекватные инструменты», это сделать довольно непросто

XMs ★★★★★
()

astyle/grep/руки и терпение, ты только держись там

Deleted
()

/dev/brains, /dev/hands.

Даже автоматизированные инструменты сами не работают - нужно проверять результаты их работы (типа передается аргумент по значению или ссылке при выделении блока кода в функцию). Но ты же ведь и сам это знаешь. Если бы были такие чудо - инструменты, которые ты хочешь, то ты сам в такой задаче был бы не нужен...

QtCreator, JetBrains CLion про них ты, наверняка, тоже знаешь.

anonymous
()
Ответ на: комментарий от XMs

Мне нужно выделять циклические зависимости классов, искать бесполезные классы, вместо которых лучше использовать структуры/пространства имен, заменять платформозависимые типы на кроссплатформенные, и т.д.

aido ★★
() автор топика
Ответ на: комментарий от aido

циклические зависимости классов

Увы, не знаю.


искать бесполезные классы, вместо которых лучше использовать структуры/пространства имен

Просто ради любопытства: как, по-твоему, софт должен решить, что из этих трёх вариантов лучше подходит?


заменять платформозависимые типы на кроссплатформенные

Насколько я помню по постам Карпова, их PVS-studio давала предупреждения в каких-то таких случаях (или это у них в блоге было? Не помню). Возможно, что и кланговский анализатор сможет что-то такое выцепить. Хотя по мне тут лучше сработает греп и ручной анализ.

XMs ★★★★★
()
Ответ на: комментарий от XMs

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

Хотя тут лучше пересматривать всю архитектуру приложения.

aido ★★
() автор топика
Ответ на: комментарий от aido

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

cppcheck может подсказать в этом случае. Но сам работу не сделает.

UVV ★★★★★
()
Ответ на: комментарий от aido

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

four_str_sam
()
Ответ на: комментарий от aido

Ну если класс содержит только публичные статические методы, то класс можно выкинуть, а все наследования от него убрать

добавь такому классу приватный деструктор и компилятор укажет тебе все наследования

not_rj45
()
Ответ на: комментарий от not_rj45

Можно объявить класс [[deprecated]].

anonymous
()

Если есть время и не хочется в IDE, то можешь попробовать прикрутить clangd [1], intellisense [2], или cquery [3] через language server protocol [4] к виму/емаксу.

Если получится годно - поделись с остальными, у меня пока получалось не очень :)

[1] https://clang.llvm.org/extra/clangd.html
[2] https://code.visualstudio.com/docs/languages/cpp
[3] https://github.com/jacobdufault/cquery
[4] https://langserver.org/

snizovtsev ★★★★★
()

на языке с макроснёй и условной компиляцией такие инструменты будут неадекватными почти всегда.

dzidzitop ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.