diff --git a/CheckOther.cpp b/CheckOther.cpp index a0ff05b7c..29e946c14 100644 --- a/CheckOther.cpp +++ b/CheckOther.cpp @@ -59,6 +59,39 @@ void WarningIsDigit() //--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// Use standard function "isalpha" instead +//--------------------------------------------------------------------------- + +void WarningIsAlpha() +{ + for (TOKEN *tok = tokens; tok; tok = tok->next) + { + bool err = false; + + if ( tok->str[0] != '(' ) + continue; + + err |= match(tok, "( var >= 'A' && var <= 'Z' ) || ( var >= 'a' && var <= 'z' )"); + err |= match(tok, "( var >= 'a' && var <= 'z' ) || ( var >= 'A' && var <= 'Z' )"); + err |= match(tok, "( * var >= 'A' && * var <= 'Z' ) || ( * var >= 'a' && * var <= 'z' )"); + err |= match(tok, "( * var >= 'a' && * var <= 'z' ) || ( * var >= 'A' && * var <= 'Z' )"); + err |= match(tok, "( ( var >= 'A' ) && ( var <= 'Z' ) ) || ( ( var >= 'a' ) && ( var <= 'z' ) )"); + err |= match(tok, "( ( var >= 'a' ) && ( var <= 'z' ) ) || ( ( var >= 'A' ) && ( var <= 'Z' ) )"); + err |= match(tok, "( ( * var >= 'A' ) && ( * var <= 'Z' ) ) || ( ( * var >= 'a' ) && ( * var <= 'z' ) )"); + err |= match(tok, "( ( * var >= 'a' ) && ( * var <= 'z' ) ) || ( ( * var >= 'A' ) && ( * var <= 'Z' ) )"); + if (err) + { + std::ostringstream ostr; + ostr << FileLine(tok) << ": The condition can be simplified; use 'isalpha'"; + ReportErr(ostr.str()); + } + } +} +//--------------------------------------------------------------------------- + + //--------------------------------------------------------------------------- // Redundant code.. //--------------------------------------------------------------------------- diff --git a/CheckOther.h b/CheckOther.h index e4397452f..aaf0a9941 100644 --- a/CheckOther.h +++ b/CheckOther.h @@ -10,6 +10,9 @@ void WarningOldStylePointerCast(); // Use standard functions instead void WarningIsDigit(); +// Use standard functions instead +void WarningIsAlpha(); + // Redundant code void WarningRedundantCode(); diff --git a/main.cpp b/main.cpp index 888d6e413..08ca67052 100644 --- a/main.cpp +++ b/main.cpp @@ -74,6 +74,7 @@ static void CppCheck(const char FileName[]) if ( ShowWarnings ) { // Including header which is not needed + // Todo: This is really slow! WarningIncludeHeader(); } @@ -110,6 +111,7 @@ static void CppCheck(const char FileName[]) // Use standard functions instead WarningIsDigit(); + WarningIsAlpha(); CheckOperatorEq1();