Информация об изменениях

Сообщение Re: Статичекий анализ ипользуемого API от 11.09.2016 18:09

Изменено 11.09.2016 18:17 Sinix

Здравствуйте, SuhanovSergey, Вы писали:

SS>Есть другие варианты?


Ага. Самый простой — assembly references. Нет ручек — нет конфетки нет ссылки на сборку — нет "лишнего" кода.
Если не получается изолировать зависимости на уровне сборок — делитесь, как можно это сделать уровнем ниже У меня красивых идей нет.

Для vs enterprise (вот не вспомню сходу, есть ли в младших редакциях) есть layer validation с поддержкой кастомной логики


SS>Цель данного вопроса — избежать требования к Функциям декларировать, какие части API нужны. Зачем нужно декларировать? Чтобы не инициалировать ненужные части API. Ленивая инициализация чрезвычайно сложна в реализации.


Ух ты, а вот это интересно. Если не секрет — где такие приседания требуются?


SS>Пока что единтственное решение, что я вижу — это декомпиляция и анализ функций-пользователей с помощью Mono.Cecil.

Вот тут будет в принципе нерешаемая проблема с false negatives,
class A
{
  public event EventHandler SomeEvent;
  
  public void Call() => SomeEvent?.Invoke(this, EventArgs.Empty);
}

Как зависимости определять будем?
Re: Статичекий анализ ипользуемого API
Здравствуйте, SuhanovSergey, Вы писали:

SS>Есть другие варианты?


Ага. Самый простой — assembly references. Нет ручек — нет конфетки нет ссылки на сборку — нет "лишнего" кода.
Если не получается изолировать зависимости на уровне сборок — делитесь, как можно это сделать уровнем ниже У меня красивых идей нет.

Для vs enterprise (вот не вспомню сходу, есть ли в младших редакциях) есть layer validation с поддержкой кастомной логики


SS>Цель данного вопроса — избежать требования к Функциям декларировать, какие части API нужны. Зачем нужно декларировать? Чтобы не инициалировать ненужные части API. Ленивая инициализация чрезвычайно сложна в реализации.


Ух ты, а вот это интересно. Если не секрет — где такие приседания требуются?


SS>Пока что единтственное решение, что я вижу — это декомпиляция и анализ функций-пользователей с помощью Mono.Cecil.

Вот тут будет в принципе нерешаемая проблема с false negatives,
class A
{
  public event EventHandler SomeEvent;
  
  public void Call() => SomeEvent?.Invoke(this, EventArgs.Empty);
}

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


UPD, P.S. Если стопроцентных гарантий не требуется, то можно подглядеть код в .net refractor, боль менее то, что вам надо делает. Только учтите, что он кучу ошибок делает, придётся своими тестами проверять.