用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.3 KiB

5 months ago
#ifndef EXPECTED_WARNINGS_INCLUDED
#define EXPECTED_WARNINGS_INCLUDED
// Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, version 2.0,
// as published by the Free Software Foundation.
//
// This program is also distributed with certain software (including
// but not limited to OpenSSL) that is licensed under separate terms,
// as designated in a particular file or component or in included license
// documentation. The authors of MySQL hereby grant you an additional
// permission to link the program and your derivative works with the
// separately licensed software that they have included with MySQL.
//
// 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, version 2.0, for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#include "client/mysqltest/warning.h"
#include <memory>
#include <vector>
/// Class representing any one of the following list.
/// * List of disabled warnings
/// * List of enabled warnings
class Expected_warnings {
public:
typedef std::vector<std::unique_ptr<Warning>>::iterator iterator;
Expected_warnings() {}
~Expected_warnings() {}
iterator begin() { return m_warnings.begin(); }
iterator end() { return m_warnings.end(); }
/// Return length of the list containing warnings.
///
/// @retval Length value
std::size_t count() { return m_warnings.size(); }
/// Delete all warnings from the vector.
void clear_list() { m_warnings.clear(); }
/// Add a new warning to the existing list of warnings only if it
/// doesn't exist.
///
/// @param warning_code Warning number
/// @param warning_name Warning name
/// @param once_property Flag value representing the scope of a warning.
void add_warning(std::uint32_t warning_code, const char *warning_name,
bool once_property);
/// Remove a warning from the existing list of warnings if it exists.
/// If "ONCE" argument is specified, don't remove the warning, set a
/// flag to ignore disabling or enabling of it for the next statement
/// only.
///
/// @param warning_code Warning number
/// @param once_property Flag value representing the scope of a
/// disabled warning
void remove_warning(std::uint32_t warning_code, bool once_property);
/// Update the list of disabled or enabled warnings.
///
/// * Remove all the warnings which are disabled or enabled only for
/// one statement. These warnings are expired after the execution of
/// next statement.
///
/// * Reset ignore_warning flag value to 0 if it set to 1.
void update_list();
/// Return a list of symbolic names of disabled or enabled warnings.
///
/// @retval String containing symbolic names of disabled warnings
std::string warnings_list();
private:
// List containing disabled or enabled warnings.
std::vector<std::unique_ptr<Warning>> m_warnings;
};
#endif // EXPECTED_WARNINGS_INCLUDED