Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

File splitter add-ins for Visual studio

587  
AlexNek патриот10.01.21 15:46
AlexNek
NEW 10.01.21 15:46 

Что то искал и не могу найти.

Опять попался дурной "проект", есть исходники по 10 тысяч строк. Приходится вручную делать partial классы и перекидывать самые большие функции.

Может кто что встречал, а то ломит самому делать.

#1 
Murr патриот10.01.21 17:41
Murr
NEW 10.01.21 17:41 
в ответ AlexNek 10.01.21 15:46

Врядли. Задача разделения никак не формулируется. Ну кроме механической нарезки по объему.

#2 
AlexNek патриот10.01.21 17:49
AlexNek
NEW 10.01.21 17:49 
в ответ Murr 10.01.21 17:41
Задача разделения никак не формулируется

Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк. Ставим какой то лимит и заполняем его функциями начиная с самых больших.

Если нет авто решения так и нет решения, пишем сообщение. смущ

#3 
Murr патриот11.01.21 00:26
Murr
NEW 11.01.21 00:26 
в ответ AlexNek 10.01.21 17:49

Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк.

-----

Такое пишется самостоятельно за пару часов.


Там не надо полностью парсить код - достаточно отслеживать парность { и } и со второго уровня выкидывать до заполнения...

#4 
AlexNek патриот11.01.21 14:03
AlexNek
NEW 11.01.21 14:03 
в ответ Murr 11.01.21 00:26
Такое пишется самостоятельно за пару часов.

Ну напиши бебе, если за пару. Только консольное приложение не надо.

Там в файлах еще регионы есть, "препроцессор" директивы и комментарии для функций, как с ///, так и с //


Хочется всё иметь не выходя со студии. Вначале весь обзор по проекту, а после по выбранному файлу. Ну может еще части драг/дропом перетаскивать.

#5 
Murr патриот11.01.21 18:03
Murr
NEW 11.01.21 18:03 
в ответ AlexNek 11.01.21 14:03

Только консольное приложение не надо.

-----

Привередливый какой... консольное ему видите ли не надо-ть...


части драг/дропом перетаскивать.

-----

Это у тебя уже есть и оно тебе не нравится.

Автоматом порезать по критерию - не больше ХХ строк - можно и не сложно.

А кучу редакторов городить вокруг примитива... фуй...

Ну если совсем так хочется - смотри DSL - оно как раз под это дело заточено.


файлах еще регионы есть, "препроцессор" директивы и комментарии для функций, как с ///, так и с //

-----

Почти пофиг.

Ты вырезаешь 1 из трех функций завернутых в регион. Как именно ты должен поступить с регионом? Просто выкинешь и все...

С комментариями и документацией - чуточку сложнее, но так же как регионом - что не так - скипай...

Регекспы под подобный парсинг вроде были.

#6 
AlexNek патриот11.01.21 21:24
AlexNek
NEW 11.01.21 21:24 
в ответ Murr 11.01.21 18:03
Привередливый какой

ну так на кой из студии извращаться, все должно быть унутри.


Автоматом порезать по критерию - не больше ХХ строк

Это сильно упрощенная версия смущ


Ты вырезаешь 1 из трех функций завернутых в регион. Как именно ты должен поступить с регионом? Просто выкинешь и все...

не канает, у них "логика" в регионах. Если их убить вообще ничего понятно не будет.


Регекспы под подобный парсинг вроде были.

Зачем? У Рослина готовое синтаксическое дерево.

#7 
Murr патриот11.01.21 21:57
Murr
NEW 11.01.21 21:57 
в ответ AlexNek 11.01.21 21:24
Да пофигу как, главное чтобы файлы не были по ХХ тысяч строк. Ставим какой то лимит и заполняем его функциями начиная с самых больших.


не канает, у них "логика" в регионах. Если их убить вообще ничего понятно не будет.

Ну тут либо два из одного, либо третье...


У Рослина готовое синтаксическое дерево.

------

И ты умеешь его консумить?

Я вот регулярно спрашиваю писателей компиляторов - Язык - останется тот же, ничего не меняем. Что надо заменить чтобы генерить другой код?

На этом все останавливается...

#8 
AlexNek патриот11.01.21 22:15
AlexNek
NEW 11.01.21 22:15 
в ответ Murr 11.01.21 21:57
Ну тут либо два из одного, либо третье...

Когда нет регионов то 1, а когда есть, то с регионов.


И ты умеешь его консумить?

Сделал, как бы коллекцию "визиторов", пока особых проблем не было. Но искать решения, да нужно.

Хотя вроде ничего заумного и нет

https://habr.com/ru/company/pvs-studio/blog/301204/


Я вот регулярно спрашиваю писателей компиляторов

Не имею понятия, я этим не занимаюсь. По идее должно быть, что то типа кодогенератора

#9 
Murr патриот12.01.21 02:59
Murr
12.01.21 02:59 
в ответ AlexNek 11.01.21 22:15

По идее должно быть

-----

По факту - логика, логика, логика, что-то пишем, логика, логика, откат, логика, что-то пишем...

Попробовал как-тo отделить три части - хранение, парсинг и генерацию для Т4... дальше - одна ненормативка...

#10 
Murr_0001 местный житель16.01.21 00:54
Murr_0001
NEW 16.01.21 00:54 
в ответ Murr 12.01.21 02:59

Поковырял немного Рослина - было интересно как они делали некоторые моменты.

Ну что могу сказать - вместо написания реакции на вполне распознаваемые ситуации предлагается писать код выполняющий распознавание ситуации. При том что анализ уже (по крайней мере - однажды) сделан.

Не особо нравится такой вариант.

#11 
AlexNek патриот16.01.21 12:31
AlexNek
NEW 16.01.21 12:31 
в ответ Murr_0001 16.01.21 00:54
Ну что могу сказать

Конкретный примерчик мона?

#12 
Murr_0001 местный житель16.01.21 13:56
Murr_0001
NEW 16.01.21 13:56 
в ответ AlexNek 16.01.21 12:31

Так по своей ссылке посмотри.

Я надеялся что они решили задачу путем подключения делегата в качестве функции свертки продукции, но - нет, ограничились деревом и возможностью ползать по нему.

Т.е. будет много лишнего кода для навигации, проверки последовательностей/контекста и, как следствие, будут ошибки, особенно там где недопонято или недопознано.

Но да - все же будет проще чем писать все с нуля самому.

#13 
AlexNek патриот16.01.21 15:06
AlexNek
NEW 16.01.21 15:06 
в ответ Murr_0001 16.01.21 13:56
путем подключения делегата в качестве функции свертки продукции

ну нифига себе загнул, я так не умею ругаться смущ


ограничились деревом и возможностью ползать по нему

может какие то умные математики по нему и ползают. бебе

Обычные дурные кодеры просто проверяют значения узла в "визиторе"

#14 
Murr_0001 местный житель16.01.21 16:30
Murr_0001
NEW 16.01.21 16:30 
в ответ AlexNek 16.01.21 15:06

я так не умею ругаться

------

Ну так тебе и не надо.


проверяют значения узла в "визиторе"

-----

Так не только узел проверять придется.

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

И сколько надо проверять сильно зависит от языка и от того что именно и как с него переведено в дерево.

И это при том, что все это уже делалось чтобы построить дерево и будет повторятся при изменениях в файле.

Самым правильным было бы взять грамматику языка - прогер язык в любом случае должен знать и грамматику как-то понимать - и дать возможность обрабатывать свертку (т.е. замену цепочки символов в стеке одним символом) конкретных правил.

Но это - сложно (в основном для понимания) и имеем то что имеем.

#15 
AlexNek патриот16.01.21 16:46
AlexNek
NEW 16.01.21 16:46 
в ответ Murr_0001 16.01.21 16:30
Проверять придется еще и некоторое количество предыдущих... и, возможно, последующих... узлов

Ну тебе постоянно требуются какие то извращения бебе


Самым правильным было бы взять грамматику языка

Всё время удивляюсь отчего в Микрософте все такие тупые спок

#16 
Murr_0001 местный житель16.01.21 17:24
Murr_0001
NEW 16.01.21 17:24 
в ответ AlexNek 16.01.21 16:46

Ну тебе постоянно требуются какие то извращения

-----

Причем тут Я?

Тебе контекст проверять придется. Так теория говорит и Я с нею не спорю.

#17 
AlexNek патриот16.01.21 18:07
AlexNek
NEW 16.01.21 18:07 
в ответ Murr_0001 16.01.21 17:24
Причем тут Я?

Для моих скромных потребностей хватало то что есть.


Так теория говорит

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

#18 
AlexNek патриот17.01.21 20:02
AlexNek
NEW 17.01.21 20:02 
в ответ Murr 12.01.21 02:59

Вот попалось, может что полезное найдешь

https://docs.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/...

#19