понедельник, 30 марта 2015 г.

КопиПаста

Пока не нашел для scala работающей тулзы для поиска копипасты в коде. (Коллега немного грешен, в аду не я по этому поводу гореть буду). Есть 1-2 неработающих, но они на 2.9 и как-то уже несколько лет не активны.

Как всегда, (даже если вас съели) есть два выхода.

Тупой, и в то же время, обычно работающий вариант, смотреть на это все как на строки. И искать плагиат. Баян. Через "а".

А крутой способ - это иметь AST, и искать похожие поддеревья. В чем крутизна, что строить/парсить/лексить scala не надо, начиная с 2.11 тут нормальные механизмы. Пока руки коротки, но скоро все подключу.

Очевидно, что в каждом компиляторе все проходят через шаги c AST. То есть основная задача - это внедриться в процесс и в нужный момент искать копипасту. В реальности проблемы, что обычно это написано как монолитный кусок (тут можно бы добавить, но я тактично промолчу) кода. В C# почти сделали Roslynd, но я уже два года вне темы и C#. В gcc внедряются как-то, но я вообще вне темы. Уровень вхождения там сильно выше.

А в scala видится несложным. Макросы должны быть гораздо проще, но лично мне макросы пока тоже далековаты, хотя в пару мест и можно было бы запихнуть. Тут что-то рефлексией попахивает. В общем, надо копать.

вторник, 17 марта 2015 г.

Режим радиомолчания

Пора уже выходить из радиомолчания. В принципе, писать есть о чем, но в то же время и не хочется. Как в классике: "Начало лекции про ленивые вычисления. -Лекция окончена. У вас есть вопросы?"

Так что ссылка на котиков не будет, вместо этого канал на Wednesday Addams.

http://www.youtube.com/channel/UCyX7977vwwko1lurVlEJszQ

И ленивые вычисления совершенно не причем.