코드 계약에 대한 "정적 검사"옵션에는 "외부 API에 낙관적"인 옵션이 있습니다. 이 옵션의 기능에 대한 문서를 찾을 수 없습니다. 분석기의 동작에 어떤 영향을 줍니까?"외부 API에 낙천적으로"옵션은 어떤 기능을합니까?
2
A
답변
1
실제로이 옵션에 대한 문서가없는 것 같습니다. 소스를 탐색 할 때 몇 가지 단서가 있습니다. Options.cs
에서이 부울 lowScoreForExternal
로 연결하십시오 WarningScoresManager
이 초기화 중에 사용되는
[OptionDescription("Be optimistic on external API?
We will assign proof obligations depending on that a low score")]
[DoNotHashInCache]
public bool lowScoreForExternal = true;
외부 어셈블리에 추가 정보를 원하시면 할당 된 점수를 설정할 수 있습니다. 이 옵션을 켜면 프레임 워크 어셈블리에 적용된 다른 어셈블리를 참조 할 때 동일한 점수가 적용됩니다. 그렇지 않으면 매우 높은 패널티가 적용됩니다.
private void InitializeDefaultValuesForContextsOfCalleeAssumeCanDischarge
(bool lowScoreForExternalAPI)
{
// ...
ScoreCalleeAssumeExtraInfoDeclaredInAFrameworkAssembly = .05;
ScoreCalleeAssumeExtraInfoDeclaredInADifferentAssembly = lowScoreForExternalAPI ?
ScoreCalleeAssumeExtraInfoDeclaredInAFrameworkAssembly : 100.0;
이이 설정을 사용하면 프레임 워크 어셈블리에게 부여되는 등의 외부 어셈블리의 코드 품질에 대한 신뢰의 비슷한 수준을 가정 분석기를 강제 것으로 보인다.
이것은이 변수의 유일한 용도 인 것 같습니다.이 변수는 생성자의 WarningScoresManager
에 전달되며 다른 곳에서는 사용되지 않습니다.