Недавно я обнаружил, что работаю с кодом R, который находится по всей карте с точки зрения стиля кодирования - множество авторов и отдельных авторов, которые не строго придерживаются одной структуры. Есть определенные задачи, которые я хотел бы автоматизировать лучше, чем сейчас.
Я ищу инструмент (или инструменты), который управляет следующими задачами - перечислены в порядке возрастания желания, а также в порядке возрастания скептицизма существования.
Базовое форматирование. Такие вещи, как преобразование «if (foo)» в «if (foo)» и достижение единообразия в отношении местоположения фигурной скобки и тому подобное.
Преобразование "foo $ blah" в "foo [[" blah "]]" для доступа к списку. В идеале было бы возможно, по крайней мере, сделать предположение, если бы объект был действительно списком, а не data.frame, а преобразовывал бы только списки.
Преобразование '=' в '<-'. Да, это простой поиск и замена - но не совсем. Инструмент (или regexp) должен знать язык так, чтобы он мог преобразовать «x = 5», но не «foo (x = 5)». Также было бы неплохо не просто заменить символ, но и обеспечить один пробел с обеих сторон оператора присваивания. </p>
Переименование переменной, особенно для разных функций и файлов. Например, предположим, что в списке есть элемент «foo», я хотел бы иметь возможность изменить его на «foobar» один раз и не отслеживать каждый случай использования этого списка во всем потоке кода. Я предполагаю, что для этого потребуется инструмент, чтобы иметь возможность управлять всем потоком управления, чтобы идентифицировать такие вещи, как этот список, существующий как другое имя в другой функции.
Соглашения об именах. Мне бы хотелось иметь возможность определить какое-то стандартное соглашение об именах (например, от Google или что-то еще), чтобы оно идентифицировало все функции, переменные и т. Д. И преобразовало их. Обратите внимание, что это связано с предыдущей записью для таких вещей, как элементы списка.
Не стесняйтесь перечислять основные команды обработки Unix (например, Sed), если он действительно будет достаточно умен, чтобы, по крайней мере, обычно не облажаться (например, преобразование "foo (x = 5)" в "foo (x <) -5) "). </p>
Я полагаю, что если бы такой инструмент уже существовал в идеальном состоянии, я бы уже слышал о нем, и я также понимаю, что с таким языком, как R, трудно выполнить некоторые из этих видов меняется автоматически, но можно мечтать, верно? У кого-нибудь есть указатели на некоторые / все из них?