/// <summary> /// Perform an internal consistency check on the examples defined in the documentation. Prints /// the results of the tests to the console. /// </summary> /// <param name="options"></param> /// <param name="docset"></param> /// <returns></returns> private static async Task <CheckResults> CheckExamplesAsync(BasicCheckOptions options, DocSet docset) { var results = new CheckResults(); foreach (var doc in docset.Files) { if (doc.Examples.Length == 0) { continue; } FancyConsole.WriteLine(FancyConsole.ConsoleHeaderColor, "Checking examples in \"{0}\"...", doc.DisplayName); foreach (var example in doc.Examples) { if (example.Metadata == null) { continue; } if (example.Language != CodeLanguage.Json) { continue; } var testName = string.Format("check-example: {0}", example.Metadata.MethodName, example.Metadata.ResourceType); TestReport.StartTest(testName, doc.DisplayName); ValidationError[] errors; docset.ResourceCollection.ValidateJsonExample(example.Metadata, example.SourceExample, out errors); await WriteOutErrorsAndFinishTestAsync(errors, options.SilenceWarnings, " ", "No errors.", false, testName, "Warnings detected", "Errors detected"); results.IncrementResultCount(errors); } } return(results); }
/// <summary> /// Verifies that all markdown links inside the documentation are valid. Prints warnings /// to the console for any invalid links. Also checks for orphaned documents. /// </summary> /// <param name="options"></param> /// <param name="docs"></param> private static async Task <bool> CheckLinksAsync(DocSetOptions options, DocSet docs = null) { const string testName = "Check-links"; var docset = docs ?? await GetDocSetAsync(options); if (null == docset) { return(false); } TestReport.StartTest(testName); ValidationError[] errors; docset.ValidateLinks(options.EnableVerboseOutput, out errors); foreach (var error in errors) { MessageCategory category; if (error.IsWarning) { category = MessageCategory.Warning; } else if (error.IsError) { category = MessageCategory.Error; } else { category = MessageCategory.Information; } string message = string.Format("{1}: {0}", error.Message.FirstLineOnly(), error.Code); await TestReport.LogMessageAsync(message, category); } return(await WriteOutErrorsAndFinishTestAsync(errors, options.SilenceWarnings, successMessage : "No link errors detected.", testName : testName)); }