コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ScriptAnalyzerResult"/> class.
 /// </summary>
 /// <param name="script">The script.</param>
 /// <param name="lines">The merged script lines.</param>
 public ScriptAnalyzerResult(IScriptInformation script, IReadOnlyList <string> lines)
 {
     _script       = script;
     _lines        = lines;
     _references   = new HashSet <string>(Collect(script, i => i.References));
     _namespaces   = new HashSet <string>(Collect(script, i => i.Namespaces));
     _usingAliases = new HashSet <string>(Collect(script, i => i.UsingAliases));
     _tools        = new HashSet <NuGetPackage>(Collect(script, i => i.Tools));
     _addins       = new HashSet <NuGetPackage>(Collect(script, i => i.Addins));
 }
コード例 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ScriptAnalyzerResult"/> class.
 /// </summary>
 /// <param name="script">The script.</param>
 /// <param name="lines">The merged script lines.</param>
 /// <param name="errors">The analyzer errors.</param>
 public ScriptAnalyzerResult(IScriptInformation script, IReadOnlyList <string> lines, IReadOnlyList <ScriptAnalyzerError> errors = null)
 {
     Script        = script;
     Lines         = lines;
     _references   = new HashSet <string>(Collect(script, i => i.References));
     _namespaces   = new HashSet <string>(Collect(script, i => i.Namespaces));
     _usingAliases = new HashSet <string>(Collect(script, i => i.UsingAliases));
     Tools         = new HashSet <PackageReference>(Collect(script, i => i.Tools));
     Addins        = new HashSet <PackageReference>(Collect(script, i => i.Addins));
     Errors        = errors ?? new List <ScriptAnalyzerError>(0);
     Succeeded     = Errors.Count == 0;
 }
コード例 #3
0
ファイル: ScriptAnalyzerResult.cs プロジェクト: zokiz/cake
        private static IEnumerable <T> Collect <T>(IScriptInformation script, Func <IScriptInformation, IEnumerable <T> > collector)
        {
            var stack = new Stack <IScriptInformation>();

            stack.Push(script);
            while (stack.Count > 0)
            {
                var current = stack.Pop();
                foreach (var include in current.Includes)
                {
                    stack.Push(include);
                }

                foreach (var item in collector(current))
                {
                    yield return(item);
                }
            }
        }