Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их.
При этом на file scope всё работает. Куда копать?
Re: [Resharper SDK] Bulk Actions работают только на file scope
Здравствуйте, ifle, Вы писали:
I>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их. I>При этом на file scope всё работает. Куда копать?
Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно?
Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.
Re[2]: [Resharper SDK] Bulk Actions работают только на file scope
Здравствуйте, zhuravlik26, Вы писали:
Z>Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно? Z>Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.
Фиксы реализуют IHighlightingsSetAction интерфейс
Re[3]: [Resharper SDK] Bulk Actions работают только на file scope
Здравствуйте, ifle, Вы писали:
I>Здравствуйте, zhuravlik26, Вы писали:
Z>>Как реализован bulk-action? Через HighlightingCleanupItem, или полностью кастомно? Z>>Если полностью кастомно — имплементит ли ваш класс IScopeBulkAction? Если имплементит — то для скоупа надо брать все файлы (scope.GetFilesToProcess), и по ним ходить.
I>Фиксы реализуют IHighlightingsSetAction интерфейс
На маленьком тестовом проекте всё работает, как надо.
Re[4]: [Resharper SDK] Bulk Actions работают только на file scope
Здравствуйте, ifle, Вы писали:
I>>Фиксы реализуют IHighlightingsSetAction интерфейс I>На маленьком тестовом проекте всё работает, как надо.
А не летит ли на большом какое-нибудь исключение, которое глотается?
Re[5]: [Resharper SDK] Bulk Actions работают только на file
Здравствуйте, qxWork, Вы писали:
W>Здравствуйте, ifle, Вы писали:
I>>>Фиксы реализуют IHighlightingsSetAction интерфейс I>>На маленьком тестовом проекте всё работает, как надо. W>А не летит ли на большом какое-нибудь исключение, которое глотается?
Летит исключение, видимо я не правильно реализовал IHighlightingsSetAction.ExecuteAction функцию.
Какая должна быть реализация? Как из неё достучаться до фиксов и правильно запустить их?
Здравствуйте, ifle, Вы писали:
I>Здравствуйте, qxWork, Вы писали:
W>>Здравствуйте, ifle, Вы писали:
I>>>>Фиксы реализуют IHighlightingsSetAction интерфейс I>>>На маленьком тестовом проекте всё работает, как надо. W>>А не летит ли на большом какое-нибудь исключение, которое глотается?
I>Летит исключение, видимо я не правильно реализовал IHighlightingsSetAction.ExecuteAction функцию. I>Какая должна быть реализация? Как из неё достучаться до фиксов и правильно запустить их?
Реализация ExecuteAction везде такая: вы бежите в цикле по хайлайтингам, из каждого вытаскиваете нужные данные и над ними что-то делаете что вам нужно.
Лучше бы ваш пример кода квикфикса сюда, конечно, тогда бы видно было, что сделано не совсем так как надо.
Re[7]: [Resharper SDK] Bulk Actions работают только на file
Здравствуйте, zhuravlik26, Вы писали:
Z>Реализация ExecuteAction везде такая: вы бежите в цикле по хайлайтингам, из каждого вытаскиваете нужные данные и над ними что-то делаете что вам нужно.
В принципе так и реализовал, проблема в том, что есть определённая логика в IsAvailable хотфикса, которая в этом случае не отрабатывается, что приводит к исключениям.
Re: [Resharper SDK] Bulk Actions работают только на file sco
Здравствуйте, ifle, Вы писали:
I>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их. I>При этом на file scope всё работает. Куда копать?
Извините, не увидела все сообщения. Если я правильно понимаю, у вас в IsAvailable для фикса сохраняется некая информация(или выполняется проверка?), зависящая от контекста, в котором вызвали фикс. Если это так, то тогда для реализации балкового фикса вам не подходит IHighlightingsSetAction, потому что он не проверяет доступность на каждом хайлайтинге именно этого типа фиксов.
Если вы хотите сохранить логику в таком виде, то вам нужен либо тип ISameTypeAction (он возьмет все квикфиксы такого же типа доступные на таких же хайлайтингах и вызовет их для scope по очереди (вызывая стандартный Execute от фикса)).
Если же ваш квикфикс умеет обрабатывать именно массивы хайлайтингов, тогда он не должен быть привязан к информации, которая сохраняется в IsAvailable или если это проверка, то она должна выполняться внутри Execute для каждого хайлайтинга в отдельности.
F>Здравствуйте, ifle, Вы писали:
I>>Почему-то bulk actions не работают на folder\project\solution скопе. Видно что анализирует файлы, но не меняет их. I>>При этом на file scope всё работает. Куда копать?
F>Извините, не увидела все сообщения. Если я правильно понимаю, у вас в IsAvailable для фикса сохраняется некая информация(или выполняется проверка?), зависящая от контекста, в котором вызвали фикс. Если это так, то тогда для реализации балкового фикса вам не подходит IHighlightingsSetAction, потому что он не проверяет доступность на каждом хайлайтинге именно этого типа фиксов. F>Если вы хотите сохранить логику в таком виде, то вам нужен либо тип ISameTypeAction (он возьмет все квикфиксы такого же типа доступные на таких же хайлайтингах и вызовет их для scope по очереди (вызывая стандартный Execute от фикса)). F>Если же ваш квикфикс умеет обрабатывать именно массивы хайлайтингов, тогда он не должен быть привязан к информации, которая сохраняется в IsAvailable или если это проверка, то она должна выполняться внутри Execute для каждого хайлайтинга в отдельности.