Skip to content

Commit

Permalink
Merge pull request #3838 from gartung/Utilities-StaticAnalyzer-clang-…
Browse files Browse the repository at this point in the history
…clean

Fix clang compiler warnings/errors in Utilities/StaticAnalyzer package
  • Loading branch information
ktf committed May 13, 2014
2 parents 67fd3a9 + 664703a commit 406887d
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 17 deletions.
4 changes: 2 additions & 2 deletions Utilities/StaticAnalyzers/src/ArgSizeChecker.cpp
Expand Up @@ -62,7 +62,7 @@ void ArgSizeChecker::checkPreStmt(const CXXConstructExpr *E, CheckerContext &ctx
|| PQT->isMemberFunctionPointerType() || PQT->isArrayType()
|| PQT->isBuiltinType() || PQT->isUnionType() || PQT->isVectorType() ) continue;
uint64_t size_param = ctx.getASTContext().getTypeSize(PQT);
int64_t max_bits=128;
uint64_t max_bits=128;
if ( size_param <= max_bits ) continue;
std::string qname = QT.getAsString();
std::string pname = PQT.getAsString();
Expand Down Expand Up @@ -128,7 +128,7 @@ void ArgSizeChecker::checkASTDecl(const CXXMethodDecl *MD, AnalysisManager& mgr,
if (PQT->isReferenceType() || PQT->isPointerType() || PQT->isMemberFunctionPointerType()
|| PQT->isArrayType()|| PQT->isBuiltinType() || PQT->isUnionType() || PQT->isVectorType() ) continue;
uint64_t size_param = mgr.getASTContext().getTypeSize(PQT);
int64_t max_bits=128;
uint64_t max_bits=128;
if ( size_param <= max_bits ) continue;
std::string qname = QT.getAsString();
std::string pname = PQT.getAsString();
Expand Down
16 changes: 3 additions & 13 deletions Utilities/StaticAnalyzers/src/ClassChecker.cpp
Expand Up @@ -237,7 +237,8 @@ void WalkAST::CheckCXXOperatorCallExpr(const clang::CXXOperatorCallExpr *OCE,con
if (ME->isImplicitAccess())
ReportMember(ME);
}


default: return;
}

}
Expand All @@ -258,9 +259,7 @@ void WalkAST::CheckExplicitCastExpr(const clang::ExplicitCastExpr * CE,const cla

void WalkAST::CheckReturnStmt(const clang::ReturnStmt * RS, const clang::MemberExpr * E){
if (const clang::Expr * RE = RS->getRetValue()) {
clang::QualType QT = RE->getType();
clang::ASTContext &Ctx = AC->getASTContext();
clang::QualType Ty = Ctx.getCanonicalType(QT);
const clang::CXXMethodDecl * MD;
if (visitingCallExpr)
MD = visitingCallExpr->getMethodDecl();
Expand All @@ -269,8 +268,6 @@ void WalkAST::CheckReturnStmt(const clang::ReturnStmt * RS, const clang::MemberE
if ( llvm::isa<clang::CXXNewExpr>(RE) ) return;
clang::QualType RQT = MD->getResultType();
clang::QualType RTy = Ctx.getCanonicalType(RQT);
clang::QualType CQT = MD->getCallResultType();
clang::QualType CTy = Ctx.getCanonicalType(CQT);
if ( (RTy->isPointerType() || RTy->isReferenceType() ) ) {
if( !support::isConst(RTy) ) {
ReportCallReturn(RS);
Expand Down Expand Up @@ -423,7 +420,7 @@ void WalkAST::VisitMemberExpr( clang::MemberExpr *ME) {
{ WalkAST::CheckReturnStmt(RS,ME); }
if (const clang::CXXConstCastExpr * CCE = llvm::dyn_cast<clang::CXXConstCastExpr>(P))
{ WalkAST::ReportCast(CCE);}
if (const clang::CXXNewExpr * NE = llvm::dyn_cast<clang::CXXNewExpr>(P)) break;
const clang::CXXNewExpr * NE = llvm::dyn_cast<clang::CXXNewExpr>(P);if (NE) break;
P = AC->getParentMap().getParent(P);
}
}
Expand All @@ -450,7 +447,6 @@ void WalkAST::VisitCXXMemberCallExpr( clang::CXXMemberCallExpr *CE) {
for(int i=0, j=CE->getNumArgs(); i<j; i++) {
if (CE->getArg(i)) {
if ( const clang::Expr *E = llvm::dyn_cast<clang::Expr>(CE->getArg(i))) {
clang::QualType qual_arg = E->getType();
const clang::MemberExpr *AME=llvm::dyn_cast<clang::MemberExpr>(E);
if (AME && AME->isImplicitAccess()) {
clang::ParmVarDecl *PVD=llvm::dyn_cast<clang::ParmVarDecl>(MD->getParamDecl(i));
Expand Down Expand Up @@ -563,7 +559,6 @@ void WalkAST::ReportCallArg(const clang::CXXMemberCallExpr *CE,const int i) {

clang::CXXMethodDecl * CMD = llvm::dyn_cast<clang::CXXMemberCallExpr>(CE)->getMethodDecl();
const clang::MemberExpr *E = llvm::dyn_cast<clang::MemberExpr>(CE->getArg(i));
clang::ParmVarDecl *PVD=llvm::dyn_cast<clang::ParmVarDecl>(CMD->getParamDecl(i));
clang::ValueDecl * VD = llvm::dyn_cast<clang::ValueDecl>(E->getMemberDecl());
os << "Member data '" << VD->getQualifiedNameAsString();
os << "' is passed to a non-const reference parameter";
Expand All @@ -574,7 +569,6 @@ void WalkAST::ReportCallArg(const clang::CXXMemberCallExpr *CE,const int i) {

clang::ento::PathDiagnosticLocation ELoc =
clang::ento::PathDiagnosticLocation::createBegin(CE, BR.getSourceManager(),AC);
clang::SourceLocation L = E->getExprLoc();

if (!m_exception.reportClass( ELoc, BR ) ) return;
writeLog(tolog);
Expand Down Expand Up @@ -651,11 +645,9 @@ void ClassChecker::checkASTDecl(const clang::CXXRecordDecl *RD, clang::ento::Ana
clang::Stmt *Body = MD->getBody();
clangcms::WalkAST walker(BR, mgr.getAnalysisDeclContext(MD));
walker.Visit(Body);
clang::QualType CQT = MD->getCallResultType();
clang::QualType RQT = MD->getResultType();
clang::ASTContext &Ctx = BR.getContext();
clang::QualType RTy = Ctx.getCanonicalType(RQT);
clang::QualType CTy = Ctx.getCanonicalType(CQT);
clang::ento::PathDiagnosticLocation ELoc =clang::ento::PathDiagnosticLocation::createBegin( MD , SM );
if ( (RTy->isPointerType() || RTy->isReferenceType() ) &&(!support::isConst(RTy) ) && ( MD->getNameAsString().find("clone")==std::string::npos ) )
{
Expand All @@ -664,7 +656,6 @@ void ClassChecker::checkASTDecl(const clang::CXXRecordDecl *RD, clang::ento::Ana
os << MD->getQualifiedNameAsString() << " is a const member function that returns a pointer or reference to a non-const object \n";
std::string tolog = "data class '"+MD->getParent()->getNameAsString()+"' const function '" + MD->getNameAsString() + "' Warning: "+os.str();
writeLog(tolog);
clang::SourceRange SR = MD->getSourceRange();
BR.EmitBasicReport(MD, "Class Checker : Const function returns pointer or reference to non-const object.","ThreadSafety",os.str(),ELoc);
}
std::string svname = "const class std::vector<";
Expand All @@ -683,7 +674,6 @@ void ClassChecker::checkASTDecl(const clang::CXXRecordDecl *RD, clang::ento::Ana
os << MD->getQualifiedNameAsString() << " is a const member function that returns an object of type const std::vector<*> or const std::vector<*>& "<<rtname<<"\n";
std::string tolog = "data class '"+MD->getParent()->getNameAsString()+"' const function '" + MD->getNameAsString() + "' Warning: "+os.str();
writeLog(tolog);
clang::SourceRange SR = MD->getSourceRange();
BR.EmitBasicReport(MD, "Class Checker : Const function returns const std::vector<*> or const std::vector<*>&","ThreadSafety",os.str(),ELoc);
}
}
Expand Down
1 change: 0 additions & 1 deletion Utilities/StaticAnalyzers/src/EDMPluginDumper.cc
Expand Up @@ -15,7 +15,6 @@ namespace clangcms {
void EDMPluginDumper::checkASTDecl(const clang::ClassTemplateDecl *TD,clang::ento::AnalysisManager& mgr,
clang::ento::BugReporter &BR ) const {

const clang::SourceManager &SM = BR.getSourceManager();
std::string tname = TD->getTemplatedDecl()->getQualifiedNameAsString();
if ( tname == "edm::WorkerMaker" ) {
for ( auto I = TD->spec_begin(), E = TD->spec_end(); I != E; ++I) {
Expand Down
1 change: 0 additions & 1 deletion Utilities/StaticAnalyzers/src/edmChecker.cpp
Expand Up @@ -44,7 +44,6 @@ void edmChecker::checkASTDecl(const clang::CXXRecordDecl *RD, clang::ento::Analy
if (RQT.isConstQualified()) continue;
}
clang::ento::PathDiagnosticLocation ELoc =clang::ento::PathDiagnosticLocation::createBegin( MD, SM );
clang::SourceLocation SL = MD->getLocStart();
BR.EmitBasicReport(MD, "Class Checker : inherits from edm::EDProducer or edm::EDFilter","optional",os.str(),ELoc);
}
}
Expand Down

0 comments on commit 406887d

Please sign in to comment.