--- version: 2 workflows: version: 2 program-analysis: jobs: # Dynamic analysis in the Bazel build - bazel-asan - bazel-msan - bazel-tsan # Dynamic analysis with CMake - asan - tsan - ubsan # Static analysis - clang-analyze - clang-tidy - cpplint - infer - static-analysis jobs: bazel-asan: working_directory: /tmp/cirrus-ci-build docker: - image: toxchat/toktok-stack:latest-asan steps: - checkout - run: .circleci/bazel-test //c-toxcore/... bazel-tsan: working_directory: /tmp/cirrus-ci-build docker: - image: toxchat/toktok-stack:latest-tsan steps: - checkout - run: .circleci/bazel-test //c-toxcore/... -//c-toxcore/auto_tests:conference_av_test -//c-toxcore/auto_tests:conference_test -//c-toxcore/auto_tests:onion_test -//c-toxcore/auto_tests:tox_many_test bazel-msan: working_directory: /tmp/cirrus-ci-build docker: - image: toxchat/toktok-stack:latest-msan steps: - checkout - run: .circleci/bazel-test //c-toxcore/auto_tests:lossless_packet_test asan: working_directory: ~/work docker: - image: ubuntu steps: - run: &apt_install apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates clang cmake git libconfig-dev libgtest-dev libopus-dev libsodium-dev libvpx-dev llvm-dev ninja-build pkg-config - checkout - run: git submodule update --init --recursive - run: CC=clang .circleci/cmake-asan tsan: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - checkout - run: git submodule update --init --recursive - run: CC=clang .circleci/cmake-tsan ubsan: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - checkout - run: git submodule update --init --recursive - run: CC=clang .circleci/cmake-ubsan infer: working_directory: ~/work docker: - image: toxchat/infer steps: - run: *apt_install - checkout - run: git submodule update --init --recursive - run: infer --no-progress-bar -- cc auto_tests/auto_test_support.c auto_tests/lossless_packet_test.c testing/misc_tools.c toxav/*.c toxcore/*.c toxcore/*/*.c toxencryptsave/*.c third_party/cmp/*.c -lpthread $(pkg-config --cflags --libs libsodium opus vpx) static-analysis: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - run: apt-get install -y --no-install-recommends ca-certificates g++ llvm-dev - checkout - run: git submodule update --init --recursive - run: other/analysis/check_includes - run: other/analysis/check_logger_levels - run: other/analysis/run-clang - run: other/analysis/run-gcc clang-analyze: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - checkout - run: git submodule update --init --recursive - run: other/analysis/run-clang-analyze clang-tidy: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - run: apt-get install -y --no-install-recommends ca-certificates clang-tidy-14 - checkout - run: git submodule update --init --recursive - run: other/analysis/run-clang-tidy || other/analysis/run-clang-tidy || other/analysis/run-clang-tidy cpplint: working_directory: ~/work docker: - image: ubuntu steps: - run: *apt_install - run: apt-get install -y --no-install-recommends ca-certificates python3-pip - checkout - run: git submodule update --init --recursive - run: pip install cpplint - run: other/analysis/run-cpplint