18 template <
typename Analyzer>
19 static int run(std::vector<std::string> & args);
24 std::string sarif_file;
27 Sarif::AnalysisPtr analysis;
32 std::map<std::string, Sarif::RulePtr> rules;
35 Analyzer(std::string
const & name, std::string
const & version);
38 Sarif::RulePtr add_rule(std::string
const & name, std::string
const & desc);
40 Sarif::ResultPtr add_note (std::string
const & rule_id, std::string
const & message,
SgLocatedNode * loc=
nullptr);
41 Sarif::ResultPtr add_warning (std::string
const & rule_id, std::string
const & message,
SgLocatedNode * loc=
nullptr);
42 Sarif::ResultPtr add_error (std::string
const & rule_id, std::string
const & message,
SgLocatedNode * loc=
nullptr);
43 Sarif::ResultPtr add_pass (std::string
const & rule_id, std::string
const & message,
SgLocatedNode * loc=
nullptr);
45 virtual int apply() = 0;
47 virtual void parse_args(std::vector<std::string> & args) = 0;
50 Sarif::ResultPtr add_result(Sarif::ResultPtr result, std::string
const & rule_id,
SgLocatedNode * loc);
53 bool parse_args__(std::vector<std::string> & args);