File splitter add-ins for Visual studio
Что то искал и не могу найти.
Опять попался дурной "проект", есть исходники по 10 тысяч строк. Приходится вручную делать partial классы и перекидывать самые большие функции.
Может кто что встречал, а то ломит самому делать.
Врядли. Задача разделения никак не формулируется. Ну кроме механической нарезки по объему.
Задача разделения никак не формулируется
Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк. Ставим какой то лимит и заполняем его функциями начиная с самых больших.
Если нет авто решения так и нет решения, пишем сообщение.
Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк.
-----
Такое пишется самостоятельно за пару часов.
Там не надо полностью парсить код - достаточно отслеживать парность { и } и со второго уровня выкидывать до заполнения...
Такое пишется самостоятельно за пару часов.
Ну напиши , если за пару. Только консольное приложение не надо.
Там в файлах еще регионы есть, "препроцессор" директивы и комментарии для функций, как с ///, так и с //
Хочется всё иметь не выходя со студии. Вначале весь обзор по проекту, а после по выбранному файлу. Ну может еще части драг/дропом перетаскивать.
Только консольное приложение не надо.
-----
Привередливый какой... консольное ему видите ли не надо-ть...
части драг/дропом перетаскивать.
-----
Это у тебя уже есть и оно тебе не нравится.
Автоматом порезать по критерию - не больше ХХ строк - можно и не сложно.
А кучу редакторов городить вокруг примитива... фуй...
Ну если совсем так хочется - смотри DSL - оно как раз под это дело заточено.
файлах еще регионы есть, "препроцессор" директивы и комментарии для функций, как с ///, так и с //
-----
Почти пофиг.
Ты вырезаешь 1 из трех функций завернутых в регион. Как именно ты должен поступить с регионом? Просто выкинешь и все...
С комментариями и документацией - чуточку сложнее, но так же как регионом - что не так - скипай...
Регекспы под подобный парсинг вроде были.
Привередливый какой
ну так на кой из студии извращаться, все должно быть унутри.
Автоматом порезать по критерию - не больше ХХ строк
Это сильно упрощенная версия
Ты вырезаешь 1 из трех функций завернутых в регион. Как именно ты должен поступить с регионом? Просто выкинешь и все...
не канает, у них "логика" в регионах. Если их убить вообще ничего понятно не будет.
Регекспы под подобный парсинг вроде были.
Зачем? У Рослина готовое синтаксическое дерево.
Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк. Ставим какой то лимит и заполняем его функциями начиная с самых больших.
не канает, у них "логика" в регионах. Если их убить вообще ничего понятно не будет.
Ну тут либо два из одного, либо третье...
У Рослина готовое синтаксическое дерево.
------
И ты умеешь его консумить?
Я вот регулярно спрашиваю писателей компиляторов - Язык - останется тот же, ничего не меняем. Что надо заменить чтобы генерить другой код?
На этом все останавливается...
Ну тут либо два из одного, либо третье...
Когда нет регионов то 1, а когда есть, то с регионов.
И ты умеешь его консумить?
Сделал, как бы коллекцию "визиторов", пока особых проблем не было. Но искать решения, да нужно.
Хотя вроде ничего заумного и нет
https://habr.com/ru/company/pvs-studio/blog/301204/
Я вот регулярно спрашиваю писателей компиляторов
Не имею понятия, я этим не занимаюсь. По идее должно быть, что то типа кодогенератора
По идее должно быть
-----
По факту - логика, логика, логика, что-то пишем, логика, логика, откат, логика, что-то пишем...
Попробовал как-тo отделить три части - хранение, парсинг и генерацию для Т4... дальше - одна ненормативка...
Поковырял немного Рослина - было интересно как они делали некоторые моменты.
Ну что могу сказать - вместо написания реакции на вполне распознаваемые ситуации предлагается писать код выполняющий распознавание ситуации. При том что анализ уже (по крайней мере - однажды) сделан.
Не особо нравится такой вариант.
Так по своей ссылке посмотри.
Я надеялся что они решили задачу путем подключения делегата в качестве функции свертки продукции, но - нет, ограничились деревом и возможностью ползать по нему.
Т.е. будет много лишнего кода для навигации, проверки последовательностей/контекста и, как следствие, будут ошибки, особенно там где недопонято или недопознано.
Но да - все же будет проще чем писать все с нуля самому.
путем подключения делегата в качестве функции свертки продукции
ну нифига себе загнул, я так не умею ругаться
ограничились деревом и возможностью ползать по нему
может какие то умные математики по нему и ползают.
Обычные дурные кодеры просто проверяют значения узла в "визиторе"
я так не умею ругаться
------
Ну так тебе и не надо.
проверяют значения узла в "визиторе"
-----
Так не только узел проверять придется.
Проверять придется еще и некоторое количество предыдущих... и, возможно, последующих... узлов. Потому - навигация будет...
И сколько надо проверять сильно зависит от языка и от того что именно и как с него переведено в дерево.
И это при том, что все это уже делалось чтобы построить дерево и будет повторятся при изменениях в файле.
Самым правильным было бы взять грамматику языка - прогер язык в любом случае должен знать и грамматику как-то понимать - и дать возможность обрабатывать свертку (т.е. замену цепочки символов в стеке одним символом) конкретных правил.
Но это - сложно (в основном для понимания) и имеем то что имеем.
Проверять придется еще и некоторое количество предыдущих... и, возможно, последующих... узлов
Ну тебе постоянно требуются какие то извращения
Самым правильным было бы взять грамматику языка
Всё время удивляюсь отчего в Микрософте все такие тупые
Ну тебе постоянно требуются какие то извращения
-----
Причем тут Я?
Тебе контекст проверять придется. Так теория говорит и Я с нею не спорю.
Причем тут Я?
Для моих скромных потребностей хватало то что есть.
Так теория говорит
Да пусть говорит что хочет, один фиг земля на трех китах лежит, и кто то когда то дойдет до ее края.
Вот попалось, может что полезное найдешь
https://docs.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/...