Removed Java/C# handling
This commit is contained in:
parent
72666e10d1
commit
2f069f550f
|
@ -1317,11 +1317,6 @@ void CheckClass::checkConst()
|
||||||
if (!_settings->isEnabled("style"))
|
if (!_settings->isEnabled("style"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Don't check C# and JAVA classes
|
|
||||||
if (_tokenizer->isJavaOrCSharp()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::list<Scope>::const_iterator scope;
|
std::list<Scope>::const_iterator scope;
|
||||||
|
|
||||||
for (scope = symbolDatabase->scopeList.begin(); scope != symbolDatabase->scopeList.end(); ++scope) {
|
for (scope = symbolDatabase->scopeList.begin(); scope != symbolDatabase->scopeList.end(); ++scope) {
|
||||||
|
|
|
@ -199,10 +199,6 @@ public:
|
||||||
|
|
||||||
/** @brief run all simplified checks */
|
/** @brief run all simplified checks */
|
||||||
void runSimplifiedChecks(const Tokenizer *tokenizr, const Settings *settings, ErrorLogger *errLog) {
|
void runSimplifiedChecks(const Tokenizer *tokenizr, const Settings *settings, ErrorLogger *errLog) {
|
||||||
// Don't use these check for Java and C# programs..
|
|
||||||
if (tokenizr->isJavaOrCSharp())
|
|
||||||
return;
|
|
||||||
|
|
||||||
CheckMemoryLeakInFunction checkMemoryLeak(tokenizr, settings, errLog);
|
CheckMemoryLeakInFunction checkMemoryLeak(tokenizr, settings, errLog);
|
||||||
checkMemoryLeak.checkReallocUsage();
|
checkMemoryLeak.checkReallocUsage();
|
||||||
checkMemoryLeak.check();
|
checkMemoryLeak.check();
|
||||||
|
|
|
@ -35,10 +35,6 @@ void CheckNonReentrantFunctions::nonReentrantFunctions()
|
||||||
if (!_settings->standards.posix || !_settings->isEnabled("portability"))
|
if (!_settings->standards.posix || !_settings->isEnabled("portability"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Don't check C# and Java code
|
|
||||||
if (_tokenizer->isJavaOrCSharp())
|
|
||||||
return;
|
|
||||||
|
|
||||||
std::map<std::string,std::string>::const_iterator nonReentrant_end = _nonReentrantFunctions.end();
|
std::map<std::string,std::string>::const_iterator nonReentrant_end = _nonReentrantFunctions.end();
|
||||||
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
||||||
// Look for function invocations
|
// Look for function invocations
|
||||||
|
|
|
@ -36,10 +36,6 @@ void CheckObsoleteFunctions::obsoleteFunctions()
|
||||||
if (!_settings->isEnabled("style"))
|
if (!_settings->isEnabled("style"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Don't check C# and Java code
|
|
||||||
if (_tokenizer->isJavaOrCSharp())
|
|
||||||
return;
|
|
||||||
|
|
||||||
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
|
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
|
||||||
|
|
||||||
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
||||||
|
|
|
@ -2045,11 +2045,6 @@ void CheckOther::constStatementError(const Token *tok, const std::string &type)
|
||||||
|
|
||||||
void CheckOther::strPlusChar()
|
void CheckOther::strPlusChar()
|
||||||
{
|
{
|
||||||
// Don't use this check for Java and C# programs..
|
|
||||||
if (_tokenizer->isJavaOrCSharp()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const SymbolDatabase* symbolDatabase = _tokenizer->getSymbolDatabase();
|
const SymbolDatabase* symbolDatabase = _tokenizer->getSymbolDatabase();
|
||||||
|
|
||||||
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) {
|
||||||
|
|
|
@ -1640,10 +1640,6 @@ bool Tokenizer::tokenize(std::istream &code,
|
||||||
// replace inline SQL with "asm()" (Oracle PRO*C). Ticket: #1959
|
// replace inline SQL with "asm()" (Oracle PRO*C). Ticket: #1959
|
||||||
simplifySQL();
|
simplifySQL();
|
||||||
|
|
||||||
// Simplify JAVA/C# code
|
|
||||||
if (isJavaOrCSharp())
|
|
||||||
simplifyJavaAndCSharp();
|
|
||||||
|
|
||||||
// Concatenate double sharp: 'a ## b' -> 'ab'
|
// Concatenate double sharp: 'a ## b' -> 'ab'
|
||||||
concatenateDoubleSharp();
|
concatenateDoubleSharp();
|
||||||
|
|
||||||
|
@ -2321,68 +2317,6 @@ void Tokenizer::simplifyDoublePlusAndDoubleMinus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tokenizer::simplifyJavaAndCSharp()
|
|
||||||
{
|
|
||||||
// better don't call isJava in the loop
|
|
||||||
const bool isJava_ = isJava();
|
|
||||||
for (Token *tok = list.front(); tok; tok = tok->next()) {
|
|
||||||
if (tok->str() == "private")
|
|
||||||
tok->str("private:");
|
|
||||||
else if (tok->str() == "protected")
|
|
||||||
tok->str("protected:");
|
|
||||||
else if (tok->str() == "public")
|
|
||||||
tok->str("public:");
|
|
||||||
|
|
||||||
else if (isJava_) {
|
|
||||||
if (Token::Match(tok, ") throws %var% {"))
|
|
||||||
tok->deleteNext(2);
|
|
||||||
} else {
|
|
||||||
//remove 'using var;' from code
|
|
||||||
if (Token::Match(tok, "using %var% ;") &&
|
|
||||||
(!tok->previous() || Token::Match(tok->previous(), "[,;{}]"))) {
|
|
||||||
tok->deleteNext(2);
|
|
||||||
tok->deleteThis();
|
|
||||||
}
|
|
||||||
|
|
||||||
//simplify C# arrays of arrays and multidimension arrays
|
|
||||||
while (Token::Match(tok, "%type% [ ,|]") &&
|
|
||||||
(!tok->previous() || Token::Match(tok->previous(), "[,;{}]"))) {
|
|
||||||
Token *tok2 = tok->tokAt(2);
|
|
||||||
unsigned int count = 1;
|
|
||||||
while (tok2 && tok2->str() == ",") {
|
|
||||||
++count;
|
|
||||||
tok2 = tok2->next();
|
|
||||||
}
|
|
||||||
if (!tok2 || tok2->str() != "]")
|
|
||||||
break;
|
|
||||||
tok2 = tok2->next();
|
|
||||||
while (Token::Match(tok2, "[ ,|]")) {
|
|
||||||
tok2 = tok2->next();
|
|
||||||
while (tok2 && tok2->str() == ",") {
|
|
||||||
++count;
|
|
||||||
tok2 = tok2->next();
|
|
||||||
}
|
|
||||||
if (!tok2 || tok2->str() != "]")
|
|
||||||
break;
|
|
||||||
++count;
|
|
||||||
tok2 = tok2->next();
|
|
||||||
}
|
|
||||||
if (!tok2)
|
|
||||||
break;
|
|
||||||
else if (Token::Match(tok2, "%var% [;,=]")) {
|
|
||||||
Token::eraseTokens(tok, tok2);
|
|
||||||
do {
|
|
||||||
tok->insertToken("*");
|
|
||||||
} while (--count);
|
|
||||||
tok = tok2->tokAt(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!tok)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Specify array size if it hasn't been given */
|
/** Specify array size if it hasn't been given */
|
||||||
|
|
||||||
void Tokenizer::arraySize()
|
void Tokenizer::arraySize()
|
||||||
|
@ -7105,10 +7039,6 @@ public:
|
||||||
|
|
||||||
void Tokenizer::simplifyEnum()
|
void Tokenizer::simplifyEnum()
|
||||||
{
|
{
|
||||||
// Don't simplify enums in java files
|
|
||||||
if (isJavaOrCSharp())
|
|
||||||
return;
|
|
||||||
|
|
||||||
std::string className;
|
std::string className;
|
||||||
int classLevel = 0;
|
int classLevel = 0;
|
||||||
bool goback = false;
|
bool goback = false;
|
||||||
|
@ -9411,21 +9341,6 @@ const std::string& Tokenizer::getSourceFilePath() const
|
||||||
return list.getFiles()[0];
|
return list.getFiles()[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tokenizer::isJava() const
|
|
||||||
{
|
|
||||||
return _settings->enforcedLang == Settings::Java || (_settings->enforcedLang == Settings::None && Path::isJava(getSourceFilePath()));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Tokenizer::isCSharp() const
|
|
||||||
{
|
|
||||||
return _settings->enforcedLang == Settings::CSharp || (_settings->enforcedLang == Settings::None && Path::isCSharp(getSourceFilePath()));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Tokenizer::isJavaOrCSharp() const
|
|
||||||
{
|
|
||||||
return isJava() || isCSharp();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Tokenizer::isC() const
|
bool Tokenizer::isC() const
|
||||||
{
|
{
|
||||||
return _settings->enforcedLang == Settings::C || (_settings->enforcedLang == Settings::None && Path::isC(getSourceFilePath()));
|
return _settings->enforcedLang == Settings::C || (_settings->enforcedLang == Settings::None && Path::isC(getSourceFilePath()));
|
||||||
|
|
|
@ -51,15 +51,6 @@ public:
|
||||||
/** Returns the source file path. e.g. "file.cpp" */
|
/** Returns the source file path. e.g. "file.cpp" */
|
||||||
const std::string& getSourceFilePath() const;
|
const std::string& getSourceFilePath() const;
|
||||||
|
|
||||||
/** Is the code JAVA. Used for bailouts */
|
|
||||||
bool isJava() const;
|
|
||||||
|
|
||||||
/** Is the code C#. Used for bailouts */
|
|
||||||
bool isCSharp() const;
|
|
||||||
|
|
||||||
/** Is the code JAVA/C#. Used for bailouts */
|
|
||||||
bool isJavaOrCSharp() const;
|
|
||||||
|
|
||||||
/** Is the code C. Used for bailouts */
|
/** Is the code C. Used for bailouts */
|
||||||
bool isC() const;
|
bool isC() const;
|
||||||
|
|
||||||
|
@ -169,9 +160,6 @@ public:
|
||||||
*/
|
*/
|
||||||
bool simplifyCalculations();
|
bool simplifyCalculations();
|
||||||
|
|
||||||
/** Simplify Java and C# syntax */
|
|
||||||
void simplifyJavaAndCSharp();
|
|
||||||
|
|
||||||
/** Insert array size where it isn't given */
|
/** Insert array size where it isn't given */
|
||||||
void arraySize();
|
void arraySize();
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,6 @@ private:
|
||||||
TEST_CASE(uninitFunction5);
|
TEST_CASE(uninitFunction5);
|
||||||
TEST_CASE(uninitSameClassName); // No FP when two classes have the same name
|
TEST_CASE(uninitSameClassName); // No FP when two classes have the same name
|
||||||
TEST_CASE(uninitFunctionOverload); // No FP when there are overloaded functions
|
TEST_CASE(uninitFunctionOverload); // No FP when there are overloaded functions
|
||||||
TEST_CASE(uninitJava); // Java: no FP when variable is initialized in declaration
|
|
||||||
TEST_CASE(uninitVarOperatorEqual); // ticket #2415
|
TEST_CASE(uninitVarOperatorEqual); // ticket #2415
|
||||||
TEST_CASE(uninitVarPointer); // ticket #3801
|
TEST_CASE(uninitVarPointer); // ticket #3801
|
||||||
TEST_CASE(uninitConstVar);
|
TEST_CASE(uninitConstVar);
|
||||||
|
@ -2471,32 +2470,6 @@ private:
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkJava(const char code[]) {
|
|
||||||
// Clear the error log
|
|
||||||
errout.str("");
|
|
||||||
|
|
||||||
Settings settings;
|
|
||||||
settings.addEnabled("style");
|
|
||||||
|
|
||||||
// Tokenize..
|
|
||||||
Tokenizer tokenizer(&settings, this);
|
|
||||||
std::istringstream istr(code);
|
|
||||||
tokenizer.tokenize(istr, "test.java");
|
|
||||||
tokenizer.simplifyTokenList();
|
|
||||||
|
|
||||||
// Check..
|
|
||||||
CheckClass checkClass(&tokenizer, &settings, this);
|
|
||||||
checkClass.constructors();
|
|
||||||
}
|
|
||||||
|
|
||||||
void uninitJava() {
|
|
||||||
checkJava("class A {\n"
|
|
||||||
" private: int i = 0;\n"
|
|
||||||
" public: A() { }\n"
|
|
||||||
"};");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestConstructors)
|
REGISTER_TEST(TestConstructors)
|
||||||
|
|
|
@ -422,12 +422,6 @@ private:
|
||||||
// x = ({ 123; }); => { x = 123; }
|
// x = ({ 123; }); => { x = 123; }
|
||||||
TEST_CASE(simplifyAssignmentBlock);
|
TEST_CASE(simplifyAssignmentBlock);
|
||||||
|
|
||||||
// Tokenize C#
|
|
||||||
TEST_CASE(cs);
|
|
||||||
|
|
||||||
// Tokenize JAVA
|
|
||||||
TEST_CASE(java);
|
|
||||||
|
|
||||||
TEST_CASE(simplifyOperatorName1);
|
TEST_CASE(simplifyOperatorName1);
|
||||||
TEST_CASE(simplifyOperatorName2);
|
TEST_CASE(simplifyOperatorName2);
|
||||||
TEST_CASE(simplifyOperatorName3);
|
TEST_CASE(simplifyOperatorName3);
|
||||||
|
@ -6722,38 +6716,6 @@ private:
|
||||||
ASSERT_EQUALS("; { x = y ; } ;", tokenizeAndStringify(";x=({y;});"));
|
ASSERT_EQUALS("; { x = y ; } ;", tokenizeAndStringify(";x=({y;});"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cs() {
|
|
||||||
bool simplify = false;
|
|
||||||
bool expand = true;
|
|
||||||
Settings::PlatformType platform = Settings::Unspecified;
|
|
||||||
const char filename[] = "test.cs";
|
|
||||||
ASSERT_EQUALS("int * x ;", tokenizeAndStringify("int [] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * x , int * y ;", tokenizeAndStringify("; int [] x, int [] y;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * x ;", tokenizeAndStringify("; int [][] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * * x ;", tokenizeAndStringify("; int [][][] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * x ;", tokenizeAndStringify("; int [,] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * * * x ;", tokenizeAndStringify("; int [][,][] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * * x ;", tokenizeAndStringify("; int [,,] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * * * * * x ;", tokenizeAndStringify("; int [,][,,][] x;", simplify, expand, platform, filename));
|
|
||||||
ASSERT_EQUALS("; int * * * * x ;", tokenizeAndStringify("; int [,,,] x;", simplify, expand, platform, filename));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string javatest(const char javacode[]) {
|
|
||||||
errout.str("");
|
|
||||||
Settings settings;
|
|
||||||
// tokenize..
|
|
||||||
Tokenizer tokenizer(&settings, this);
|
|
||||||
std::istringstream istr(javacode);
|
|
||||||
tokenizer.tokenize(istr, "test.java");
|
|
||||||
|
|
||||||
return tokenizer.tokens()->stringifyList(0, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void java() {
|
|
||||||
ASSERT_EQUALS("void f ( ) { }", javatest("void f() throws Exception { }"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void simplifyOperatorName1() {
|
void simplifyOperatorName1() {
|
||||||
// make sure C code doesn't get changed
|
// make sure C code doesn't get changed
|
||||||
const char code[] = "void operator () {}"
|
const char code[] = "void operator () {}"
|
||||||
|
|
Loading…
Reference in New Issue