clang 20.0.0git
Macros | Functions
LocalizationChecker.cpp File Reference
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Lex/Lexer.h"
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
#include "clang/StaticAnalyzer/Core/Checker.h"
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/Unicode.h"
#include <optional>

Go to the source code of this file.

Macros

#define NEW_RECEIVER(receiver)
 
#define ADD_NULLARY_METHOD(receiver, method, argument)
 
#define ADD_UNARY_METHOD(receiver, method, argument)
 
#define ADD_METHOD(receiver, method_list, count, argument)    receiver##M.insert({Ctx.Selectors.getSelector(count, method_list), argument});
 
#define LSF_INSERT(function_name)   LSF.insert(&Ctx.Idents.get(function_name));
 
#define LSM_INSERT_NULLARY(receiver, method_name)
 
#define LSM_INSERT_UNARY(receiver, method_name)
 
#define LSM_INSERT_SELECTOR(receiver, method_list, arguments)
 

Functions

 REGISTER_MAP_WITH_PROGRAMSTATE (LocalizedMemMap, const MemRegion *, LocalizedState) namespace
 
static bool isDebuggingName (std::string name)
 
static bool isDebuggingContext (CheckerContext &C)
 Returns true when, heuristically, the analyzer may be analyzing debugging code.
 
static bool isNSStringType (QualType T, ASTContext &Ctx)
 

Macro Definition Documentation

◆ ADD_METHOD

#define ADD_METHOD (   receiver,
  method_list,
  count,
  argument 
)     receiver##M.insert({Ctx.Selectors.getSelector(count, method_list), argument});

Definition at line 143 of file LocalizationChecker.cpp.

◆ ADD_NULLARY_METHOD

#define ADD_NULLARY_METHOD (   receiver,
  method,
  argument 
)
Value:
receiver##M.insert( \
{Ctx.Selectors.getNullarySelector(&Ctx.Idents.get(#method)), argument});

Definition at line 137 of file LocalizationChecker.cpp.

◆ ADD_UNARY_METHOD

#define ADD_UNARY_METHOD (   receiver,
  method,
  argument 
)
Value:
receiver##M.insert( \
{Ctx.Selectors.getUnarySelector(&Ctx.Idents.get(#method)), argument});

Definition at line 140 of file LocalizationChecker.cpp.

◆ LSF_INSERT

#define LSF_INSERT (   function_name)    LSF.insert(&Ctx.Idents.get(function_name));

Definition at line 605 of file LocalizationChecker.cpp.

◆ LSM_INSERT_NULLARY

#define LSM_INSERT_NULLARY (   receiver,
  method_name 
)
Value:
LSM.insert({&Ctx.Idents.get(receiver), Ctx.Selectors.getNullarySelector( \
&Ctx.Idents.get(method_name))});

Definition at line 606 of file LocalizationChecker.cpp.

◆ LSM_INSERT_SELECTOR

#define LSM_INSERT_SELECTOR (   receiver,
  method_list,
  arguments 
)
Value:
LSM.insert({&Ctx.Idents.get(receiver), \
Ctx.Selectors.getSelector(arguments, method_list)});

Definition at line 612 of file LocalizationChecker.cpp.

◆ LSM_INSERT_UNARY

#define LSM_INSERT_UNARY (   receiver,
  method_name 
)
Value:
LSM.insert({&Ctx.Idents.get(receiver), \
Ctx.Selectors.getUnarySelector(&Ctx.Idents.get(method_name))});

Definition at line 609 of file LocalizationChecker.cpp.

◆ NEW_RECEIVER

#define NEW_RECEIVER (   receiver)
Value:
llvm::DenseMap<Selector, uint8_t> &receiver##M = \
UIMethods.insert({&Ctx.Idents.get(#receiver), \
llvm::DenseMap<Selector, uint8_t>()}) \
.first->second;

Definition at line 132 of file LocalizationChecker.cpp.

Function Documentation

◆ isDebuggingContext()

static bool isDebuggingContext ( CheckerContext C)
static

Returns true when, heuristically, the analyzer may be analyzing debugging code.

We use this to suppress localization diagnostics in un-localized user interfaces that are only used for debugging and are therefore not user facing.

Definition at line 722 of file LocalizationChecker.cpp.

References clang::C, D, clang::Decl::getDeclContext(), and isDebuggingName().

◆ isDebuggingName()

static bool isDebuggingName ( std::string  name)
static

Definition at line 714 of file LocalizationChecker.cpp.

Referenced by isDebuggingContext().

◆ isNSStringType()

static bool isNSStringType ( QualType  T,
ASTContext Ctx 
)
inlinestatic

◆ REGISTER_MAP_WITH_PROGRAMSTATE()

REGISTER_MAP_WITH_PROGRAMSTATE ( LocalizedMemMap  ,
const MemRegion ,
LocalizedState   
)