diff --git a/.lintrunner.toml b/.lintrunner.toml index 0221924386..04dca4a340 100644 --- a/.lintrunner.toml +++ b/.lintrunner.toml @@ -196,3 +196,91 @@ command = [ '@{{PATHSFILE}}', ] is_formatter = true + +[[linter]] +code = 'NOSTDINC' +include_patterns = [ + "**/*.c", + "**/*.cpp", + "**/*.h", + "**/*.hpp", +] +exclude_patterns = [ + '**/devtools/**', + '**/test/**', + '**/testing_util/**', + '**/third-party/**', + 'backends/**', + 'devtools/**', + 'examples/**', + 'extension/**', + 'kernels/optimized/**', + 'scripts/**', + 'third-party/**', + 'util/**', +] +command = [ + 'python', + '-m', + 'lintrunner_adapters', + 'run', + 'grep_linter', + '--pattern=([^\\S\r\n]*#include\s*<(deque|exception|forward_list|functional|list|map|multimap|multiset|priority_queue|queue|set|stack|string|unordered_map|unordered_multimap|unordered_multiset|unordered_set|vector)>)', + '--linter-name=NOSTDINC', + '--error-name=Standard C++ container include in core', + """--error-description=\ + Standard library containers should not be included in ExecuTorch core \ + because they may call malloc, which is not allowed in core. \ + """, + '--', + '@{{PATHSFILE}}', +] + +[[linter]] +code = 'NOTORCHINC' +include_patterns = [ + "**/*.c", + "**/*.cpp", + "**/*.h", + "**/*.hpp", +] +exclude_patterns = [ + '**/devtools/**', + '**/fb/**', + '**/test/**', + '**/tests/**', + '**/testing_util/**', + '**/third-party/**', + 'backends/**', + 'codegen/templates/RegisterDispatchKeyCustomOps.cpp', + 'codegen/templates/RegisterSchema.cpp', + 'devtools/**', + 'examples/**', + 'exir/verification/bindings.cpp', + 'extension/**', + 'kernels/optimized/**', + 'runtime/core/exec_aten/**', + 'runtime/executor/tensor_parser_aten.cpp', + 'scripts/**', + 'test/**', + 'third-party/**', + 'util/**', +] +command = [ + 'python', + '-m', + 'lintrunner_adapters', + 'run', + 'grep_linter', + '--pattern=#include\s+[<"](aten/|ATen/|torch/)', + '--linter-name=NOTORCHINC', + '--error-name=ATen or torch include', + """--error-description=\ + PyTorch includes in ExecuTorch core are prohibited to prevent \ + accidentally breaking core's requirements; please make sure this \ + header complies (e.g., no streams/malloc/syscalls) and then include \ + a patch to update this linter.\ + """, + '--', + '@{{PATHSFILE}}', +]