CLI: Warn if user tries to exclude header files.
Filename exclusion (with -i) works only for the source files. Print a warning if user tries to exclude header file. The warning instructs user to use --suppress for ignoring warnings from the header files.
This commit is contained in:
parent
b976445be7
commit
371838b9cb
|
@ -99,6 +99,27 @@ bool CppCheckExecutor::parseFromArgs(CppCheck *cppcheck, int argc, const char* c
|
||||||
|
|
||||||
if (!filenames.empty())
|
if (!filenames.empty())
|
||||||
{
|
{
|
||||||
|
// Remove header files from the list of ignored files.
|
||||||
|
// Also output a warning for the user.
|
||||||
|
// TODO: Remove all unknown files? (use FileLister::acceptFile())
|
||||||
|
bool warned = false;
|
||||||
|
std::vector<std::string> ignored = parser.GetIgnoredPaths();
|
||||||
|
std::vector<std::string>::iterator iterIgnored = ignored.begin();
|
||||||
|
for (int i = (int)ignored.size() - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
const std::string extension = Path::getFilenameExtension(ignored[i]);
|
||||||
|
if (extension == ".h" || extension == ".hpp")
|
||||||
|
{
|
||||||
|
ignored.erase(iterIgnored + i);
|
||||||
|
if (!warned)
|
||||||
|
{
|
||||||
|
std::cout << "cppcheck: filename exclusion does not apply to header (.h and .hpp) files." << std::endl;
|
||||||
|
std::cout << "cppcheck: Please use --suppress for ignoring results from the header files." << std::endl;
|
||||||
|
warned = true; // Warn only once
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PathMatch matcher(parser.GetIgnoredPaths());
|
PathMatch matcher(parser.GetIgnoredPaths());
|
||||||
std::vector<std::string>::iterator iterBegin = filenames.begin();
|
std::vector<std::string>::iterator iterBegin = filenames.begin();
|
||||||
for (int i = (int)filenames.size() - 1; i >= 0; i--)
|
for (int i = (int)filenames.size() - 1; i >= 0; i--)
|
||||||
|
|
|
@ -33,11 +33,9 @@ static int tolowerWrapper(int c)
|
||||||
|
|
||||||
bool FileLister::acceptFile(const std::string &filename)
|
bool FileLister::acceptFile(const std::string &filename)
|
||||||
{
|
{
|
||||||
std::string::size_type dotLocation = filename.find_last_of('.');
|
std::string extension = Path::getFilenameExtension(filename);
|
||||||
if (dotLocation == std::string::npos)
|
if (extension == "")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
std::string extension = filename.substr(dotLocation);
|
|
||||||
std::transform(extension.begin(), extension.end(), extension.begin(), tolowerWrapper);
|
std::transform(extension.begin(), extension.end(), extension.begin(), tolowerWrapper);
|
||||||
|
|
||||||
if (extension == ".cpp" ||
|
if (extension == ".cpp" ||
|
||||||
|
|
10
lib/path.cpp
10
lib/path.cpp
|
@ -127,3 +127,13 @@ std::string Path::removeQuotationMarks(const std::string &path)
|
||||||
editPath.erase(std::remove(editPath.begin(), editPath.end(), '\"'), editPath.end());
|
editPath.erase(std::remove(editPath.begin(), editPath.end(), '\"'), editPath.end());
|
||||||
return editPath;
|
return editPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Path::getFilenameExtension(const std::string &path)
|
||||||
|
{
|
||||||
|
const std::string::size_type dotLocation = path.find_last_of('.');
|
||||||
|
if (dotLocation == std::string::npos)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
const std::string extension = path.substr(dotLocation);
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
|
@ -70,6 +70,13 @@ public:
|
||||||
* @return Cleaned path without quotation marks.
|
* @return Cleaned path without quotation marks.
|
||||||
*/
|
*/
|
||||||
static std::string removeQuotationMarks(const std::string &path);
|
static std::string removeQuotationMarks(const std::string &path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get an extension of the filename.
|
||||||
|
* @param path Path containing filename.
|
||||||
|
* @return Filename extension (containing the dot, e.g. ".h").
|
||||||
|
*/
|
||||||
|
static std::string getFilenameExtension(const std::string &path);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
Loading…
Reference in New Issue