# python3
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Warning patterns for clang-tidy."""

# No need of doc strings for trivial small functions.
# pylint:disable=missing-function-docstring

# pylint:disable=relative-beyond-top-level
from .cpp_warn_patterns import compile_patterns
from .severity import Severity


def tidy_warn(description, patterns):
  return {
      'category': 'C/C++',
      'severity': Severity.TIDY,
      'description': 'clang-tidy ' + description,
      'patterns': patterns,
  }


def tidy_warn_pattern(description, pattern):
  return tidy_warn(description, [r'.*: .+\[' + pattern + r'\]$'])


def simple_tidy_warn_pattern(description):
  return tidy_warn_pattern(description, description)


def group_tidy_warn_pattern(description):
  return tidy_warn_pattern(description, description + r'-.+')


def analyzer_high(description, patterns):
  return {
      'category': 'C/C++',
      'severity': Severity.HIGH,
      'description': description,
      'patterns': patterns
  }


def analyzer_high_check(check):
  return analyzer_high(check, [r'.*: .+\[' + check + r'\]$'])


def analyzer_group_high(check):
  return analyzer_high(check, [r'.*: .+\[' + check + r'.+\]$'])


def analyzer_warn(description, patterns):
  return {
      'category': 'C/C++',
      'severity': Severity.ANALYZER,
      'description': description,
      'patterns': patterns
  }


def analyzer_warn_check(check):
  return analyzer_warn(check, [r'.*: .+\[' + check + r'\]$'])


def analyzer_group_check(check):
  return analyzer_warn(check, [r'.*: .+\[' + check + r'.+\]$'])


warn_patterns = [
    # pylint does not recognize g-inconsistent-quotes
    # pylint:disable=line-too-long,bad-option-value,g-inconsistent-quotes
    group_tidy_warn_pattern('android'),
    simple_tidy_warn_pattern('abseil-string-find-startswith'),
    simple_tidy_warn_pattern('bugprone-argument-comment'),
    simple_tidy_warn_pattern('bugprone-branch-clone'),
    simple_tidy_warn_pattern('bugprone-copy-constructor-init'),
    simple_tidy_warn_pattern('bugprone-fold-init-type'),
    simple_tidy_warn_pattern('bugprone-forward-declaration-namespace'),
    simple_tidy_warn_pattern('bugprone-forwarding-reference-overload'),
    simple_tidy_warn_pattern('bugprone-inaccurate-erase'),
    simple_tidy_warn_pattern('bugprone-incorrect-roundings'),
    simple_tidy_warn_pattern('bugprone-integer-division'),
    simple_tidy_warn_pattern('bugprone-lambda-function-name'),
    simple_tidy_warn_pattern('bugprone-macro-parentheses'),
    simple_tidy_warn_pattern('bugprone-misplaced-widening-cast'),
    simple_tidy_warn_pattern('bugprone-move-forwarding-reference'),
    simple_tidy_warn_pattern('bugprone-parent-virtual-call'),
    simple_tidy_warn_pattern('bugprone-posix-return'),
    simple_tidy_warn_pattern('bugprone-sizeof-container'),
    simple_tidy_warn_pattern('bugprone-sizeof-expression'),
    simple_tidy_warn_pattern('bugprone-string-constructor'),
    simple_tidy_warn_pattern('bugprone-string-integer-assignment'),
    simple_tidy_warn_pattern('bugprone-suspicious-enum-usage'),
    simple_tidy_warn_pattern('bugprone-suspicious-missing-comma'),
    simple_tidy_warn_pattern('bugprone-suspicious-string-compare'),
    simple_tidy_warn_pattern('bugprone-suspicious-semicolon'),
    simple_tidy_warn_pattern('bugprone-terminating-continue'),
    simple_tidy_warn_pattern('bugprone-too-small-loop-variable'),
    simple_tidy_warn_pattern('bugprone-undefined-memory-manipulation'),
    simple_tidy_warn_pattern('bugprone-unhandled-self-assignment'),
    simple_tidy_warn_pattern('bugprone-unused-raii'),
    simple_tidy_warn_pattern('bugprone-unused-return-value'),
    simple_tidy_warn_pattern('bugprone-use-after-move'),
    group_tidy_warn_pattern('bugprone'),
    simple_tidy_warn_pattern('cert-dcl16-c'),
    simple_tidy_warn_pattern('cert-dcl21-cpp'),
    simple_tidy_warn_pattern('cert-dcl50-cpp'),
    simple_tidy_warn_pattern('cert-dcl54-cpp'),
    simple_tidy_warn_pattern('cert-dcl59-cpp'),
    simple_tidy_warn_pattern('cert-env33-c'),
    simple_tidy_warn_pattern('cert-err34-c'),
    simple_tidy_warn_pattern('cert-err52-cpp'),
    simple_tidy_warn_pattern('cert-msc30-c'),
    simple_tidy_warn_pattern('cert-msc50-cpp'),
    simple_tidy_warn_pattern('cert-oop54-cpp'),
    group_tidy_warn_pattern('cert'),
    group_tidy_warn_pattern('clang-diagnostic'),
    group_tidy_warn_pattern('cppcoreguidelines'),
    group_tidy_warn_pattern('llvm'),
    simple_tidy_warn_pattern('google-default-arguments'),
    simple_tidy_warn_pattern('google-runtime-int'),
    simple_tidy_warn_pattern('google-runtime-operator'),
    simple_tidy_warn_pattern('google-runtime-references'),
    group_tidy_warn_pattern('google-build'),
    group_tidy_warn_pattern('google-explicit'),
    group_tidy_warn_pattern('google-redability'),
    group_tidy_warn_pattern('google-global'),
    group_tidy_warn_pattern('google-redability'),
    group_tidy_warn_pattern('google-redability'),
    group_tidy_warn_pattern('google'),
    simple_tidy_warn_pattern('hicpp-explicit-conversions'),
    simple_tidy_warn_pattern('hicpp-function-size'),
    simple_tidy_warn_pattern('hicpp-invalid-access-moved'),
    simple_tidy_warn_pattern('hicpp-member-init'),
    simple_tidy_warn_pattern('hicpp-delete-operators'),
    simple_tidy_warn_pattern('hicpp-special-member-functions'),
    simple_tidy_warn_pattern('hicpp-use-equals-default'),
    simple_tidy_warn_pattern('hicpp-use-equals-delete'),
    simple_tidy_warn_pattern('hicpp-no-assembler'),
    simple_tidy_warn_pattern('hicpp-noexcept-move'),
    simple_tidy_warn_pattern('hicpp-use-override'),
    group_tidy_warn_pattern('hicpp'),
    group_tidy_warn_pattern('modernize'),
    group_tidy_warn_pattern('misc'),
    simple_tidy_warn_pattern('performance-faster-string-find'),
    simple_tidy_warn_pattern('performance-for-range-copy'),
    simple_tidy_warn_pattern('performance-implicit-cast-in-loop'),
    simple_tidy_warn_pattern('performance-inefficient-string-concatenation'),
    simple_tidy_warn_pattern('performance-type-promotion-in-math-fn'),
    simple_tidy_warn_pattern('performance-unnecessary-copy-initialization'),
    simple_tidy_warn_pattern('performance-unnecessary-value-param'),
    simple_tidy_warn_pattern('portability-simd-intrinsics'),
    group_tidy_warn_pattern('performance'),
    group_tidy_warn_pattern('readability'),
    simple_tidy_warn_pattern('abseil-string-find-startwith'),
    simple_tidy_warn_pattern('abseil-faster-strsplit-delimiter'),
    simple_tidy_warn_pattern('abseil-no-namespace'),
    simple_tidy_warn_pattern('abseil-no-internal-dependencies'),
    group_tidy_warn_pattern('abseil'),
    simple_tidy_warn_pattern('portability-simd-intrinsics'),
    group_tidy_warn_pattern('portability'),

    tidy_warn('TIMEOUT', [r".*: warning: clang-tidy aborted "]),

    # warnings from clang-tidy's clang-analyzer checks
    analyzer_high('clang-analyzer-core, null pointer',
                  [r".*: warning: .+ pointer is null .*\[clang-analyzer-core"]),
    analyzer_high('clang-analyzer-core, uninitialized value',
                  [r".*: warning: .+ uninitialized (value|data) .*\[clang-analyzer-core"]),
    analyzer_warn('clang-analyzer-optin.performance.Padding',
                  [r".*: warning: Excessive padding in '.*'"]),
    # analyzer_warn('clang-analyzer Unreachable code',
    #               [r".*: warning: This statement is never executed.*UnreachableCode"]),
    analyzer_warn('clang-analyzer Size of malloc may overflow',
                  [r".*: warning: .* size of .* may overflow .*MallocOverflow"]),
    analyzer_warn('clang-analyzer sozeof() on a pointer type',
                  [r".*: warning: .*calls sizeof.* on a pointer type.*SizeofPtr"]),
    analyzer_warn('clang-analyzer Pointer arithmetic on non-array variables',
                  [r".*: warning: Pointer arithmetic on non-array variables .*PointerArithm"]),
    analyzer_warn('clang-analyzer Subtraction of pointers of different memory chunks',
                  [r".*: warning: Subtraction of two pointers .*PointerSub"]),
    analyzer_warn('clang-analyzer Access out-of-bound array element',
                  [r".*: warning: Access out-of-bound array element .*ArrayBound"]),
    analyzer_warn('clang-analyzer Out of bound memory access',
                  [r".*: warning: Out of bound memory access .*ArrayBoundV2"]),
    analyzer_warn('clang-analyzer Possible lock order reversal',
                  [r".*: warning: .* Possible lock order reversal.*PthreadLock"]),
    analyzer_warn('clang-analyzer call path problems',
                  [r".*: warning: Call Path : .+"]),
    analyzer_warn_check('clang-analyzer-core.CallAndMessage'),
    analyzer_high_check('clang-analyzer-core.NonNullParamChecker'),
    analyzer_high_check('clang-analyzer-core.NullDereference'),
    analyzer_warn_check('clang-analyzer-core.UndefinedBinaryOperatorResult'),
    analyzer_warn_check('clang-analyzer-core.DivideZero'),
    analyzer_warn_check('clang-analyzer-core.VLASize'),
    analyzer_warn_check('clang-analyzer-core.uninitialized.ArraySubscript'),
    analyzer_warn_check('clang-analyzer-core.uninitialized.Assign'),
    analyzer_warn_check('clang-analyzer-core.uninitialized.UndefReturn'),
    analyzer_warn_check('clang-analyzer-cplusplus.Move'),
    analyzer_warn_check('clang-analyzer-deadcode.DeadStores'),
    analyzer_warn_check('clang-analyzer-optin.cplusplus.UninitializedObject'),
    analyzer_warn_check('clang-analyzer-optin.cplusplus.VirtualCall'),
    analyzer_warn_check('clang-analyzer-portability.UnixAPI'),
    analyzer_warn_check('clang-analyzer-unix.cstring.NullArg'),
    analyzer_high_check('clang-analyzer-unix.MallocSizeof'),
    analyzer_warn_check('clang-analyzer-valist.Uninitialized'),
    analyzer_warn_check('clang-analyzer-valist.Unterminated'),
    analyzer_group_check('clang-analyzer-core.uninitialized'),
    analyzer_group_check('clang-analyzer-deadcode'),
    analyzer_warn_check('clang-analyzer-security.insecureAPI.strcpy'),
    analyzer_group_high('clang-analyzer-security.insecureAPI'),
    analyzer_group_high('clang-analyzer-security'),
    analyzer_high_check('clang-analyzer-unix.Malloc'),
    analyzer_high_check('clang-analyzer-cplusplus.NewDeleteLeaks'),
    analyzer_high_check('clang-analyzer-cplusplus.NewDelete'),
    analyzer_group_check('clang-analyzer-unix'),
    analyzer_group_check('clang-analyzer'),  # catch all
]


compile_patterns(warn_patterns)
