diff options
author | Justin Bogner <mail@justinbogner.com> | 2015-03-19 00:02:23 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2015-03-19 00:02:23 +0000 |
commit | cfb53e49b6962f314d7a153d7d940d9aff291274 (patch) | |
tree | 053246fe620352ed9204745fb6f0dbd75d14497d /llvm/tools/llvm-cov/CodeCoverage.cpp | |
parent | 81cfeb19997230fc8b4eefcfbf15b22ecf0b97e1 (diff) | |
download | bcm5719-llvm-cfb53e49b6962f314d7a153d7d940d9aff291274.tar.gz bcm5719-llvm-cfb53e49b6962f314d7a153d7d940d9aff291274.zip |
llvm-cov: Only emit colour by default if the output is a tty
This replaces the -no-color flag with a -color={auto|always|never}
option, with auto as the default, which is much saner.
llvm-svn: 232693
Diffstat (limited to 'llvm/tools/llvm-cov/CodeCoverage.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index b4a05843311..335fb0e59c1 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -29,6 +29,7 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Path.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/Process.h" #include "llvm/Support/Signals.h" #include <functional> #include <system_error> @@ -293,11 +294,24 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) { "greater than the given threshold"), cl::cat(FilteringCategory)); + enum class Colors { Auto, Always, Never }; + cl::opt<Colors> Color( + "color", cl::desc("Configure color output:"), + cl::values(clEnumValN(Colors::Auto, "auto", + "Enable color if stdout seems to support it"), + clEnumValN(Colors::Always, "always", "Enable color"), + clEnumValN(Colors::Never, "never", "Disable color"), + clEnumValEnd)); + auto commandLineParser = [&, this](int argc, const char **argv) -> int { cl::ParseCommandLineOptions(argc, argv, "LLVM code coverage tool\n"); ViewOpts.Debug = DebugDump; CompareFilenamesOnly = FilenameEquivalence; + ViewOpts.Colors = + Color == Colors::Always || + (Color == Colors::Auto && sys::Process::StandardOutHasColors()); + // Create the function filters if (!NameFilters.empty() || !NameRegexFilters.empty()) { auto NameFilterer = new CoverageFilters; @@ -388,15 +402,10 @@ int CodeCoverageTool::show(int argc, const char **argv, cl::desc("Show function instantiations"), cl::cat(ViewCategory)); - cl::opt<bool> NoColors("no-colors", cl::Optional, - cl::desc("Don't show text colors"), cl::init(false), - cl::cat(ViewCategory)); - auto Err = commandLineParser(argc, argv); if (Err) return Err; - ViewOpts.Colors = !NoColors; ViewOpts.ShowLineNumbers = true; ViewOpts.ShowLineStats = ShowLineExecutionCounts.getNumOccurrences() != 0 || !ShowRegions || ShowBestLineRegionsCounts; @@ -462,15 +471,10 @@ int CodeCoverageTool::show(int argc, const char **argv, int CodeCoverageTool::report(int argc, const char **argv, CommandLineParserType commandLineParser) { - cl::opt<bool> NoColors("no-colors", cl::Optional, - cl::desc("Don't show text colors"), cl::init(false)); - auto Err = commandLineParser(argc, argv); if (Err) return Err; - ViewOpts.Colors = !NoColors; - auto Coverage = load(); if (!Coverage) return 1; |