/// <summary> /// Initializes a new instance of the <see cref="MsBuildIssuesProvider"/> class. /// </summary> /// <param name="log">The Cake log context.</param> /// <param name="settings">Settings for reading the log file.</param> public MsBuildIssuesProvider(ICakeLog log, MsBuildIssuesSettings settings) : base(log) { settings.NotNull(nameof(settings)); this.settings = settings; }
public static ICodeAnalysisProvider MsBuildIssues( this ICakeContext context, MsBuildIssuesSettings settings) { context.NotNull(nameof(context)); settings.NotNull(nameof(settings)); return(new MsBuildIssuesProvider(context.Log, settings)); }
/// <inheritdoc/> public override IEnumerable <ICodeAnalysisIssue> ReadIssues( PrcaSettings prcaSettings, MsBuildIssuesSettings settings) { prcaSettings.NotNull(nameof(prcaSettings)); settings.NotNull(nameof(settings)); var result = new List <ICodeAnalysisIssue>(); var logDocument = XDocument.Parse(settings.LogFileContent); // Loop through all warning tags. foreach (var warning in logDocument.Descendants("warning")) { // Read affected file from the warning. string fileName; if (!this.TryGetFile(warning, prcaSettings, out fileName)) { continue; } // Read affected line from the warning. int?line; if (!TryGetLine(warning, out line)) { continue; } // Read rule code from the warning. string rule; if (!TryGetRule(warning, out rule)) { continue; } result.Add(new CodeAnalysisIssue <MsBuildIssuesProvider>( fileName, line, warning.Value, 0, rule, MsBuildRuleUrlResolver.Instance.ResolveRuleUrl(rule))); } return(result); }