function scan_build {
  extra_args=()

  # AFAICT, in the trusty travis container the scan-build tool is from the 3.4
  # installation. Therefore, by default it will use clang-3.4 when analysing code
  # which doesn't support the '-std=c++14' (it is available via '-std=c++1y').
  # Use the system-wide installed clang instead which is 3.5 and does support
  # '-std=c++14'.
  extra_args+=("--use-analyzer=$(which clang)")

  # scan-build will try to guess which CXX should be used to compile the actual
  # code, which is usually g++ but we need g++5 in the CI. Explicitly pass
  # $CC/$CXX to scan-build if they are set in the environment.

  if [[ ! -z "$CC" ]]; then
    extra_args+=("--use-cc=$CC")
  fi

  if [[ ! -z "$CXX" ]]; then
    extra_args+=("--use-c++=$CXX")
  fi

  scan-build "${extra_args[@]}" --status-bugs -disable-checker deadcode.DeadStores "$@"
}
