Revision: 75965
http://sourceforge.net/p/brlcad/code/75965
Author: starseeker
Date: 2020-05-28 18:13:11 +0000 (Thu, 28 May 2020)
Log Message:
-----------
Add a check to make sure we don't introduce std::system into repocheck. (Can't
do plain 'system' yet as it's currently used by tienet_master.c in adrt.)
Modified Paths:
--------------
brlcad/trunk/regress/repository/repocheck.cpp
Modified: brlcad/trunk/regress/repository/repocheck.cpp
===================================================================
--- brlcad/trunk/regress/repository/repocheck.cpp 2020-05-28 17:43:02 UTC
(rev 75964)
+++ brlcad/trunk/regress/repository/repocheck.cpp 2020-05-28 18:13:11 UTC
(rev 75965)
@@ -91,6 +91,9 @@
std::map<std::string, std::vector<std::regex>> api_exemptions;
std::map<std::string, std::regex> api_func_filters;
+ /* do-not-use functions */
+ std::map<std::string, std::regex> dnu_filters;
+
/* platform symbols */
std::map<std::pair<std::string, std::string>, std::regex>
platform_checks;
std::vector<std::regex> platform_file_filters;
@@ -103,6 +106,7 @@
std::vector<std::string> bio_log;
std::vector<std::string> bnet_log;
std::vector<std::string> common_log;
+ std::vector<std::string> dnu_log;
std::vector<std::string> setprogname_log;
std::vector<std::string> symbol_inc_log;
std::vector<std::string> symbol_src_log;
@@ -292,6 +296,22 @@
r.api_exemptions[std::string("strncpy")].push_back(std::regex(".*/wfobj/obj_util[.]cpp$"));
}
+ /* Do-not-use function check regex */
+ {
+ const char *dnu_func_strs[] {
+ "std::system",
+ NULL
+ };
+ cnt = 0;
+ rf = dnu_func_strs[cnt];
+ while (rf) {
+ std::string rrf = std::string(".*") + std::string(rf) +
std::string("[(].*");
+ r.dnu_filters[std::string(rf)] = std::regex(rrf);
+ cnt++;
+ rf = dnu_func_strs[cnt];
+ }
+ }
+
/* Platform symbol usage check regex */
{
const char *platform_strs[] {
@@ -584,6 +604,7 @@
std::map<std::string, std::set<int>> instances;
+ std::map<std::string, std::set<int>> dnu_instances;
int lcnt = 0;
std::string sline;
@@ -613,6 +634,16 @@
}
}
}
+ for (ff_it = r.dnu_filters.begin(); ff_it != r.dnu_filters.end();
ff_it++) {
+ if (!std::strstr(sline.c_str(), ff_it->first.c_str())) {
+ // Only try the full regex if strstr says there is a chance
+ continue;
+ }
+ if (std::regex_match(sline, ff_it->second)) {
+ dnu_instances[ff_it->first].insert(lcnt);
+ ret = 1;
+ }
+ }
}
bu_close_mapped_file(ifile);
@@ -626,6 +657,15 @@
r.api_log.push_back(lstr);
}
}
+
+ for (i_it = dnu_instances.begin(); i_it != dnu_instances.end(); i_it++)
{
+ std::set<int>::iterator num_it;
+ for (num_it = i_it->second.begin(); num_it != i_it->second.end();
num_it++) {
+ std::string lstr = srcs[i].substr(r.path_root.length()+1) +
std::string(" uses ") + i_it->first + std::string(" on line ") +
std::to_string(*num_it) + std::string("\n");
+ r.dnu_log.push_back(lstr);
+ }
+ }
+
}
return ret;
@@ -897,6 +937,7 @@
std::sort(repo_info.bio_log.begin(), repo_info.bio_log.end());
std::sort(repo_info.bnet_log.begin(), repo_info.bnet_log.end());
std::sort(repo_info.common_log.begin(), repo_info.common_log.end());
+ std::sort(repo_info.dnu_log.begin(), repo_info.dnu_log.end());
std::sort(repo_info.symbol_inc_log.begin(),
repo_info.symbol_inc_log.end());
std::sort(repo_info.symbol_src_log.begin(),
repo_info.symbol_src_log.end());
std::sort(repo_info.symbol_bld_log.begin(),
repo_info.symbol_bld_log.end());
@@ -926,6 +967,13 @@
}
}
+ if (repo_info.dnu_log.size()) {
+ std::cout << "\nFAILURE: found " << repo_info.dnu_log.size() << "
instances of proscribed function usage:\n";
+ for (size_t i = 0; i < repo_info.dnu_log.size(); i++) {
+ std::cout << repo_info.dnu_log[i];
+ }
+ }
+
if (repo_info.setprogname_log.size()) {
std::cout << "\nFAILURE: found " <<
repo_info.setprogname_log.size() << " missing bu_setprogname calls:\n";
for (size_t i = 0; i < repo_info.setprogname_log.size(); i++) {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits