static void processConfigFile(const std::string &path) { oclint::option::ConfigFile config(path); for (const oclint::option::RuleConfigurationPair &ruleConfig : config.ruleConfigurations()) { oclint::RuleConfiguration::addConfiguration(ruleConfig.key(), ruleConfig.value()); } for (const llvm::StringRef &rulePath : config.rulePaths()) { argRulesPath.push_back(rulePath.str()); } std::vector<std::string> enableRules; for (auto rule : config.rules()) { enableRules.push_back(rule.str()); } filter.enableRules(enableRules.begin(), enableRules.end()); std::vector<std::string> disableRules; for (auto rule : config.disableRules()) { disableRules.push_back(rule.str()); } filter.disableRules(disableRules.begin(), disableRules.end()); updateArgIfSet(argOutput, config.output()); updateArgIfSet(argReportType, config.reportType()); updateArgIfSet(argMaxP1, config.maxP1()); updateArgIfSet(argMaxP2, config.maxP2()); updateArgIfSet(argMaxP3, config.maxP3()); updateArgIfSet(argClangChecker, config.clangChecker()); updateArgIfSet(argDuplications, config.allowDuplicatedViolations()); }
void oclint::option::process(const char *argv) { preserveWorkingPath(); preserveExecutablePath(argv); processConfigFiles(); for (unsigned i = 0; i < argRuleConfiguration.size(); ++i) { std::string configuration = argRuleConfiguration[i]; int indexOfSeparator = configuration.find_last_of("="); std::string key = configuration.substr(0, indexOfSeparator); std::string value = configuration.substr(indexOfSeparator + 1, configuration.size() - indexOfSeparator - 1); consumeRuleConfiguration(key, value); } filter.enableRules(argEnabledRules.begin(), argEnabledRules.end()); filter.disableRules(argDisabledRules.begin(), argDisabledRules.end()); }