Там хорошо работает инструмент для рефакторинга веб-кода Perl? [закрытый]

Я полагаю, что приведенный ниже код поможет вам:

aa = ({'object': 0.407, '2008': 0.325, 'concept': 0.449, 'c#': 0.222, '.net': 0.21, 'oriented': 0.41, '2012': 0.369, 'asp.net': 0.234, 'sql_server': 0.274}, {'microsoft_kinect_sdk_1.8': 1.0}, {'sql': 0.268, 'ado.net': 0.447, 'c#': 0.468, 'asp.net': 0.494, 'c++': 0.346, 'sql_server': 0.289, 'java': 0.248}, {'.net': 1.0}, {'sql_serverâ': 0.766, 'c#': 0.282, 'asp': 0.513, '.net': 0.267}, {'jquery': 0.201, 'vb': 0.49, 'prototype': 0.481, 'c#': 0.214, '.net': 0.203, 'css': 0.199, 'javascript': 0.357, 'html': 0.204, 'object-oriented': 0.376, 'java': 0.227}, {'javascript': 0.163, 'android': 0.216, 'java_ee': 0.38, 'liferay': 0.86, 'java': 0.207}, {'j2ee': 1.0}, {'javascript': 1.0}, {'android': 1.0}, {'ios': 1.0}, {'ruby': 0.432, 'rails': 0.424, 'asp.net': 0.254, 'css': 0.223, 'fphp': 0.654, 'javascript': 0.2, 'html': 0.228})

bb = {}
for i in aa:
    for k, v in i.items():
        bb.setdefault(k, []).append(v)

print (bb)


#output
{'object': [0.407], '2008': [0.325], 'concept': [0.449], 'c#': [0.222, 0.468, 0.282, 0.214], '.net': [0.21, 1.0, 0.267, 0.203], 'oriented': [0.41], '2012': [0.369], 'asp.net': [0.234, 0.494, 0.254], 'sql_server': [0.274, 0.289], 'microsoft_kinect_sdk_1.8': [1.0], 'sql': [0.268], 'ado.net': [0.447], 'c++': [0.346], 'java': [0.248, 0.227, 0.207], 'sql_serverâ': [0.766], 'asp': [0.513], 'jquery': [0.201], 'vb': [0.49], 'prototype': [0.481], 'css': [0.199, 0.223], 'javascript': [0.357, 0.163, 1.0, 0.2], 'html': [0.204, 0.228], 'object-oriented': [0.376], 'android': [0.216, 1.0], 'java_ee': [0.38], 'liferay': [0.86], 'j2ee': [1.0], 'ios': [1.0], 'ruby': [0.432], 'rails': [0.424], 'fphp': [0.654]}

Если вы не хотите использовать объект списка для элемента с одним значением, например, object: [0.407], затем вы можете преобразовать его в строку для дальнейшей обработки.

14
задан Kara 12 December 2013 в 06:45
поделиться

7 ответов

Я думаю Eclipse / EPIC имеет "немного" инструменты рефакторинга Perl..., но не заключайте мне в кавычки на этом ;-)

Могло бы также стоить проверить Комодо . Однако полная версия не является бесплатной как Eclipse / EPIC. Вы могли попробовать их версию с открытым исходным кодом Редактирование Комодо , но я предполагаю, что это не будет иметь всех функций?

я не использовал или выше или никакие другие инструменты рефакторинга... Я обхожусь vi/vim & редакторы TextMate и что они обеспечивают (или что я до сих пор нашел в каждом из этих редакторов!).

модульные тесты Создания хорошее начало. Также взгляните perltidy / Perl:: Опрятный & Perl:: Критик , который может помочь одноранговому узлу через путаницу и найти некоторые из тех "запахов кода".

13
ответ дан 1 December 2019 в 08:20
поделиться

Вероятно, волонтеры на Осуществляют рефакторинг: мой => 'код' может помочь Вам. Так или иначе это свободно спросить :)

7
ответ дан 1 December 2019 в 08:20
поделиться

В то время как это действительно не осуществляет рефакторинг ни в какой большой глубине, этот , узел PerlMonks описывает несколько отображений Vim для deobfuscating кода жемчуга с помощью B:: Deparse.

Их примеры:

можно ввести _d, когда курсор по этой строке в нормальном режиме:

--$|&&s|\n|-|;

... и это будет заменено:

s/\n/-/ if --$|;

И эта строка:

$foo and $bar or $baz = 1;

... был бы заменен:

$baz = 1 unless $foo and $bar;
5
ответ дан 1 December 2019 в 08:20
поделиться

Eclipse с плагином EPIC действительно имеет некоторую поддержку рефакторинга. Не столь сложный как рефакторинг IntelliJ для инструмента Java. Не 100%, уверенных, это помогло бы с Вашей проблемой все же. Они способ, которым я использовал его, должны выделить блоки кода и переместить их в функции / методы. В Вашем случае Вы, вероятно, собираетесь хотеть сделать большой поиск/замену на тех магических числах...

я предполагаю, что Вы собираетесь использовать Тест:: Больше записать Ваши модульные тесты. Некоторые из других инструментов EPIC могли помочь с тем (например, теги "todo").

Вы могли также использовать Тест:: WWW:: Механизируйте и Тест:: WWW:: Селен - был бы полезен в Вашем случае, чтобы определить тесты селена, чтобы удостовериться, что Вы не повреждаете функциональности конечного пользователя. EPIC не имеет ничего в особенности для помощи с этим, хотя, но он должен быть возможным использовать его для неродной через код при отладке.

Удача. :-)

1
ответ дан 1 December 2019 в 08:20
поделиться

Динамический характер Perl означает, что очень трудно создать инструменты рефакторинга для него.

Однако относительно тестирования Вас должен смочь соединить некоторые регрессионные тесты для помощи Вам на Вашем пути. Это работает путем запуска с кода, как это теперь и получение его текущей производительности. Это могло бы запускать скрипт CGI от командной строки и сохранять результирующий HTML в файл.

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

Это может быть чем-то вроде тяжелой работы для установки, но сделает жизнь легче в конечном счете. Необходимо попытаться автоматизировать эти тесты для создания легкого для выполнения. Тест контроля:: WWW:: Механизируйте и Тест:: LongString, а также все другие.

6
ответ дан 1 December 2019 в 08:20
поделиться

vim! (Или любой другой текстовый редактор)

действительно нет волшебного инструмента к линзовому телескопу Ваш код, существуют инструменты вокруг, чтобы (например), переименовать переменные/функции, но нет никакого способа, которым он может волшебно зафиксировать ужасную структуру кода или странную логику.

0
ответ дан 1 December 2019 в 08:20
поделиться

См. Devel :: Refactor - расширение Perl для рефакторинга кода Perl. https://metacpan.org/pod/Devel::Refactor

1
ответ дан 1 December 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: