#c# #visual-studio #compiler-construction
Вопрос:
При расширении классов я нахожу очень описательным использование base
ключевого слова ( MyBase
в VB) при доступе к методам в базовом классе. И this
ключевое слово ( Me
в VB) при доступе к функциям в классе, расширяющем базовый класс. Это относится и к «плоской» структуре без наследования.
Мне легче читать это:
public class World
{
public String baseName = "World";
}
public class Hello : World
{
public String thisName = "Hello";
public String GetNames()
{
return this.thisName " " base.baseName;
}
}
Чем это:
...
public String GetNames()
{
return thisName " " baseName;
}
...
Теперь мой вопрос: можно ли принудительно использовать this
и base
во время компиляции в Visual Studio/C#, чтобы компилятор выдавал ошибку или предупреждение, если вы не используете эти ключевые слова в своем коде?
Ответ №1:
Взгляните на StyleCop.
http://code.msdn.microsoft.com/sourceanalysis
Там есть несколько правил, которые должны делать то, что вы хотите. Вы можете настроить его так, чтобы любые нарушения стиля отображались в виде предупреждений или ошибок.
Комментарии:
1. К вашему сведению, по умолчанию StyleCop применяет это (в качестве альтернативы какому-либо соглашению об именовании данных-членов) и не поощряет излишние базовые спецификации.
2. Похоже, это не работает с Visual Studio Team System 2008. Установка работает нормально, но VS вылетает, когда я пытаюсь использовать плагин. Это чистая установка VS, без установленных дополнений.
3. Мы используем StyleCop 4.3 с Visual Studio Team System 2008 как в обычном, так и (только что обновленном) вариантах с пакетом обновления 1, и он работает нормально, поэтому нет никакой фундаментальной несовместимости (хотя, к сожалению, это не помогает решить вашу проблему, просто сообщая вам, что он может работать нормально).
Ответ №2:
Возможно, вы также захотите ознакомиться с аудитором кода SSW
К сожалению, я не знаю способа обеспечить соблюдение этого в компиляторе.