run-clang-tidy
このスクリプトはUbuntu 21.10で壊れたシンボリックリンクであることがわかりました。
$ run-clang-tidy
bash: run-clang-tidy: command not found
$ cd /usr/bin
$ ls -l *tidy*
lrwxrwxrwx 1 root root 29 Sep 28 10:13 clang-tidy -> ../lib/llvm-13/bin/clang-tidy
lrwxrwxrwx 1 root root 29 Oct 3 20:38 clang-tidy-13 -> ../lib/llvm-13/bin/clang-tidy
lrwxrwxrwx 1 root root 21 Sep 28 10:13 clang-tidy-diff -> clang-tidy-diff-13.py
lrwxrwxrwx 1 root root 45 Oct 3 20:38 clang-tidy-diff-13.py -> ../lib/llvm-13/share/clang/clang-tidy-diff.py
lrwxrwxrwx 1 root root 20 Sep 28 10:13 run-clang-tidy -> run-clang-tidy-13.py
lrwxrwxrwx 1 root root 33 Oct 3 20:38 run-clang-tidy-13 -> ../lib/llvm-13/bin/run-clang-tidy
lrwxrwxrwx 1 root root 41 Oct 3 20:38 run-clang-tidy-13.py -> ../lib/llvm-13/share/clang/run-clang-tidy
$ ls -l run-clang-tidy
lrwxrwxrwx 1 root root 20 Sep 28 10:13 run-clang-tidy -> run-clang-tidy-13.py
$ ls -l run-clang-tidy-13.py
lrwxrwxrwx 1 root root 41 Oct 3 20:38 run-clang-tidy-13.py -> ../lib/llvm-13/share/clang/run-clang-tidy
$ ls -l ../lib/llvm-13/share/clang/run-clang-tidy
ls: cannot access '../lib/llvm-13/share/clang/run-clang-tidy': No such file or directory
これはドッカーコンテナで発生しますが、通常のインストールでも同じと仮定します。私のDockerfileから:
FROM ubuntu:21.10
...
RUN \
apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get -y install \
afl++ \
busybox \
clang-tidy \
...
このメイクファイルはありませんが、古いUbuntuバージョンrun-clang-tidy-13
のメイクファイルで実行されるため、直接使用することはできません。run-clang-tidy-13
run-clang-tidy-12
Dockerfile で次の行を使用するか、コンテナで同じコマンドを実行して問題を解決できます.
RUN rm /usr/bin/run-clang-tidy
RUN ln -s /usr/bin/run-clang-tidy-13 /usr/bin/run-clang-tidy
しかし、もちろん、これは醜い解決策です。
同じ問題が発生した人はいますか? 21.10.1で修正された他に、よりエレガントなソリューションはありますか?
記録します(コンテナで実行)。
$ lsb_release -a
LSB Version: core-11.1.0ubuntu3-noarch:security-11.1.0ubuntu3-noarch
Distributor ID: Ubuntu
Description: Ubuntu 21.10
Release: 21.10
Codename: impish
$ clang-tidy --version
LLVM (http://llvm.org/):
LLVM version 13.0.0
Optimized build.
Default target: x86_64-pc-linux-gnu
Host CPU: skylake