Я делаю расширение для Visual Studio. Внутри кода я использую Code Contracts, чтобы делать утверждения и проверки. Я установил уровень предупреждения выше.
То, что я хотел бы сделать, это поддерживать этот уровень предупреждения, игнорируя любые проверки, сделанные в ссылках EnvDTE.
Рассмотрим следующий пример кода:
public static string GetAbsoluteOutputFolder(EnvDTE.Project project)
{
if (project == null) throw new ArgumentNullException("project");
var path =
project.ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath").Value.ToString();
//...
}
С моими текущими настройками CC потребует от меня добавить следующие проверки перед назначением переменной path
:
Contract.Assume(project.ConfigurationManager != null);
Contract.Assume(project.ConfigurationManager.ActiveConfiguration != null);
Contract.Assume(project.ConfigurationManager.ActiveConfiguration.Properties != null);
Поэтому мне хотелось бы сказать CC, чтобы "доверять" EnvDTE и игнорировать эти типы и их свойства.
Я подумал, что опция "Будьте оптимистичной по внешнему API" для этой цели. Оказывается, это не так.
Есть ли способ заставить его вести себя так, как я хочу , для которого не требуется более низкий уровень предупреждения?
EDIT: Я хочу решение, которое будет работать на уровне проекта, и это все равно позволит выполнять "обычные" проверки.