in src/ClazyStandaloneMain.cpp [156:217]
int main(int argc, const char **argv)
{
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--version") == 0) {
std::cout << "clazy version " << CLAZY_VERSION << "\n";
break;
}
}
auto expectedParser = CommonOptionsParser::create(argc, argv, s_clazyCategory, cl::ZeroOrMore);
if (!expectedParser) {
llvm::errs() << expectedParser.takeError();
return 1;
}
auto &optionsParser = expectedParser.get();
// llvm::errs() << optionsParser.getSourcePathList().size() << "\n";
if (s_supportedChecks.getValue()) {
std::cout << SUPPORTED_CHECKS_JSON_STR;
return 0;
}
if (s_listEnabledChecks.getValue()) {
std::string checksFromArgs = s_checks.getValue();
std::vector<std::string> checks = {checksFromArgs.empty() ? "level1" : checksFromArgs};
const RegisteredCheck::List enabledChecks = CheckManager::instance()->requestedChecks(checks);
if (!enabledChecks.empty()) {
llvm::outs() << "Enabled checks:";
for (const auto &check : enabledChecks) {
llvm::outs() << "\n " << check.name;
}
llvm::outs() << "\n";
}
return 0;
}
llvm::IntrusiveRefCntPtr<vfs::OverlayFileSystem> fs(new vfs::OverlayFileSystem(vfs::getRealFileSystem()));
const std::string &overlayFile = s_vfsoverlay.getValue();
if (!s_vfsoverlay.getValue().empty()) {
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> buffer = fs->getBufferForFile(overlayFile);
if (!buffer) {
llvm::errs() << "Can't load virtual filesystem overlay file '" << overlayFile << "': " << buffer.getError().message() << ".\n";
return 0;
}
IntrusiveRefCntPtr<vfs::FileSystem> vfso = vfs::getVFSFromYAML(std::move(buffer.get()),
/*DiagHandler*/ nullptr,
overlayFile);
if (!vfso) {
llvm::errs() << "Error: invalid virtual filesystem overlay file '" << overlayFile << "'.\n";
return 0;
}
fs->pushOverlay(vfso);
}
ClangTool tool(optionsParser.getCompilations(), optionsParser.getSourcePathList(), std::make_shared<PCHContainerOperations>(), fs);
return tool.run(new ClazyToolActionFactory(optionsParser.getSourcePathList()));
}