Подтвердить что ты не робот

Resharper gotchas

я абсолютно обожаю ReSharper и не буду работать без него, но есть несколько ошибок, с которыми я столкнулся и которых научился избегать:

  • Разрешить ReSharper переименовывать строковые литералы автоматически может действительно укусить вас в таких случаях, когда ваши объектные переменные соответствуют именам столбцов в вашем DAL SQL или других строковых константах. Я узнал, что вместо того, чтобы нетерпеливо нажимать клавишу ввода, когда появляется второй диалог переименования, мне действительно нужно увидеть, что предлагает ReSharper, и часто пропускать шаг переименования строк.
  • Это немного более коварно: когда вы включите анализ Solution-Wide, ReSharper расскажет вам, используются ли общедоступные методы. Это включает в себя геттеры и сеттеры в свойствах. Это отличная функция, но то, что ReSharper не знает, заключается в том, что при разработке представления, которое будет отображаться в конструкторе (форме, пользовательском ctrl), что свойства getters и seters вызываются во время разработки и не отображаются в сборнике. Поэтому ReSharper предложит, чтобы эти свойства получателей или сеттеры могли быть закрыты или просто удалены. Но если вы выполните настройку, а затем загрузите представление в конструкторе, дизайнер столкнется, потому что свойство недоступно, и сообщение об ошибке не совсем очевидно. В двух словах программист должен тщательно учитывать предложения по использованию свойств при разработке представления.

Это мои мотыги. Что еще есть, что может укусить меня и других поклонников ReSharper?

4b9b3361

Ответ 1

Когда я сталкиваюсь с директивами препроцессора, которые используют #ifs для выполнения условной компиляции, и текущая конфигурация настроена так, что блок кода скрыт, он, похоже, не видит код # if'd и будет рекомендовать yanking из переменной, используемой блоком кода, считая, что она никогда не вызывалась.

Ответ 2

Вы можете пометить такие свойства атрибутом UsedImplicitly, и ReSharper не предложит удалить его.

Ответ 3

В прошлом мы использовали условную компиляцию в файловой системе, и Resharper полностью обходит их. Он понятия не имеет, что условия существуют даже, и могут возникнуть множество конфликтов и ошибок, если оба файла объявляют одни и те же константы и методы.

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' Or '$(Configuration)|$(Platform)' == 'Release|x64'">
    <Compile Include="SomeFileFor.x64.cs">
        <SubType>Code</SubType>
    </Compile>
</ItemGroup>
<ItemGroup Condition=" !('$(Configuration)|$(Platform)' == 'Debug|x64' Or '$(Configuration)|$(Platform)' == 'Release|x64')">
    <Compile Include="SomeFileFor.x32.cs">
        <SubType>Code</SubType>
    </Compile>
</ItemGroup>

Ответ 4

Resharper либо полностью игнорирует, либо имеет совершенно другую реализацию обработки предупреждения об ошибке. Кроме того, в прошлый раз, когда я проверил, он игнорировал блок "Подавить предупреждения" в конфигурации проекта при использовании в сочетании с предупреждениями как ошибки.

Ответ 5

Условная компиляция была добавлена ​​в ReSharper 8. Просто получите последнюю версию.