Expand Up
@@ -38,6 +38,10 @@
using namespace llvm ;
using namespace coverage ;
void exportCoverageDataToJson (StringRef ObjectFilename,
const coverage::CoverageMapping &CoverageMapping,
raw_ostream &OS);
namespace {
// / \brief The implementation of the coverage tool.
class CodeCoverageTool {
Expand All
@@ -46,7 +50,9 @@ class CodeCoverageTool {
// / \brief The show command.
Show,
// / \brief The report command.
Report
Report,
// / \brief The export command.
Export
};
// / \brief Print the error message to the error output stream.
Expand Down
Expand Up
@@ -94,6 +100,9 @@ class CodeCoverageTool {
int report (int argc, const char **argv,
CommandLineParserType commandLineParser);
int export_ (int argc, const char **argv,
CommandLineParserType commandLineParser);
std::string ObjectFilename;
CoverageViewOptions ViewOpts;
std::string PGOFilename;
Expand Down
Expand Up
@@ -534,6 +543,8 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
return show (argc, argv, commandLineParser);
case Report:
return report (argc, argv, commandLineParser);
case Export:
return export_ (argc, argv, commandLineParser);
}
return 0 ;
}
Expand Down
Expand Up
@@ -694,6 +705,24 @@ int CodeCoverageTool::report(int argc, const char **argv,
return 0 ;
}
int CodeCoverageTool::export_ (int argc, const char **argv,
CommandLineParserType commandLineParser) {
auto Err = commandLineParser (argc, argv);
if (Err)
return Err;
auto Coverage = load ();
if (!Coverage) {
error (" Could not load coverage information" );
return 1 ;
}
exportCoverageDataToJson (ObjectFilename, *Coverage.get (), outs ());
return 0 ;
}
int showMain (int argc, const char *argv[]) {
CodeCoverageTool Tool;
return Tool.run (CodeCoverageTool::Show, argc, argv);
Expand All
@@ -703,3 +732,8 @@ int reportMain(int argc, const char *argv[]) {
CodeCoverageTool Tool;
return Tool.run (CodeCoverageTool::Report, argc, argv);
}
int exportMain (int argc, const char *argv[]) {
CodeCoverageTool Tool;
return Tool.run (CodeCoverageTool::Export, argc, argv);
}