blob: 20c853b9906df88c7fbca93b329008a0e19c2abd [file] [log] [blame]
#
# Copyright (c) 2022 Project CHIP Authors
#
# 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.
#
"""Configuration for #include checking."""
from typing import Dict, Set
# IGNORE lists source files that are not checked at all.
#
# Each entry is a string giving a Python regular expression,
# un-anchored and case sensitive.
IGNORE: Set[str] = {
'/examples/',
'/java/',
'/Jni',
'/mock/',
'/pybindings/',
'/python/',
'/Test',
'/tests/',
'/tools/',
# Platforms can opt in or out.
'/darwin/',
'/platform/Ameba/',
'/platform/android/',
'/platform/Beken/',
'/platform/Infineon/CYW30739/',
'/platform/Darwin/',
'/platform/silabs/',
'/platform/ESP32/',
'/platform/fake/',
'/platform/Linux/',
'/platform/nxp/',
'/platform/Tizen/',
'/platform/Infineon/PSOC6/',
'/platform/bouffalolab/BL602',
'/platform/webos/',
'/platform/mt793x/',
'/platform/ASR/',
'/platform/NuttX/',
r'POSIX\.h$',
}
# DENY lists disallowed include files.
DENY: Set[str] = {
# C++ headers often unsuitable for small platforms.
'chrono',
'clocale',
'coroutine',
'deque',
'exception',
'forward_list',
'fstream',
'iomanip',
'ios',
'iostream',
'istream',
'list',
'locale',
'locale.h',
'map',
'multimap',
'multiset',
'ostream',
'queue',
'set',
'sstream',
'stdexcept',
'streambuf',
'string',
'string_view',
'syncstream',
'unordered_map',
'unordered_set',
'vector',
# CHIP headers using STL containers.
'app/data-model/ListLargeSystemExtensions.h', # uses std::set
'src/platform/DeviceSafeQueue.h', # uses std::deque
}
# ALLOW describes exceptions to DENY.
#
# The dictionary key is the name of the file performing the #include.
# The value is a set of names allowed to be included from that file
# despite being in DENY.
ALLOW: Dict[str, Set[str]] = {
# Not intended for embedded clients (#11705).
'src/app/ClusterStateCache.h': {'list', 'map', 'set', 'vector', 'queue'},
'src/app/BufferedReadCallback.h': {'vector'},
'src/lib/support/IniEscaping.cpp': {'string'},
'src/lib/support/IniEscaping.h': {'string'},
# Itself in DENY.
'src/app/data-model/ListLargeSystemExtensions.h': {'set'},
'src/platform/DeviceSafeQueue.h': {'queue'},
# Only uses <chrono> for zero-cost types.
'src/system/SystemClock.h': {'chrono'},
'src/platform/mbed/MbedEventTimeout.h': {'chrono'},
'src/app/app-platform/ContentApp.h': {'list', 'string'},
'src/app/app-platform/ContentAppPlatform.cpp': {'string'},
'src/app/clusters/application-basic-server/application-basic-delegate.h': {'list', 'string'},
'src/app/clusters/application-basic-server/application-basic-server.cpp': {'list', 'string'},
'src/app/clusters/application-launcher-server/application-launcher-server.cpp': {'string'},
'src/app/clusters/application-launcher-server/application-launcher-delegate.h': {'list'},
'src/app/clusters/audio-output-server/audio-output-delegate.h': {'list'},
'src/app/clusters/channel-server/channel-delegate.h': {'list'},
'src/app/clusters/content-launch-server/content-launch-delegate.h': {'list'},
'src/app/clusters/content-launch-server/content-launch-server.cpp': {'list'},
'src/app/clusters/media-input-server/media-input-delegate.h': {'list'},
'src/app/clusters/media-playback-server/media-playback-delegate.h': {'list'},
'src/app/clusters/target-navigator-server/target-navigator-delegate.h': {'list'},
'src/credentials/attestation_verifier/FileAttestationTrustStore.h': {'vector'},
'src/credentials/attestation_verifier/FileAttestationTrustStore.cpp': {'string'},
'src/setup_payload/AdditionalDataPayload.h': {'string'},
'src/setup_payload/AdditionalDataPayloadParser.cpp': {'vector', 'string'},
'src/setup_payload/Base38Decode.h': {'string', 'vector'},
'src/setup_payload/ManualSetupPayloadGenerator.h': {'string'},
'src/setup_payload/ManualSetupPayloadParser.cpp': {'string', 'vector'},
'src/setup_payload/ManualSetupPayloadParser.h': {'string'},
'src/setup_payload/QRCodeSetupPayloadParser.cpp': {'vector'},
'src/setup_payload/QRCodeSetupPayloadParser.h': {'string'},
'src/setup_payload/QRCodeSetupPayloadGenerator.cpp': {'string'},
'src/setup_payload/QRCodeSetupPayloadGenerator.h': {'string'},
'src/setup_payload/SetupPayloadHelper.cpp': {'fstream'},
'src/setup_payload/SetupPayloadHelper.h': {'string'},
'src/setup_payload/SetupPayload.h': {'map', 'string', 'vector'},
# Uses platform-define to switch between list and array
'src/lib/dnssd/minimal_mdns/ResponseSender.h': {'list'},
# Not really for embedded consumers; uses std::deque to keep track
# of a list of discovered things.
'src/controller/SetUpCodePairer.h': {'deque'},
'src/controller/ExamplePersistentStorage.cpp': {'fstream', 'string', 'map'},
# Library meant for non-embedded
'src/tracing/json/json_tracing.cpp': {'string', 'sstream'},
'src/tracing/json/json_tracing.h': {'fstream', 'unordered_map', 'string'},
# esp32 tracing
'src/tracing/esp32_trace/esp32_tracing.h': {'unordered_map'},
# Not intended for embedded clients
'src/app/PendingResponseTrackerImpl.h': {'unordered_set'},
# Not intended for embedded clients
'src/lib/core/TLVVectorWriter.cpp': {'vector'},
'src/lib/core/TLVVectorWriter.h': {'vector'},
'src/lib/support/jsontlv/JsonToTlv.cpp': {'sstream', 'string', 'vector'},
'src/lib/support/jsontlv/JsonToTlv.h': {'string'},
'src/lib/support/jsontlv/TlvToJson.h': {'string'},
'src/lib/support/jsontlv/TextFormat.h': {'string'},
'src/app/icd/client/DefaultICDClientStorage.cpp': {'vector'},
'src/app/icd/client/DefaultICDClientStorage.h': {'vector'},
'src/app/icd/client/DefaultICDStorageKey.h': {'vector'},
'src/controller/CHIPDeviceController.cpp': {'string'},
'src/qrcodetool/setup_payload_commands.cpp': {'string'},
}