2016-07-11 3 views
2

В параметрах «Статическая проверка» для кодовых контрактов есть опция с именем «Будьте оптимисты по внешнему API». Я не могу найти документацию о том, что делает этот вариант. Как это влияет на поведение анализатора?Что делает опция «Оптимистичный внешний интерфейс»?

ответ

1

Документация об этой опции действительно отсутствует. Просмотр источника дает несколько подсказок. В Options.cs это ссылки на булеву lowScoreForExternal:

[OptionDescription("Be optimistic on external API? 
        We will assign proof obligations depending on that a low score")] 
[DoNotHashInCache] 
public bool lowScoreForExternal = true; 

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

private void InitializeDefaultValuesForContextsOfCalleeAssumeCanDischarge 
    (bool lowScoreForExternalAPI) 
{ 
    // ... 
ScoreCalleeAssumeExtraInfoDeclaredInAFrameworkAssembly = .05; 
ScoreCalleeAssumeExtraInfoDeclaredInADifferentAssembly = lowScoreForExternalAPI ? 
     ScoreCalleeAssumeExtraInfoDeclaredInAFrameworkAssembly : 100.0; 

Казалось бы, что с помощью этого параметра заставляет анализатор предположить подобный уровень доверия о качестве кода внешних сборок, какими обеспечиваются каркасными узлы.

Это, по-видимому, единственное использование этой переменной - оно передается в конструктор WarningScoresManager и больше нигде не используется.

Смежные вопросы