⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errorlogger.h

📁 cppcheck is a static C/C++ code analyzer that checks for memory leaks, mismatching allocation-deallo
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Cppcheck - A tool for static C/C++ code analysis * Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam, * Leandro Penz, Kimmo Varis, Vesa Pikki * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/ */// THIS FILE IS GENERATED BY MACHINE, SEE ../tools/errmsg.cpp !#ifndef errorloggerH#define errorloggerH#include <list>#include <string>#include "settings.h"class Token;class Tokenizer;/** * This is an interface, which the class responsible of error logging * should implement. */class ErrorLogger{public:    /**     * Wrapper for error messages, provided by reportErr()     */    class ErrorMessage    {    public:        /**         * File name and line number.         */        class FileLocation        {        public:            FileLocation()            {                line = 0;            }            std::string file;            unsigned int line;        };        ErrorMessage(const std::list<FileLocation> &callStack, const std::string &severity, const std::string &msg, const std::string &id);        ErrorMessage();        std::string toXML() const;        std::string toText() const;        std::string serialize() const;        bool deserialize(const std::string &data);        std::list<FileLocation> _callStack;        std::string _severity;        std::string _msg;        std::string _id;    };    ErrorLogger() { }    virtual ~ErrorLogger() { }    /**     * Information about progress is directed here.     * Override this to receive the progress messages.     *     * @param outmsg, E.g. "Checking main.cpp..."     */    virtual void reportOut(const std::string &outmsg) = 0;    /**     * Information about found errors and warnings is directed     * here. Override this to receive the errormessages.     *     * @param msg Location and other information about the found.     * error     */    virtual void reportErr(const ErrorLogger::ErrorMessage &msg) = 0;    /**     * Information about how many files have been checked     *     * @param index This many files have been checked.     * @param max This many files there are in total.     */    virtual void reportStatus(unsigned int index, unsigned int max) = 0;    void arrayIndexOutOfBounds(const Tokenizer *tokenizer, const std::list<const Token *> &Location)    {        _writemsg(tokenizer, Location, "all", "Array index out of bounds", "arrayIndexOutOfBounds");    }    static bool arrayIndexOutOfBounds(const Settings &s)    {        return s._showAll;    }    void bufferOverrun(const Tokenizer *tokenizer, const Token *Location)    {        _writemsg(tokenizer, Location, "all", "Buffer overrun", "bufferOverrun");    }    static bool bufferOverrun(const Settings &s)    {        return s._showAll;    }    void strncatUsage(const Tokenizer *tokenizer, const Token *Location)    {        _writemsg(tokenizer, Location, "all", "Dangerous usage of strncat, possible buffer overrun", "strncatUsage");    }    static bool strncatUsage(const Settings &s)    {        return s._showAll;    }    void outOfBounds(const Tokenizer *tokenizer, const Token *Location, const std::string &what)    {        _writemsg(tokenizer, Location, "error", "" + what + " is out of bounds", "outOfBounds");    }    static bool outOfBounds()    {        return true;    }    void stlOutOfBounds(const Tokenizer *tokenizer, const Token *Location, const std::string &what)    {        _writemsg(tokenizer, Location, "error", "" + what + " is out of bounds", "stlOutOfBounds");    }    static bool stlOutOfBounds()    {        return true;    }    void noConstructor(const Tokenizer *tokenizer, const Token *Location, const std::string &classname)    {        _writemsg(tokenizer, Location, "style", "The class '" + classname + "' has no constructor", "noConstructor");    }    static bool noConstructor(const Settings &s)    {        return s._checkCodingStyle;    }    void uninitVar(const Tokenizer *tokenizer, const Token *Location, const std::string &classname, const std::string &varname)    {        _writemsg(tokenizer, Location, "style", "Member variable not initialized in the constructor '" + classname + "::" + varname + "'", "uninitVar");    }    static bool uninitVar(const Settings &s)    {        return s._checkCodingStyle;    }    void unusedPrivateFunction(const Tokenizer *tokenizer, const Token *Location, const std::string &classname, const std::string &funcname)    {        _writemsg(tokenizer, Location, "style", "Unused private function '" + classname + "::" + funcname + "'", "unusedPrivateFunction");    }    static bool unusedPrivateFunction(const Settings &s)    {        return s._checkCodingStyle;    }    void memsetClass(const Tokenizer *tokenizer, const Token *Location, const std::string &memfunc)    {        _writemsg(tokenizer, Location, "error", "Using '" + memfunc + "' on class", "memsetClass");    }    static bool memsetClass()    {        return true;    }    void memsetStruct(const Tokenizer *tokenizer, const Token *Location, const std::string &memfunc, const std::string &classname)    {        _writemsg(tokenizer, Location, "error", "Using '" + memfunc + "' on struct that contains a 'std::" + classname + "'", "memsetStruct");    }    static bool memsetStruct()    {        return true;    }    void operatorEq(const Tokenizer *tokenizer, const Token *Location)    {        _writemsg(tokenizer, Location, "style", "'operator=' should return something", "operatorEq");    }    static bool operatorEq(const Settings &s)    {        return s._checkCodingStyle;    }    void virtualDestructor(const Tokenizer *tokenizer, const Token *Location, const std::string &Base, const std::string &Derived)    {        _writemsg(tokenizer, Location, "error", "Class " + Base + " which is inherited by class " + Derived + " does not have a virtual destructor", "virtualDestructor");    }    static bool virtualDestructor()    {        return true;    }    void unusedFunction(const std::string &filename, const std::string &funcname)    {        _writemsg("[" + filename + "]: The function '" + funcname + "' is never used", "unusedFunction");    }    static bool unusedFunction(const Settings &s)    {        return s._checkCodingStyle || s._showAll;    }    void mismatchAllocDealloc(const Tokenizer *tokenizer, const std::list<const Token *> &Location, const std::string &varname)    {        _writemsg(tokenizer, Location, "error", "Mismatching allocation and deallocation: " + varname + "", "mismatchAllocDealloc");    }    static bool mismatchAllocDealloc()    {        return true;    }    void memleak(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)    {        _writemsg(tokenizer, Location, "error", "Memory leak: " + varname + "", "memleak");    }    static bool memleak()    {        return true;    }    void memleakall(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)    {        _writemsg(tokenizer, Location, "all", "Memory leak: " + varname + "", "memleakall");    }    static bool memleakall(const Settings &s)    {        return s._showAll;    }    void resourceLeak(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)    {        _writemsg(tokenizer, Location, "error", "Resource leak: " + varname + "", "resourceLeak");    }    static bool resourceLeak()    {        return true;    }    void deallocDealloc(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -