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);