LINUX.ORG.RU

Как удалить из проекта весь код?

 


1

2

Есть какие-нибудь инструменты позволяющие удалить из проекта весь код?

Т.е. чтобы файл

namespace Sociology;

/*
 * Cупер класс
*/
class Cooperation {
    
    /*
     * function rum
     * @param $mor, $far
     */
    function rum($mor=false, $far=false) {
        
        for ($i = 0; $i <= 35990*2; $i++) {
            $baseSum = round((rand(200,300)+rand(200,300))/2);
            $basis[$baseSum] = $basis[$baseSum]+1;
        }
        ksort($basis);
        return $basis;
    }
    #
}
превратился бы в
namespace Sociology;
/*
 * Cупер класс
*/
class Cooperation {
    /*
     * function rum
     * @param $mor, $far
     */
    function rum($mor=false, $far=false) {}
}
Еще бы было неплохо чтобы он мог все это склеить в один файл грамотно разрулив неймспейсы, но это уже мечты...

★★★★★

В этом вашем PHP есть же Reflection? С его помощью это очень просто делается. Я только теряюсь в догадках зачем. Документация?

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

Да может готовое решение прямо есть. Консольная какая-нибудь утилитка.

А нужно для автокомплита в редаторе. Проект дофигища файлов содержит и чтобы редакто не ворачал тоннами кода скормить ему похудевшие файлы.

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

это не надо учитывать, у автора ведь другая задача стоит. Но там, естественно много чего не учтено, в первую очередь, не учтена вложенность функций друг вдруга. Я ж не говорил, что все одной регуляркой решается, придется и деревья строить, и много чего еще. Имелось в виду, что парсер на регулярках достаточно просто написать под такую задачу, не нужно перделки левые искать.

А вообще, для такой задачи, если я ее правильно понял, и код убирать никакой не нужно, нужно просто выдернуть все имена функций.

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

на какой машине ворочаешь? и конфиг

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

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

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от x3al

поскольку регулярки — конечный автомат

никогда не понимал, что стоит за этой туманной фразой. Алан Кокс утверждал, что компьютер это конечный автомат. В принципе, если утверждать, что морковка — это конечный автомат, смысл от этого не сильно изменится. Видимо, «конечный автомат» — это такое специальное слово, которое произносится когда человек не знает и не понимает, о чем он говорит. Например, у диких людей было что-то вроде специального слова, скажем — «хо!». Когда туземец встречал что то непонятное, он громко восклицал: «хо!» и все вокруг понимали, что он столкнулся с какой то ЁНХ

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

Хотелось что-то сказать про разницу между теорией и практикой вместе с примерным объёмом памяти, но это ж спор с анонiмусом.

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

Как это использовать на практике?

Берешь вот это https://github.com/nikic/PHP-Parser , перегоняешь код в AST, пробегаешь по дереву удалив ненужное, перегоняешь назад в код.

Интересно что там за редактор. Тот же phpStorm спокойно ворочает большими объемами кода.

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

Дело не в том что он ворочает этими объемами нервно. Дело в том, что он при запуске пересканирует всю директорию проекта. Я уже думаю даже что все-таки надо клеить в один файл...

Пока был один файл и очищенный этого даже не замечал я. Но это был очень старый файл и полученный как раз регулярными выражениями и сильно упрощенный. Да и не все там было. В проекте 3800 файлов на 35Мб. Это не очищенные файлы. И проблема в том, что пока он сканит файлы на изменения послезапуска автокомплит по проекту не работает. А это минут пять, а то и больше. Тут смотря как юзать его в это время.

А редактор Komodo Edit.

Спасибо за варик - попробую.

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

В проекте 3800 файлов на 35Мб. Это не очищенные файлы. И проблема в том, что пока он сканит файлы на изменения послезапуска автокомплит по проекту не работает. А это минут пять, а то и больше.

Если вы серьезно занимаетесь разработкой на php рекомендую хотя-бы попробовать phpStorm.

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

Пробовал. Не смог его заставить открыть удаленный файл. Как впрочем и почти всех кроме Komodo. Преимуществ никаких не увидел. Хотя долго и не копал - не буду утверждать что их там нет.

Парсер попробовал. Вроде работает. Завтра буду пробовать на практике. (сегодня уже конечно)

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

Я не понял что ты имеешь ввиду. Ты предлагаешь мне сменить редактор? Что значит «Files and directories to exclude»? В смысле что это должно означать по твоему и как может помочь в решении проблемы?

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

Я не понял что ты имеешь ввиду. Ты предлагаешь мне сменить редактор?

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

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

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

И как это сделать применительно к Komodo?

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

Есть вариант добавить в игнор на индексацию директории с кодом после первой индексации. Если редактор не бревно, он даст автокомплит последнего индексирования и в то же время не будет ковыряться при каждом чихе в остальных местах.

Второй вариант - это таки зачем-то реализовать хрень в вопросе. То, что вы спрашиваете, - это создание заголовочных файлов, обычно юзается при портировании вызовов из соседних языков в пых. Самый простой вариант - это забить болт на кривые регулярки, взять token_get_all, скормить ему в цикле сорцы, поискать классы и методы, склеить найденное обратно и сохранить где-нибудь отдельно. Основную директорию снова в игнор на индексирование.

Есть и третий вариант - взять пыхошторм и работать не отвлекаясь на лимиты IDE.

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

Есть вариант добавить в игнор на индексацию директории с кодом после первой индексации.

Вот нет возможности добавить ее в игнор. Есть только возможность добавить и исключить. И все.

Есть вариант присоединить xml файл с описанием классов и методов, но как его получить не ясно.

Есть и третий вариант - взять пыхошторм и работать не отвлекаясь на лимиты IDE.

Не выйдет в нем работать. По крайней мере когда я пробовал его последний раз, я не нашел способа открыть удаленный файл. Мне это необходимо постоянно. И не надо пожалуйста про sshfs и заморочки с выкачиванием всех проектов целиком. Впрочем если есть вариант как его научить, открывать я файлы сразу по ssh/ftp, то я готов разобраться почему он у меня опять перестал запускаться.

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

И не надо пожалуйста про sshfs и заморочки с выкачиванием всех проектов целиком.

Я дико извиняюсь, вы правите свои проекты прямо на проде? Может быть вы и систему контроля версий не используете?

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

Я дико извиняюсь, вы правите свои проекты прямо на проде?

Бывает и такое.

Может быть вы и систему контроля версий не используете?

Используем Git. Все как обычно - Сервак разработки -> Тестовый сервак -> Бой.

А почему вы спрашиваете?

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

Используем Git. Все как обычно - Сервак разработки -> Тестовый сервак -> Бой.

Просто слабо представляю как редактор будет переиндексировать код в случае, когда переключаются ветки на сервере разработки.

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

Просто слабо представляю как редактор будет переиндексировать код в случае, когда переключаются ветки на сервере разработки.

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

Но это они все преимущественно на одной CMS так что достаточно ее код сунуть в отдельный каталог для индексации.

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

Он блин выкачивает весь проект целиком. Так места не напасешся. У меня есть парачка проектов с овер много гигабайт. В одном из них «много» это сотни.

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

Он блин выкачивает весь проект целиком. Так места не напасешся. У меня есть парачка проектов с овер много гигабайт. В одном из них «много» это сотни.

Что значит выкачивает весь проект целиком? И что значит проект на овер много гигабайт? Все эти гигабайты код?

Достаточно себе на локальную машину php файлы скачать и дальше с ними работать, настроив синхронизацию. При любом изменении кода оно просто будет автоматом в фоне заливать это изменении на сервер для разработки.

aiive
()

Ты спрашиваешь как удалить весь код, но просишь оставить

namespace Sociology;

class Cooperation {
  
    function rum($mor=false, $far=false) {}
}
*facepalm.jpg*

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

Все кроме тебя поняли, что речь идет только о выполняющемся коде. А тот который дейфайнит что-то надо оставить.

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

Что значит выкачивает весь проект целиком?

Ну мне так объяснили, что он выкачивает указанную директорию проекта полностью. Если он умеет это делать хотя бы по маскам и скачивать тольок php, css, less, js и xml - это уже несколько легче. Хотя проекты содержат сотни кэша сохраненного в php.

И что значит проект на овер много гигабайт? Все эти гигабайты код?

Да нет конечно. Там где гигабайт сотни, например больше всего разных картинок, как правило tiff. Но они могут быть в любом виде. Преимущественно docx и реже pdf. Но я уже встречал сканы и в передовых форматах типа xls ;)

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

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

Да, вы правы. Сам шторм выкачивает директорию полностью.

Я просто первоначально код получают или из репозитория или через rsync копирую только php файлы.

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