/// <summary> /// Executes the specified options. /// </summary> /// <param name="options">The options.</param> /// <param name="file">The file.</param> public void Execute(ValueAnalysisOptions options, ICSharpFile file) { foreach (var namespaceDeclaration in file.NamespaceDeclarations) { this.ProcessCSharpTypeDeclarations(options, namespaceDeclaration.TypeDeclarations); } this.ProcessCSharpTypeDeclarations(options, file.TypeDeclarations); }
/// <summary>Processes the nested type declarations.</summary> /// <param name="options">The options.</param> /// <param name="typeDeclarations">The type declarations.</param> private void ProcessNestedTypeDeclarations(ValueAnalysisOptions options, IEnumerable<ITypeDeclaration> typeDeclarations) { foreach (var typeDeclaration in typeDeclarations) { foreach (var memberDeclaration in typeDeclaration.MemberDeclarations) { this.Annotate(memberDeclaration, options); } this.ProcessNestedTypeDeclarations(options, typeDeclaration.NestedTypeDeclarations); } }
/// <summary>Checks the declaration documentation.</summary> /// <param name="declaration">The declaration.</param> /// <param name="options">The options.</param> private void Annotate(IDeclaration declaration, ValueAnalysisOptions options) { if (!options.AnnotateWithValueAnalysisAttributes && !options.InsertAssertStatements) { return; } var typeMemberDeclaration = declaration as ITypeMemberDeclaration; if (typeMemberDeclaration == null) { return; } var refactoring = new ValueAnalysisRefactoring(typeMemberDeclaration); refactoring.AnnotateWithValueAnalysisAttributes = options.AnnotateWithValueAnalysisAttributes; refactoring.InsertAssertStatements = options.InsertAssertStatements; refactoring.TreatAllMembersAsNonPublic = options.TreatAllMembersAsNonPublic; refactoring.Execute(); }