Example #1
0
        private static int Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            var commandLineApplication = new CommandLineApplication();

            commandLineApplication.Name        = "MiniCover";
            commandLineApplication.Description = "MiniCover - Code coverage for .NET Core via assembly instrumentation";

            commandLineApplication.Command("instrument", command =>
            {
                command.Description = "Instrument assemblies";

                var workDirOption           = CreateWorkdirOption(command);
                var parentDirOption         = CreateParentdirOption(command);
                var includeAssembliesOption = command.Option("--assemblies", "Pattern to include assemblies [default: **/*.dll]", CommandOptionType.MultipleValue);
                var excludeAssembliesOption = command.Option("--exclude-assemblies", "Pattern to exclude assemblies", CommandOptionType.MultipleValue);
                var includeSourceOption     = command.Option("--sources", "Pattern to include source files [default: **/*]", CommandOptionType.MultipleValue);
                var excludeSourceOption     = command.Option("--exclude-sources", "Pattern to exclude source files", CommandOptionType.MultipleValue);
                var hitsFileOption          = command.Option("--hits-file", "Hits file name [default: coverage-hits.txt]", CommandOptionType.SingleValue);

                var coverageFileOption = CreateCoverageFileOption(command);

                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    var workdir = UpdateWorkingDirectory(workDirOption);

                    var assemblies = GetFiles(includeAssembliesOption, excludeAssembliesOption, "**/*.dll", parentDirOption);
                    if (assemblies.Length == 0)
                    {
                        throw new Exception("No assemblies found");
                    }

                    var sourceFiles = GetFiles(includeSourceOption, excludeSourceOption, "**/*.cs", parentDirOption);
                    if (sourceFiles.Length == 0)
                    {
                        throw new Exception("No source files found");
                    }

                    var hitsFile     = GetHitsFile(hitsFileOption);
                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var instrumenter = new Instrumenter(assemblies, hitsFile, sourceFiles, workdir);
                    var result       = instrumenter.Execute();
                    SaveCoverageFile(coverageFile, result);
                    return(0);
                });
            });

            commandLineApplication.Command("uninstrument", command =>
            {
                command.Description = "Uninstrument assemblies";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var result       = LoadCoverageFile(coverageFile);
                    Uninstrumenter.Execute(result);
                    return(0);
                });
            });

            new ResetCommand().AddTo(commandLineApplication);

            new ConsoleReportCommand().AddTo(commandLineApplication);
            new HtmlReportCommand().AddTo(commandLineApplication);
            new NCoverReportCommand().AddTo(commandLineApplication);
            new OpenCoverReportCommand().AddTo(commandLineApplication);
            new CloverReportCommand().AddTo(commandLineApplication);

            commandLineApplication.Command("coverallsreport", command =>
            {
                command.Description            = "Write a coveralls-formatted JSON report to folder";
                var rootPathOption             = command.Option("--root-path", "Set the git root path", CommandOptionType.SingleValue);
                var outputOption               = command.Option("--output", "Output file for coveralls report", CommandOptionType.SingleValue);
                var serviceJobIdOption         = command.Option("--service-job-id", "Define service_job_id in coveralls json", CommandOptionType.SingleValue);
                var serviceNameOption          = command.Option("--service-name", "Define service_name in coveralls json", CommandOptionType.SingleValue);
                var repoTokenOption            = command.Option("--repo-token", "set the repo token", CommandOptionType.SingleValue);
                var commitOption               = command.Option("--commit", "set the git commit id", CommandOptionType.SingleValue);
                var commitMessageOption        = command.Option("--commit-message", "set the commit message", CommandOptionType.SingleValue);
                var commitAuthorNameOption     = command.Option("--commit-author-name", "set the commit author name", CommandOptionType.SingleValue);
                var commitAuthorEmailOption    = command.Option("--commit-author-email", "set the commit author email", CommandOptionType.SingleValue);
                var commitCommitterNameOption  = command.Option("--commit-committer-name", "set the commit committer name", CommandOptionType.SingleValue);
                var commitCommitterEmailOption = command.Option("--commit-committer-email", "set the commit committer email", CommandOptionType.SingleValue);
                var branchOption               = command.Option("--branch", "set the git branch", CommandOptionType.SingleValue);
                var remoteOption               = command.Option("--remote", "set the git remote name", CommandOptionType.SingleValue);
                var remoteUrlOption            = command.Option("--remote-url", "set the git remote url", CommandOptionType.SingleValue);

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);

                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var result       = LoadCoverageFile(coverageFile);
                    var output       = outputOption.Value();

                    var rootPath = rootPathOption.HasValue()
                        ? Path.GetFullPath(rootPathOption.Value())
                        : Directory.GetCurrentDirectory();

                    var report = new CoverallsReport(
                        output,
                        repoTokenOption.Value(),
                        serviceJobIdOption.Value(),
                        serviceNameOption.Value(),
                        commitMessageOption.Value(),
                        rootPath,
                        commitOption.Value(),
                        commitAuthorNameOption.Value(),
                        commitAuthorEmailOption.Value(),
                        commitCommitterNameOption.Value(),
                        commitCommitterEmailOption.Value(),
                        branchOption.Value(),
                        remoteOption.Value(),
                        remoteUrlOption.Value()
                        );

                    return(report.Execute(result).Result);
                });
            });

            commandLineApplication.HelpOption("-h | --help");
            commandLineApplication.OnExecute(() =>
            {
                commandLineApplication.ShowHelp();
                return(0);
            });

            return(commandLineApplication.Execute(args));
        }
Example #2
0
        static int Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            var commandLineApplication = new CommandLineApplication();

            commandLineApplication.Name        = "MiniCover";
            commandLineApplication.Description = "MiniCover - Code coverage for .NET Core via assembly instrumentation";

            commandLineApplication.Command("instrument", command =>
            {
                command.Description = "Instrument assemblies";

                var workDirOption           = CreateWorkdirOption(command);
                var includeAssembliesOption = command.Option("--assemblies", "Pattern to include assemblies [default: **/*.dll]", CommandOptionType.MultipleValue);
                var excludeAssembliesOption = command.Option("--exclude-assemblies", "Pattern to exclude assemblies", CommandOptionType.MultipleValue);
                var includeSourceOption     = command.Option("--sources", "Pattern to include source files [default: **/*]", CommandOptionType.MultipleValue);
                var excludeSourceOption     = command.Option("--exclude-sources", "Pattern to exclude source files", CommandOptionType.MultipleValue);
                var hitsFileOption          = command.Option("--hits-file", "Hits file name [default: coverage-hits.txt]", CommandOptionType.SingleValue);
                var coverageFileOption      = CreateCoverageFileOption(command);

                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    var workdir = UpdateWorkingDirectory(workDirOption);

                    var assemblies = GetFiles(includeAssembliesOption, excludeAssembliesOption, "**/*.dll");
                    if (assemblies.Length == 0)
                    {
                        throw new Exception("No assemblies found");
                    }

                    var sourceFiles = GetFiles(includeSourceOption, excludeSourceOption, "**/*.cs");
                    if (sourceFiles.Length == 0)
                    {
                        throw new Exception("No source files found");
                    }

                    var hitsFile     = GetHitsFile(hitsFileOption);
                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var instrumenter = new Instrumenter(assemblies, hitsFile, sourceFiles, workdir);
                    var result       = instrumenter.Execute();
                    SaveCoverageFile(coverageFile, result);
                    return(0);
                });
            });

            commandLineApplication.Command("uninstrument", command =>
            {
                command.Description = "Uninstrument assemblies";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var result       = LoadCoverageFile(coverageFile);
                    Uninstrumenter.Execute(result);
                    return(0);
                });
            });

            commandLineApplication.Command("report", command =>
            {
                command.Description = "Outputs coverage report";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                var thresholdOption    = CreateThresholdOption(command);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile  = GetCoverageFile(coverageFileOption);
                    var threshold     = GetThreshold(thresholdOption);
                    var result        = LoadCoverageFile(coverageFile);
                    var consoleReport = new ConsoleReport();
                    return(consoleReport.Execute(result, threshold));
                });
            });

            commandLineApplication.Command("htmlreport", command =>
            {
                command.Description = "Write html report to folder";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                var thresholdOption    = CreateThresholdOption(command);
                var outputOption       = command.Option("--output", "Output folder for html report [default: coverage-html]", CommandOptionType.SingleValue);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var threshold    = GetThreshold(thresholdOption);
                    var result       = LoadCoverageFile(coverageFile);
                    var output       = GetHtmlReportOutput(outputOption);
                    var htmlReport   = new HtmlReport(output);
                    return(htmlReport.Execute(result, threshold));
                });
            });

            commandLineApplication.Command("xmlreport", command =>
            {
                command.Description = "Write an NCover-formatted XML report to folder";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                var thresholdOption    = CreateThresholdOption(command);
                var outputOption       = command.Option("--output", "Output file for NCover report [default: coverage.xml]", CommandOptionType.SingleValue);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var threshold    = GetThreshold(thresholdOption);
                    var result       = LoadCoverageFile(coverageFile);
                    var output       = GetXmlReportOutput(outputOption);
                    XmlReport.Execute(result, output, threshold);
                    return(0);
                });
            });

            commandLineApplication.Command("opencoverreport", command =>
            {
                command.Description = "Write an OpenCover-formatted XML report to folder";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                var thresholdOption    = CreateThresholdOption(command);
                var outputOption       = command.Option("--output", "Output file for OpenCover report [default: opencovercoverage.xml]", CommandOptionType.SingleValue);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var threshold    = GetThreshold(thresholdOption);
                    var result       = LoadCoverageFile(coverageFile);
                    var output       = GetOpenCoverXmlReportOutput(outputOption);
                    OpenCoverReport.Execute(result, output, threshold);
                    return(0);
                });
            });

            commandLineApplication.Command("reset", command =>
            {
                command.Description = "Reset hits count";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);

                    if (File.Exists(coverageFile))
                    {
                        var result = LoadCoverageFile(coverageFile);

                        if (File.Exists(result.HitsFile))
                        {
                            File.Delete(result.HitsFile);
                        }
                    }

                    return(0);
                });
            });

            commandLineApplication.HelpOption("-h | --help");

            commandLineApplication.OnExecute(() =>
            {
                commandLineApplication.ShowHelp();
                return(0);
            });

            return(commandLineApplication.Execute(args));
        }
Example #3
0
        private static int Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            var commandLineApplication = new CommandLineApplication();

            commandLineApplication.Name        = "MiniCover";
            commandLineApplication.Description = "MiniCover - Code coverage for .NET Core via assembly instrumentation";

            commandLineApplication.Command("instrument", command =>
            {
                command.Description = "Instrument assemblies";

                var workDirOption           = CreateWorkdirOption(command);
                var parentDirOption         = CreateParentdirOption(command);
                var includeAssembliesOption = command.Option("--assemblies", "Pattern to include assemblies [default: **/*.dll]", CommandOptionType.MultipleValue);
                var excludeAssembliesOption = command.Option("--exclude-assemblies", "Pattern to exclude assemblies", CommandOptionType.MultipleValue);
                var includeSourceOption     = command.Option("--sources", "Pattern to include source files [default: **/*]", CommandOptionType.MultipleValue);
                var excludeSourceOption     = command.Option("--exclude-sources", "Pattern to exclude source files", CommandOptionType.MultipleValue);
                var hitsFileOption          = command.Option("--hits-file", "Hits file name [default: coverage-hits.txt]", CommandOptionType.SingleValue);

                var coverageFileOption = CreateCoverageFileOption(command);

                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    var workdir = UpdateWorkingDirectory(workDirOption);

                    var assemblies = GetFiles(includeAssembliesOption, excludeAssembliesOption, "**/*.dll", parentDirOption);
                    if (assemblies.Length == 0)
                    {
                        throw new Exception("No assemblies found");
                    }

                    var sourceFiles = GetFiles(includeSourceOption, excludeSourceOption, "**/*.cs", parentDirOption);
                    if (sourceFiles.Length == 0)
                    {
                        throw new Exception("No source files found");
                    }

                    var hitsFile     = GetHitsFile(hitsFileOption);
                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var instrumenter = new Instrumenter(assemblies, hitsFile, sourceFiles, workdir);
                    var result       = instrumenter.Execute();
                    SaveCoverageFile(coverageFile, result);
                    return(0);
                });
            });

            commandLineApplication.Command("uninstrument", command =>
            {
                command.Description = "Uninstrument assemblies";

                var workDirOption      = CreateWorkdirOption(command);
                var coverageFileOption = CreateCoverageFileOption(command);
                command.HelpOption("-h | --help");

                command.OnExecute(() =>
                {
                    UpdateWorkingDirectory(workDirOption);

                    var coverageFile = GetCoverageFile(coverageFileOption);
                    var result       = LoadCoverageFile(coverageFile);
                    Uninstrumenter.Execute(result);
                    return(0);
                });
            });

            new ResetCommand().AddTo(commandLineApplication);

            new ConsoleReportCommand().AddTo(commandLineApplication);
            new HtmlReportCommand().AddTo(commandLineApplication);
            new NCoverReportCommand().AddTo(commandLineApplication);
            new OpenCoverReportCommand().AddTo(commandLineApplication);
            new CloverReportCommand().AddTo(commandLineApplication);

            commandLineApplication.HelpOption("-h | --help");
            commandLineApplication.OnExecute(() =>
            {
                commandLineApplication.ShowHelp();
                return(0);
            });

            return(commandLineApplication.Execute(args));
        }