MCPcopy Create free account
hub / github.com/FastLED/FastLED / NumericLimitMacroChecker

Class NumericLimitMacroChecker

ci/lint_cpp/numeric_limit_macros_checker.py:58–182  ·  view source on GitHub ↗

Checker class for numeric limit macro usage.

Source from the content-addressed store, hash-verified

56
57
58class NumericLimitMacroChecker(FileContentChecker):
59 """Checker class for numeric limit macro usage."""
60
61 # Pre-compiled regex matching any numeric limit macro as a whole word.
62 # Built once at class load time instead of per-file for performance.
63 _MACRO_REGEX = re.compile(r"\b(" + "|".join(NUMERIC_LIMIT_MACROS) + r")\b")
64
65 # Pre-computed type suggestion map (avoid rebuilding per call)
66 _TYPE_MAP: dict[str, str] = {
67 "UINT8_MAX": "fl::numeric_limits<uint8_t>::max()",
68 "UINT16_MAX": "fl::numeric_limits<uint16_t>::max()",
69 "UINT32_MAX": "fl::numeric_limits<uint32_t>::max()",
70 "UINT64_MAX": "fl::numeric_limits<uint64_t>::max()",
71 "INT8_MAX": "fl::numeric_limits<int8_t>::max()",
72 "INT8_MIN": "fl::numeric_limits<int8_t>::min()",
73 "INT16_MAX": "fl::numeric_limits<int16_t>::max()",
74 "INT16_MIN": "fl::numeric_limits<int16_t>::min()",
75 "INT32_MAX": "fl::numeric_limits<int32_t>::max()",
76 "INT32_MIN": "fl::numeric_limits<int32_t>::min()",
77 "INT64_MAX": "fl::numeric_limits<int64_t>::max()",
78 "INT64_MIN": "fl::numeric_limits<int64_t>::min()",
79 "SIZE_MAX": "fl::numeric_limits<size_t>::max()",
80 "UINTMAX_MAX": "fl::numeric_limits<uintmax_t>::max()",
81 "UINTPTR_MAX": "fl::numeric_limits<uintptr_t>::max()",
82 "INTMAX_MAX": "fl::numeric_limits<intmax_t>::max()",
83 "INTMAX_MIN": "fl::numeric_limits<intmax_t>::min()",
84 "INTPTR_MAX": "fl::numeric_limits<intptr_t>::max()",
85 "INTPTR_MIN": "fl::numeric_limits<intptr_t>::min()",
86 "UCHAR_MAX": "fl::numeric_limits<unsigned char>::max()",
87 "USHRT_MAX": "fl::numeric_limits<unsigned short>::max()",
88 "UINT_MAX": "fl::numeric_limits<unsigned int>::max()",
89 "ULONG_MAX": "fl::numeric_limits<unsigned long>::max()",
90 "ULLONG_MAX": "fl::numeric_limits<unsigned long long>::max()",
91 "CHAR_MAX": "fl::numeric_limits<char>::max()",
92 "CHAR_MIN": "fl::numeric_limits<char>::min()",
93 "SHRT_MAX": "fl::numeric_limits<short>::max()",
94 "SHRT_MIN": "fl::numeric_limits<short>::min()",
95 "INT_MAX": "fl::numeric_limits<int>::max()",
96 "INT_MIN": "fl::numeric_limits<int>::min()",
97 "LONG_MAX": "fl::numeric_limits<long>::max()",
98 "LONG_MIN": "fl::numeric_limits<long>::min()",
99 "LLONG_MAX": "fl::numeric_limits<long long>::max()",
100 "LLONG_MIN": "fl::numeric_limits<long long>::min()",
101 }
102
103 def __init__(self):
104 self.violations: dict[str, list[tuple[int, str]]] = {}
105
106 def should_process_file(self, file_path: str) -> bool:
107 """Check if file should be processed for numeric limit macro usage."""
108 # Check file extension
109 if not file_path.endswith((".cpp", ".h", ".hpp", ".ino")):
110 return False
111
112 # Check if file is in excluded list
113 if any(file_path.endswith(excluded) for excluded in EXCLUDED_FILES):
114 return False
115

Callers 3

create_checkersFunction · 0.90
_checkMethod · 0.90
mainFunction · 0.70

Calls 1

compileMethod · 0.80

Tested by 1

_checkMethod · 0.72