Skip to content

Commit 9435fde

Browse files
author
Daniel Marjamäki
committed
Tokenizer: Added function for checking if code is Java/C#
1 parent fee20ba commit 9435fde

5 files changed

Lines changed: 18 additions & 9 deletions

File tree

lib/checkclass.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1984,8 +1984,7 @@ void CheckClass::checkConst()
19841984
return;
19851985

19861986
// Don't check C# and JAVA classes
1987-
if (_tokenizer->getFiles()->at(0).find(".java") != std::string::npos ||
1988-
_tokenizer->getFiles()->at(0).find(".cs") != std::string::npos)
1987+
if (_tokenizer->isJavaOrCSharp())
19891988
{
19901989
return;
19911990
}

lib/checkobsoletefunctions.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ void CheckObsoleteFunctions::obsoleteFunctions()
3737
return;
3838

3939
// Don't check C# and Java code
40-
if (_tokenizer->getFiles()->at(0).find(".java") != std::string::npos ||
41-
_tokenizer->getFiles()->at(0).find(".cs") != std::string::npos)
40+
if (_tokenizer->isJavaOrCSharp())
4241
return;
4342

4443
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())

lib/checkother.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2212,8 +2212,7 @@ void CheckOther::checkIncompleteStatement()
22122212
void CheckOther::strPlusChar()
22132213
{
22142214
// Don't use this check for Java and C# programs..
2215-
if (_tokenizer->getFiles()->at(0).find(".java") != std::string::npos ||
2216-
_tokenizer->getFiles()->at(0).find(".cs") != std::string::npos)
2215+
if (_tokenizer->isJavaOrCSharp())
22172216
{
22182217
return;
22192218
}

lib/tokenize.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,8 +1744,8 @@ bool Tokenizer::tokenize(std::istream &code,
17441744
}
17451745
}
17461746

1747-
// Simplify JAVA code
1748-
if (_files[0].find(".java") != std::string::npos)
1747+
// Simplify JAVA/C# code
1748+
if (isJavaOrCSharp() && _files[0].find(".java") != std::string::npos)
17491749
{
17501750
for (Token *tok = _tokens; tok; tok = tok->next())
17511751
{
@@ -6649,7 +6649,7 @@ bool Tokenizer::duplicateDefinition(Token ** tokPtr, const Token * name)
66496649
void Tokenizer::simplifyEnum()
66506650
{
66516651
// Don't simplify enums in java files
6652-
if (_files[0].find(".java") != std::string::npos)
6652+
if (isJavaOrCSharp())
66536653
return;
66546654

66556655
std::string className;

lib/tokenize.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ class Tokenizer
4545
Tokenizer(const Settings * settings, ErrorLogger *errorLogger);
4646
virtual ~Tokenizer();
4747

48+
/** Is the code JAVA/C#. Used for bailouts */
49+
bool isJavaOrCSharp() const
50+
{
51+
if (_files.size() != 1)
52+
return false;
53+
const std::string::size_type pos = _files[0].rfind(".");
54+
if (pos != std::string::npos)
55+
return (_files[0].substr(pos) == ".java" ||
56+
_files[0].substr(pos) == ".cs");
57+
return false;
58+
}
59+
4860
/**
4961
* Tokenize code
5062
* @param code input stream for code, e.g.

0 commit comments

Comments
 (0)