| 15 | } |
| 16 | |
| 17 | int main(int argc, const char **argv) { |
| 18 | llvm::cl::ResetCommandLineParser(); |
| 19 | llvm::cl::opt<bool> OptHelp( |
| 20 | "help", llvm::cl::desc("Display available options"), |
| 21 | llvm::cl::ValueDisallowed, llvm::cl::callback([](const bool &) { |
| 22 | llvm::cl::PrintHelpMessage(); |
| 23 | exit(0); |
| 24 | })); |
| 25 | llvm::cl::opt<bool> OptVersion( |
| 26 | "version", llvm::cl::desc("Display version"), llvm::cl::ValueDisallowed, |
| 27 | llvm::cl::callback([](const bool &) { |
| 28 | llvm::outs() << "version: " << FTG_VERSION << "\n"; |
| 29 | exit(0); |
| 30 | })); |
| 31 | llvm::cl::opt<std::string> SrcDir( |
| 32 | "src", |
| 33 | llvm::cl::desc( |
| 34 | "<Required> Original source directory of the target project"), |
| 35 | llvm::cl::value_desc("dir_path"), llvm::cl::Required); |
| 36 | llvm::cl::opt<std::string> TargetReportDir( |
| 37 | "target", |
| 38 | llvm::cl::desc("<Required> Target Analyzer report directory path"), |
| 39 | llvm::cl::value_desc("dir_path"), llvm::cl::Required); |
| 40 | llvm::cl::opt<std::string> UTReportPath( |
| 41 | "ut", llvm::cl::desc("<Required> UT Analyzer report path"), |
| 42 | llvm::cl::value_desc("filepath"), llvm::cl::Required); |
| 43 | llvm::cl::opt<std::string> LibraryAPIPath( |
| 44 | "public", llvm::cl::desc("<Required> PublicAPI.json path"), |
| 45 | llvm::cl::value_desc("filepath"), llvm::cl::Required); |
| 46 | llvm::cl::opt<std::string> OutputPath( |
| 47 | "out", llvm::cl::desc("<Required> Output directory path"), |
| 48 | llvm::cl::value_desc("dir_path"), llvm::cl::Required); |
| 49 | llvm::cl::ParseCommandLineOptions(argc, argv, "Fuzz Generator\n"); |
| 50 | |
| 51 | auto PublicAPIList = getPublicAPIList(LibraryAPIPath); |
| 52 | |
| 53 | Generator Gen; |
| 54 | try { |
| 55 | Gen.generate(SrcDir, PublicAPIList, TargetReportDir, UTReportPath, |
| 56 | OutputPath); |
| 57 | } catch (Json::RuntimeError &E) { |
| 58 | return 1; |
| 59 | } |
| 60 | |
| 61 | return 0; |
| 62 | } |
nothing calls this directly
no test coverage detected