public void LibraryExcludeTest() { var basePath = Path.Combine(Environment.CurrentDirectory, @"..\.."); var globalSourceXmlFiles = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.X\mscorlib.xml"; var newFileNames = InheritDocUtil.Run(basePath: basePath, globalSourceXmlFiles: globalSourceXmlFiles, excludeTypes: "System.Object", overwriteExisting: false, logger: Logger); var fileName = newFileNames.Where(x => Path.GetFileName(x).StartsWith("InheritDocTest.")).First(); using (var streamReader = new StreamReader(fileName)) { var xDocument = XDocument.Load(streamReader); CheckForMethodComments( xDocument, "MyException", "#ctor", "summary", "Initializes a new instance of the class." ); CheckForMethodComments( xDocument, "ClassEA", "#ctor", "summary", null ); CheckForMethodComments( xDocument, "ClassEB", "#ctor", "summary", null ); } }
static void Main(string[] args) { // Parse options var options = new Options(); var isValid = CommandLine.Parser.Default.ParseArgumentsStrict(args, options); if (!isValid) { throw new Exception("Invalid command line"); } InheritDocUtil.Run(options.BasePath, options.XmlDocFileNamePatterns, options.GlobalSourceXmlFiles, options.ExcludeTypes, overwriteExisting: options.OverwriteExisting, logger: Logger); }
public static void Run(OptionPageGrid page) { var basePath = GetSolutionPath(); var xmlDocFileNames = string.IsNullOrEmpty(page.XmlDocFileNames) ? GetProjectXmlDocFileNames() : page.XmlDocFileNames; var globalSourceXmlFiles = page.GlobalSourceXmlFiles; var excludeTypes = page.ExcludeTypes; var buildOutputPane = GetBuildOutputPane(); buildOutputPane.Activate(); InheritDocUtil.Run(basePath: basePath, xmlDocFileNamePatterns: xmlDocFileNames, globalSourceXmlFiles: globalSourceXmlFiles, excludeTypes: excludeTypes, overwriteExisting: page.OverwriteExisting, logger: (logLevel, message) => { if ((int)logLevel >= (int)page.LogLevel) { buildOutputPane.OutputString($"InheritDoc.{logLevel}:{message}\r\n"); } }); }
public void LibraryNoExcludeTest() { var basePath = Path.Combine(Environment.CurrentDirectory, @"..\.."); var globalSourceXmlFiles = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.X\mscorlib.xml"; var newFileNames = InheritDocUtil.Run(basePath: basePath, globalSourceXmlFiles: globalSourceXmlFiles, overwriteExisting: false, logger: Logger); var fileName = newFileNames.Where(x => Path.GetFileName(x).StartsWith("InheritDocTest.")).First(); using (var streamReader = new StreamReader(fileName)) { var xDocument = XDocument.Load(streamReader); CheckForClassComments( xDocument, "MyException", "summary", new string[] { "Represents errors that occur during application execution.To browse the .NET Framework source code for this type, see the Reference Source." } ); CheckForMethodComments( xDocument, "MyException", "#ctor", "summary", "Initializes a new instance of the class." ); CheckForMethodComments( xDocument, "ClassEA", "#ctor", "summary", "Initializes a new instance of the class." ); CheckForMethodComments( xDocument, "ClassEB", "#ctor", "summary", "Initializes a new instance of the class." ); } }
static void Main(string[] args) { // Parse options var parserResult = CommandLine.Parser.Default.ParseArguments <Options>(args); parserResult.WithNotParsed(errors => { foreach (var error in errors) { if (!error.StopsProcessing) { Console.WriteLine($"Invalid command line: {error.Tag}"); } } }); parserResult.WithParsed(options => { InheritDocUtil.Run(options.BasePath, options.XmlDocFileNamePatterns, options.GlobalSourceXmlFiles, options.ExcludeTypes, overwriteExisting: options.OverwriteExisting, logger: Logger); }); }
public void BasicTest() { var basePath = Path.Combine(Environment.CurrentDirectory, @"..\.."); var newFileNames = InheritDocUtil.Run(basePath: basePath, overwriteExisting: false, logger: Logger); var fileName = newFileNames.Where(x => Path.GetFileName(x).StartsWith("InheritDocTest.")).First(); using (var streamReader = new StreamReader(fileName)) { var xDocument = XDocument.Load(streamReader); // Check inheritance CheckForClassAComments( xDocument, "ClassA", rootSummaryValue: "ClassA-Class-Summary", rootRemarksValue: "ClassA-Class-Remarks", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAA" ); CheckForClassAComments( xDocument, "ClassAB", rootSummaryValue: "ClassA-Class-Summary", rootRemarksValue: "ClassA-Class-Remarks", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAC", rootSummaryValue: "ClassA-Class-Summary", rootRemarksValue: "ClassA-Class-Remarks", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAD", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAE", propertySummaryValue: "ClassA-MyProperty-Summary", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAF", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); CheckForClassAComments( xDocument, "ClassAG", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassAG-MyProperty-Value" ); CheckForClassAComments( xDocument, "ClassAH", rootSummaryValue: "ClassA-Class-Summary" ); CheckForClassAComments( xDocument, "ClassAAA", rootSummaryValue: "ClassA-Class-Summary", rootRemarksValue: "ClassA-Class-Remarks", propertySummaryValue: "ClassA-MyProperty-Summary", propertyValueValue: "ClassA-MyProperty-Value", methodSummaryValue: "ClassA-MyMethod-Summary" ); // Test interfaces CheckForMethodComments( xDocument, "ClassBA", "MethodA", "summary", "InterfaceA-MethodA-Summary" ); CheckForMethodComments( xDocument, "ClassBB", "MethodB", "summary", "InterfaceB-MethodB-Summary" ); CheckForMethodComments( xDocument, "ClassBAB", "MethodA", "summary", "InterfaceA-MethodA-Summary" ); CheckForMethodComments( xDocument, "ClassBAB", "MethodB", "summary", "InterfaceB-MethodB-Summary" ); CheckForMethodComments( xDocument, "ClassBC", "MethodB", "summary", "InterfaceB-MethodB-Summary" ); CheckForMethodComments( xDocument, "ClassBC", "MethodC", "summary", "InterfaceC-MethodC-Summary" ); CheckForMethodComments( xDocument, "ClassBA", "MethodA", "summary", "InterfaceA-MethodA-Summary" ); CheckForMethodComments( xDocument, "ClassBA", "MethodA", "summary", "InterfaceA-MethodA-Summary" ); CheckForMethodComments( xDocument, "ClassBA", "MethodA", "summary", "InterfaceA-MethodA-Summary" ); // Test cref attribute CheckForMethodComments( xDocument, "ClassCB", "MethodA(System.Int32)", "summary", "ClassCA-MethodA(int)-Summary" ); CheckForMethodComments( xDocument, "ClassCB", "MethodA(System.String)", "summary", "ClassCA-MethodA(string)-Summary" ); CheckForMethodComments( xDocument, "ClassCB", "MethodC", "summary", "ClassCA-MethodB-Summary" ); CheckForMethodComments( xDocument, "ClassCB", "MethodD", "summary", "ClassCA-MethodB-Summary" ); CheckForClassComments( xDocument, "ClassDA", "summary", new string[] { "ClassDA-Summary(1)", "ClassDA-Summary(2)" } ); CheckForClassComments( xDocument, "ClassDB", "summary", new string[] { "ClassDA-Summary(1)", "ClassDA-Summary(2)" } ); CheckForClassComments( xDocument, "ClassDC", "summary", new string[] { "ClassDC-Summary" } ); CheckForClassComments( xDocument, "ClassDD", "summary", new string[] { "ClassDC-Summary" } ); CheckForMethodComments( xDocument, "ClassCB", "MethodD", "summary", "ClassCA-MethodB-Summary" ); } }