//===--- CERTTidyModule.cpp - clang-tidy ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "../ClangTidy.h"
#include "../ClangTidyModule.h"
#include "../ClangTidyModuleRegistry.h"
#include "../bugprone/BadSignalToKillThreadCheck.h"
#include "../bugprone/ReservedIdentifierCheck.h"
#include "../bugprone/SignalHandlerCheck.h"
#include "../bugprone/SignedCharMisuseCheck.h"
#include "../bugprone/SpuriouslyWakeUpFunctionsCheck.h"
#include "../bugprone/SuspiciousMemoryComparisonCheck.h"
#include "../bugprone/UnhandledSelfAssignmentCheck.h"
#include "../bugprone/UnusedReturnValueCheck.h"
#include "../concurrency/ThreadCanceltypeAsynchronousCheck.h"
#include "../google/UnnamedNamespaceInHeaderCheck.h"
#include "../misc/NewDeleteOverloadsCheck.h"
#include "../misc/NonCopyableObjects.h"
#include "../misc/StaticAssertCheck.h"
#include "../misc/ThrowByValueCatchByReferenceCheck.h"
#include "../performance/MoveConstructorInitCheck.h"
#include "../readability/UppercaseLiteralSuffixCheck.h"
#include "CommandProcessorCheck.h"
#include "DefaultOperatorNewAlignmentCheck.h"
#include "DontModifyStdNamespaceCheck.h"
#include "FloatLoopCounter.h"
#include "LimitedRandomnessCheck.h"
#include "MutatingCopyCheck.h"
#include "NonTrivialTypesLibcMemoryCallsCheck.h"
#include "PostfixOperatorCheck.h"
#include "ProperlySeededRandomGeneratorCheck.h"
#include "SetLongJmpCheck.h"
#include "StaticObjectExceptionCheck.h"
#include "StrToNumCheck.h"
#include "ThrownExceptionTypeCheck.h"
#include "VariadicFunctionDefCheck.h"

namespace {

// Checked functions for cert-err33-c.
// The following functions are deliberately excluded because they can be called
// with NULL argument and in this case the check is not applicable:
// `mblen, mbrlen, mbrtowc, mbtowc, wctomb, wctomb_s`.
// FIXME: The check can be improved to handle such cases.
const llvm::StringRef CertErr33CCheckedFunctions = "::aligned_alloc;"
                                                   "::asctime_s;"
                                                   "::at_quick_exit;"
                                                   "::atexit;"
                                                   "::bsearch;"
                                                   "::bsearch_s;"
                                                   "::btowc;"
                                                   "::c16rtomb;"
                                                   "::c32rtomb;"
                                                   "::calloc;"
                                                   "::clock;"
                                                   "::cnd_broadcast;"
                                                   "::cnd_init;"
                                                   "::cnd_signal;"
                                                   "::cnd_timedwait;"
                                                   "::cnd_wait;"
                                                   "::ctime_s;"
                                                   "::fclose;"
                                                   "::fflush;"
                                                   "::fgetc;"
                                                   "::fgetpos;"
                                                   "::fgets;"
                                                   "::fgetwc;"
                                                   "::fopen;"
                                                   "::fopen_s;"
                                                   "::fprintf;"
                                                   "::fprintf_s;"
                                                   "::fputc;"
                                                   "::fputs;"
                                                   "::fputwc;"
                                                   "::fputws;"
                                                   "::fread;"
                                                   "::freopen;"
                                                   "::freopen_s;"
                                                   "::fscanf;"
                                                   "::fscanf_s;"
                                                   "::fseek;"
                                                   "::fsetpos;"
                                                   "::ftell;"
                                                   "::fwprintf;"
                                                   "::fwprintf_s;"
                                                   "::fwrite;"
                                                   "::fwscanf;"
                                                   "::fwscanf_s;"
                                                   "::getc;"
                                                   "::getchar;"
                                                   "::getenv;"
                                                   "::getenv_s;"
                                                   "::gets_s;"
                                                   "::getwc;"
                                                   "::getwchar;"
                                                   "::gmtime;"
                                                   "::gmtime_s;"
                                                   "::localtime;"
                                                   "::localtime_s;"
                                                   "::malloc;"
                                                   "::mbrtoc16;"
                                                   "::mbrtoc32;"
                                                   "::mbsrtowcs;"
                                                   "::mbsrtowcs_s;"
                                                   "::mbstowcs;"
                                                   "::mbstowcs_s;"
                                                   "::memchr;"
                                                   "::mktime;"
                                                   "::mtx_init;"
                                                   "::mtx_lock;"
                                                   "::mtx_timedlock;"
                                                   "::mtx_trylock;"
                                                   "::mtx_unlock;"
                                                   "::printf_s;"
                                                   "::putc;"
                                                   "::putwc;"
                                                   "::raise;"
                                                   "::realloc;"
                                                   "::remove;"
                                                   "::rename;"
                                                   "::scanf;"
                                                   "::scanf_s;"
                                                   "::setlocale;"
                                                   "::setvbuf;"
                                                   "::signal;"
                                                   "::snprintf;"
                                                   "::snprintf_s;"
                                                   "::sprintf;"
                                                   "::sprintf_s;"
                                                   "::sscanf;"
                                                   "::sscanf_s;"
                                                   "::strchr;"
                                                   "::strerror_s;"
                                                   "::strftime;"
                                                   "::strpbrk;"
                                                   "::strrchr;"
                                                   "::strstr;"
                                                   "::strtod;"
                                                   "::strtof;"
                                                   "::strtoimax;"
                                                   "::strtok;"
                                                   "::strtok_s;"
                                                   "::strtol;"
                                                   "::strtold;"
                                                   "::strtoll;"
                                                   "::strtoul;"
                                                   "::strtoull;"
                                                   "::strtoumax;"
                                                   "::strxfrm;"
                                                   "::swprintf;"
                                                   "::swprintf_s;"
                                                   "::swscanf;"
                                                   "::swscanf_s;"
                                                   "::thrd_create;"
                                                   "::thrd_detach;"
                                                   "::thrd_join;"
                                                   "::thrd_sleep;"
                                                   "::time;"
                                                   "::timespec_get;"
                                                   "::tmpfile;"
                                                   "::tmpfile_s;"
                                                   "::tmpnam;"
                                                   "::tmpnam_s;"
                                                   "::tss_create;"
                                                   "::tss_get;"
                                                   "::tss_set;"
                                                   "::ungetc;"
                                                   "::ungetwc;"
                                                   "::vfprintf;"
                                                   "::vfprintf_s;"
                                                   "::vfscanf;"
                                                   "::vfscanf_s;"
                                                   "::vfwprintf;"
                                                   "::vfwprintf_s;"
                                                   "::vfwscanf;"
                                                   "::vfwscanf_s;"
                                                   "::vprintf_s;"
                                                   "::vscanf;"
                                                   "::vscanf_s;"
                                                   "::vsnprintf;"
                                                   "::vsnprintf_s;"
                                                   "::vsprintf;"
                                                   "::vsprintf_s;"
                                                   "::vsscanf;"
                                                   "::vsscanf_s;"
                                                   "::vswprintf;"
                                                   "::vswprintf_s;"
                                                   "::vswscanf;"
                                                   "::vswscanf_s;"
                                                   "::vwprintf_s;"
                                                   "::vwscanf;"
                                                   "::vwscanf_s;"
                                                   "::wcrtomb;"
                                                   "::wcschr;"
                                                   "::wcsftime;"
                                                   "::wcspbrk;"
                                                   "::wcsrchr;"
                                                   "::wcsrtombs;"
                                                   "::wcsrtombs_s;"
                                                   "::wcsstr;"
                                                   "::wcstod;"
                                                   "::wcstof;"
                                                   "::wcstoimax;"
                                                   "::wcstok;"
                                                   "::wcstok_s;"
                                                   "::wcstol;"
                                                   "::wcstold;"
                                                   "::wcstoll;"
                                                   "::wcstombs;"
                                                   "::wcstombs_s;"
                                                   "::wcstoul;"
                                                   "::wcstoull;"
                                                   "::wcstoumax;"
                                                   "::wcsxfrm;"
                                                   "::wctob;"
                                                   "::wctrans;"
                                                   "::wctype;"
                                                   "::wmemchr;"
                                                   "::wprintf_s;"
                                                   "::wscanf;"
                                                   "::wscanf_s;";

} // namespace

namespace clang {
namespace tidy {
namespace cert {

class CERTModule : public ClangTidyModule {
public:
  void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
    // C++ checkers
    // CON
    CheckFactories.registerCheck<bugprone::SpuriouslyWakeUpFunctionsCheck>(
        "cert-con54-cpp");
    // DCL
    CheckFactories.registerCheck<PostfixOperatorCheck>(
        "cert-dcl21-cpp");
    CheckFactories.registerCheck<VariadicFunctionDefCheck>("cert-dcl50-cpp");
    CheckFactories.registerCheck<bugprone::ReservedIdentifierCheck>(
        "cert-dcl51-cpp");
    CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>(
        "cert-dcl54-cpp");
    CheckFactories.registerCheck<DontModifyStdNamespaceCheck>(
        "cert-dcl58-cpp");
    CheckFactories.registerCheck<google::build::UnnamedNamespaceInHeaderCheck>(
        "cert-dcl59-cpp");
    // ERR
    CheckFactories.registerCheck<misc::ThrowByValueCatchByReferenceCheck>(
        "cert-err09-cpp");
    CheckFactories.registerCheck<SetLongJmpCheck>("cert-err52-cpp");
    CheckFactories.registerCheck<StaticObjectExceptionCheck>("cert-err58-cpp");
    CheckFactories.registerCheck<ThrownExceptionTypeCheck>("cert-err60-cpp");
    CheckFactories.registerCheck<misc::ThrowByValueCatchByReferenceCheck>(
        "cert-err61-cpp");
    // MEM
    CheckFactories.registerCheck<DefaultOperatorNewAlignmentCheck>(
        "cert-mem57-cpp");
    // MSC
    CheckFactories.registerCheck<LimitedRandomnessCheck>("cert-msc50-cpp");
    CheckFactories.registerCheck<ProperlySeededRandomGeneratorCheck>(
        "cert-msc51-cpp");
    // OOP
    CheckFactories.registerCheck<performance::MoveConstructorInitCheck>(
        "cert-oop11-cpp");
    CheckFactories.registerCheck<bugprone::UnhandledSelfAssignmentCheck>(
        "cert-oop54-cpp");
    CheckFactories.registerCheck<NonTrivialTypesLibcMemoryCallsCheck>(
        "cert-oop57-cpp");
    CheckFactories.registerCheck<MutatingCopyCheck>(
        "cert-oop58-cpp");

    // C checkers
    // CON
    CheckFactories.registerCheck<bugprone::SpuriouslyWakeUpFunctionsCheck>(
        "cert-con36-c");
    // DCL
    CheckFactories.registerCheck<misc::StaticAssertCheck>("cert-dcl03-c");
    CheckFactories.registerCheck<readability::UppercaseLiteralSuffixCheck>(
        "cert-dcl16-c");
    CheckFactories.registerCheck<bugprone::ReservedIdentifierCheck>(
        "cert-dcl37-c");
    // ENV
    CheckFactories.registerCheck<CommandProcessorCheck>("cert-env33-c");
    // ERR
    CheckFactories.registerCheck<bugprone::UnusedReturnValueCheck>(
        "cert-err33-c");
    CheckFactories.registerCheck<StrToNumCheck>("cert-err34-c");
    // EXP
    CheckFactories.registerCheck<bugprone::SuspiciousMemoryComparisonCheck>(
        "cert-exp42-c");
    // FLP
    CheckFactories.registerCheck<FloatLoopCounter>("cert-flp30-c");
    CheckFactories.registerCheck<bugprone::SuspiciousMemoryComparisonCheck>(
        "cert-flp37-c");
    // FIO
    CheckFactories.registerCheck<misc::NonCopyableObjectsCheck>("cert-fio38-c");
    // MSC
    CheckFactories.registerCheck<LimitedRandomnessCheck>("cert-msc30-c");
    CheckFactories.registerCheck<ProperlySeededRandomGeneratorCheck>(
        "cert-msc32-c");
    // POS
    CheckFactories.registerCheck<bugprone::BadSignalToKillThreadCheck>(
        "cert-pos44-c");
    CheckFactories
        .registerCheck<concurrency::ThreadCanceltypeAsynchronousCheck>(
            "cert-pos47-c");
    // SIG
    CheckFactories.registerCheck<bugprone::SignalHandlerCheck>("cert-sig30-c");
    // STR
    CheckFactories.registerCheck<bugprone::SignedCharMisuseCheck>(
        "cert-str34-c");
  }

  ClangTidyOptions getModuleOptions() override {
    ClangTidyOptions Options;
    ClangTidyOptions::OptionMap &Opts = Options.CheckOptions;
    Opts["cert-dcl16-c.NewSuffixes"] = "L;LL;LU;LLU";
    Opts["cert-err33-c.CheckedFunctions"] = CertErr33CCheckedFunctions;
    Opts["cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField"] = "false";
    Opts["cert-str34-c.DiagnoseSignedUnsignedCharComparisons"] = "false";
    return Options;
  }
};

} // namespace cert

// Register the MiscTidyModule using this statically initialized variable.
static ClangTidyModuleRegistry::Add<cert::CERTModule>
    X("cert-module",
      "Adds lint checks corresponding to CERT secure coding guidelines.");

// This anchor is used to force the linker to link in the generated object file
// and thus register the CERTModule.
volatile int CERTModuleAnchorSource = 0;

} // namespace tidy
} // namespace clang
