mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-01 20:26:05 +00:00

the ownership of BugTypes and BugReports. Now BugReports are owned by BugTypes, and BugTypes are owned by the BugReporter object. The major functionality change in this patch is that reports are not immediately emitted by a call to BugReporter::EmitWarning (now called EmitReport), but instead of queued up in report "equivalence classes". When BugReporter::FlushReports() is called, it emits one diagnostic per report equivalence class. This provides a nice cleanup with the caching of reports as well as enables the BugReporter engine to select the "best" path for reporting a path-sensitive bug based on all the locations in the ExplodedGraph that the same bug could occur. Along with this patch, Leaks are now coalesced into a common equivalence class by their allocation site, and the "summary" diagnostic for leaks now reports the allocation site as the location of the bug (this may later be augmented to also provide an example location where the leak occurs). llvm-svn: 63796
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
//== BasicObjCFoundationChecks.h - Simple Apple-Foundation checks -*- C++ -*--//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines BasicObjCFoundationChecks, a class that encapsulates
|
|
// a set of simple checks to run on Objective-C code using Apple's Foundation
|
|
// classes.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/Analysis/PathSensitive/ExplodedGraph.h"
|
|
#include "clang/Analysis/PathSensitive/GRSimpleAPICheck.h"
|
|
#include "clang/Analysis/PathSensitive/GRState.h"
|
|
#include "clang/Analysis/PathDiagnostic.h"
|
|
#include "clang/AST/Expr.h"
|
|
#include "clang/AST/ASTContext.h"
|
|
#include "llvm/Support/Compiler.h"
|
|
|
|
#ifndef LLVM_CLANG_ANALYSIS_BASICOBJCFOUNDATIONCHECKS
|
|
#define LLVM_CLANG_ANALYSIS_BASICOBJCFOUNDATIONCHECKS
|
|
|
|
namespace clang {
|
|
|
|
class GRSimpleAPICheck;
|
|
class ASTContext;
|
|
class GRStateManager;
|
|
class BugReporter;
|
|
class GRExprEngine;
|
|
|
|
GRSimpleAPICheck* CreateBasicObjCFoundationChecks(ASTContext& Ctx,
|
|
GRStateManager* VMgr,
|
|
BugReporter& BR);
|
|
|
|
GRSimpleAPICheck* CreateAuditCFNumberCreate(ASTContext& Ctx,
|
|
GRStateManager* VMgr,
|
|
BugReporter& BR);
|
|
|
|
void RegisterNSErrorChecks(BugReporter& BR, GRExprEngine &Eng);
|
|
|
|
} // end clang namespace
|
|
|
|
#endif
|