cpp_banned_constructs.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/sh
  2. # Copyright 2019 gRPC authors.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. set -e
  16. cd "$(dirname "$0")/../../.."
  17. #
  18. # Prevent the use of synchronization and threading constructs from std:: since
  19. # the code should be using grpc_core::Mutex, grpc::internal::Mutex,
  20. # grpc_core::Thread, etc.
  21. #
  22. grep -EIrn \
  23. 'std::(mutex|condition_variable|lock_guard|unique_lock|thread)' \
  24. include/grpc include/grpcpp src/core src/cpp | \
  25. grep -Ev include/grpcpp/impl/codegen/sync.h | \
  26. diff - /dev/null
  27. #
  28. # Prevent the include of disallowed C++ headers.
  29. #
  30. grep -EIrn \
  31. '^#include (<mutex>|<condition_variable>|<thread>|<ratio>|<filesystem>|<future>|<system_error>)' \
  32. include/grpc include/grpcpp src/core src/cpp | \
  33. grep -Ev include/grpcpp/impl/codegen/sync.h | \
  34. diff - /dev/null
  35. #
  36. # Prevent the include of headers that shouldn't be used in tests.
  37. #
  38. grep -EIrn \
  39. '^#include (<pthread.h>)' \
  40. test | \
  41. diff - /dev/null