39 #include <unordered_set>
58 using ExecuteCmdFn = std::function<int (std::string,std::vector<std::string>,std::string,std::string&)>;
64 bool useGlobalSuppressions,
86 unsigned int check(
const std::string &path);
100 unsigned int check(
const std::string &path,
const std::string &content);
112 static const char * version();
120 static const char * extraVersion();
126 static void getErrorMessages(
ErrorLogger &errorlogger);
128 void tooManyConfigsError(
const std::string &file,
const int numberOfConfigurations);
129 void purgedConfigurationMessage(
const std::string &file,
const std::string& configuration);
136 bool analyseWholeProgram();
139 void analyseClangTidy(
const FileSettings &fileSettings);
142 void analyseWholeProgram(
const std::string &buildDir,
const std::list<std::pair<std::string, std::size_t>> &files,
const std::list<FileSettings>& fileSettings);
145 void removeCtuInfoFiles(
const std::list<std::pair<std::string, std::size_t>>& files,
const std::list<FileSettings>& fileSettings);
147 static void resetTimerResults();
150 bool isPremiumCodingStandardId(
const std::string&
id)
const;
157 bool hasRule(
const std::string &tokenlist)
const;
161 void internalError(
const std::string &filename,
const std::string &msg);
170 unsigned int checkFile(
const std::string& filename,
const std::string &cfgname, std::istream* fileStream =
nullptr);
176 void checkRawTokens(
const Tokenizer &tokenizer);
182 void checkNormalTokens(
const Tokenizer &tokenizer);
187 void executeAddons(
const std::vector<std::string>& files,
const std::string& file0);
188 void executeAddons(
const std::string &dumpFile,
const std::string& file0);
193 void executeAddonsWholeProgram(
const std::list<std::pair<std::string, std::size_t>> &files);
201 void executeRules(
const std::string &tokenlist,
const Tokenizer &tokenizer);
204 unsigned int checkClang(
const std::string &path);
226 void reportProgress(
const std::string &filename,
const char stage[],
const std::size_t value)
override;
236 unsigned int mExitCode{};
241 bool mTooManyConfigs{};
Check for functions never called.
This is the base class which will use other classes to do static code analysis for C and C++ code to ...
ErrorLogger & mErrorLogger
std::unordered_set< std::string > mErrorList
std::unique_ptr< CheckUnusedFunctions > mUnusedFunctionsCheck
AnalyzerInformation mAnalyzerInformation
std::string getAddonMessage(const std::string &id, const std::string &text) const
std::list< Check::FileInfo * > mFileInfo
File info used for whole program analysis.
std::function< int(std::string, std::vector< std::string >, std::string, std::string &)> ExecuteCmdFn
std::pair< std::string, int > Location
bool mUseGlobalSuppressions
std::string mCurrentConfig
Current preprocessor configuration.
std::map< Location, std::set< std::string > > mLocationMacros
ExecuteCmdFn mExecuteCommand
Callback for executing a shell command (exe, args, output)
This is an interface, which the class responsible of error logging should implement.
virtual void reportErr(const ErrorMessage &msg)=0
Information about found errors and warnings is directed here.
virtual void reportOut(const std::string &outmsg, Color c=Color::Reset)=0
Information about progress is directed here.
virtual void reportProgress(const std::string &filename, const char stage[], const std::size_t value)
Report progress to client.
Wrapper for error messages, provided by reportErr()
This is just a container for general settings so that we don't need to pass individual values to func...
The main purpose is to tokenize the source code.