[Resharper SDK] Bulk Actions работают только на file scope
От: ifle  
Дата: 05.08.15 17:27
Оценка:
Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их.
При этом на file scope всё работает. Куда копать?
Re: [Resharper SDK] Bulk Actions работают только на file scope
От: zhuravlik26 Германия  
Дата: 10.08.15 11:33
Оценка:
Здравствуйте, ifle, Вы писали:

I>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их.

I>При этом на file scope всё работает. Куда копать?

Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно?
Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.
Re[2]: [Resharper SDK] Bulk Actions работают только на file scope
От: ifle  
Дата: 11.08.15 06:35
Оценка:
Здравствуйте, zhuravlik26, Вы писали:

Z>Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно?

Z>Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.

Фиксы реализуют IHighlightingsSetAction интерфейс
Re[3]: [Resharper SDK] Bulk Actions работают только на file scope
От: ifle  
Дата: 11.08.15 10:27
Оценка:
Здравствуйте, ifle, Вы писали:

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


Z>>Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно?

Z>>Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.

I>Фиксы реализуют IHighlightingsSetAction интерфейс

На маленьком тестовом проекте всё работает, как надо.
Re[4]: [Resharper SDK] Bulk Actions работают только на file scope
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 11.08.15 11:07
Оценка:
Здравствуйте, ifle, Вы писали:

I>>Фиксы реализуют IHighlightingsSetAction интерфейс

I>На маленьком тестовом проекте всё работает, как надо.
А не летит ли на большом какое-нибудь исключение, которое глотается?
Re[5]: [Resharper SDK] Bulk Actions работают только на file
От: ifle  
Дата: 11.08.15 11:55
Оценка:
Здравствуйте, qxWork, Вы писали:

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


I>>>Фиксы реализуют IHighlightingsSetAction интерфейс

I>>На маленьком тестовом проекте всё работает, как надо.
W>А не летит ли на большом какое-нибудь исключение, которое глотается?

Летит исключение, видимо я не правильно реализовал IHighlightingsSetAction.ExecuteAction функцию.
Какая должна быть реализация? Как из неё достучаться до фиксов и правильно запустить их?
Отредактировано 11.08.2015 14:54 ifle . Предыдущая версия .
Re[6]: [Resharper SDK] Bulk Actions работают только на file
От: zhuravlik26 Германия  
Дата: 11.08.15 16:16
Оценка:
Здравствуйте, ifle, Вы писали:

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


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


I>>>>Фиксы реализуют IHighlightingsSetAction интерфейс

I>>>На маленьком тестовом проекте всё работает, как надо.
W>>А не летит ли на большом какое-нибудь исключение, которое глотается?

I>Летит исключение, видимо я не правильно реализовал IHighlightingsSetAction.ExecuteAction функцию.

I>Какая должна быть реализация? Как из неё достучаться до фиксов и правильно запустить их?

Реализация ExecuteAction везде такая: вы бежите в цикле по хайлайтингам, из каждого вытаскиваете нужные данные и над ними что-то делаете что вам нужно.

Лучше бы ваш пример кода квикфикса сюда, конечно, тогда бы видно было, что сделано не совсем так как надо.
Re[7]: [Resharper SDK] Bulk Actions работают только на file
От: ifle  
Дата: 11.08.15 17:06
Оценка:
Здравствуйте, zhuravlik26, Вы писали:

Z>Реализация ExecuteAction везде такая: вы бежите в цикле по хайлайтингам, из каждого вытаскиваете нужные данные и над ними что-то делаете что вам нужно.


В принципе так и реализовал, проблема в том, что есть определённая логика в IsAvailable хотфикса, которая в этом случае не отрабатывается, что приводит к исключениям.
Re: [Resharper SDK] Bulk Actions работают только на file sco
От: fearfall  
Дата: 19.08.15 11:30
Оценка:
Здравствуйте, ifle, Вы писали:

I>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их.

I>При этом на file scope всё работает. Куда копать?

Извините, не увидела все сообщения. Если я правильно понимаю, у вас в IsAvailable для фикса сохраняется некая информация(или выполняется проверка?), зависящая от контекста, в котором вызвали фикс. Если это так, то тогда для реализации балкового фикса вам не подходит IHighlightingsSetAction, потому что он не проверяет доступность на каждом хайлайтинге именно этого типа фиксов.
Если вы хотите сохранить логику в таком виде, то вам нужен либо тип ISameTypeAction (он возьмет все квикфиксы такого же типа доступные на таких же хайлайтингах и вызовет их для scope по очереди (вызывая стандартный Execute от фикса)).
Если же ваш квикфикс умеет обрабатывать именно массивы хайлайтингов, тогда он не должен быть привязан к информации, которая сохраняется в IsAvailable или если это проверка, то она должна выполняться внутри Execute для каждого хайлайтинга в отдельности.
Отредактировано 19.08.2015 11:47 fearfall . Предыдущая версия .
Re[2]: [Resharper SDK] Bulk Actions работают только на file sco
От: ifle  
Дата: 23.08.15 14:48
Оценка:
Здравствуйте, fearfall, Вы писали:


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


I>>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их.

I>>При этом на file scope всё работает. Куда копать?

F>Извините, не увидела все сообщения. Если я правильно понимаю, у вас в IsAvailable для фикса сохраняется некая информация(или выполняется проверка?), зависящая от контекста, в котором вызвали фикс. Если это так, то тогда для реализации балкового фикса вам не подходит IHighlightingsSetAction, потому что он не проверяет доступность на каждом хайлайтинге именно этого типа фиксов.

F>Если вы хотите сохранить логику в таком виде, то вам нужен либо тип ISameTypeAction (он возьмет все квикфиксы такого же типа доступные на таких же хайлайтингах и вызовет их для scope по очереди (вызывая стандартный Execute от фикса)).
F>Если же ваш квикфикс умеет обрабатывать именно массивы хайлайтингов, тогда он не должен быть привязан к информации, которая сохраняется в IsAvailable или если это проверка, то она должна выполняться внутри Execute для каждого хайлайтинга в отдельности.

Спасибо, попробую поиграться с ISameTypeAction
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.