Re: Здравствуйте товарищи разработчики R#.
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Меня интересует построение на базе R# генератора метрик для статического анализа кода


ПЛ (он же Павел Леонов, Берета) даже в свое время сделал проект-плагин к VS 2003. Который даже отловил пару реальных ошибок в проекте. К сожалению он похоже его забросил. Ну, да было бы желание...

А>и редактора сорцов с интелектуальным рефакторингом.


А чем не устраивает ReSharperздесь? В смысле, делай если хочется. Но вот есть ли толк?

Для того, чтобы из R#-а сделать тул для рефакторинга сначала нужно обязательно написать полноценное разрешение имен. Пока что-оно сильно ограниченное.

А>Наконец собрал из них все бинарии и получил нечто работающее. В данном случае CodeAnalizer. Проблема сборки была банальна, TreeGrid reference в проекте CodeAnalizer тащится из фолдера внешнего по отношению к проекту RSharp хотя внутри лежит копия длл (до этого попадались снапшоты сорцов которые не собирались в некоторых местах).


Вот тут R# под SVN и в открытом доступе.
Автор: VladD2
Дата: 21.07.04
есть описание по сборке R#-а.

А>Натравил CodeAnalizer на сорцы R# (RSParser) поскольку других под рукой не оказалось. Получил ошибку парсинга

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

Это не приоритет. Это недоработка. Просто R# переведен на C# 2.0 и отехоничку использует его новые фичи. В том числе дженерик-интефейсы. Вот в этом файле как раз явная реализация этого дела:
IEnumerator<RAttributeDeclaration> IEnumerable<RAttributeDeclaration>.GetEnumerator()
{
    throw new NotImplementedException();
}


А сейчас это дело не обрабатывается. Я как раз сейчас над этим работаю. Там не все так просто. Это фишка не по зубам для LL(1)-парсера (коим является используемый нами CocoR).

Дело в том, что метод сам по себе может быть дженерик. Тогда запись будет примерно такой:
IEnumerator<X>  IEnumerable<X>.GetEnumerator<Y>()

Каждый участок Xxx<...> является так называемым "простым именем". Но имя метода плюс параметры типа тоже прокатывает под определение простого имени. Так что нужен более делатьный контроль.

Ну, а так как времени нехватает, то торможу по тихончку. В обще, надеюсь в ближайшее время устранить эту недороботку.

Пока что можно тестироваться на других проектах. Например, есть проект RscTest. Это специально созданная копия RSParser, но замороженная на стадии когда проект еще не был переведен на C# 2.0. На нем все должно проходить верно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.