msys2でcppcheckを使おうとしたらlibrary configurationがないと怒られるのは嫌だ
はじめに
ふと思い立ってcppcheckをmsys2でも使おうと思った。というわけで
を見ながら
$cppcheck --enable=all --std=c99 -x c -v io.c
とかおもむろにコマンドを打ったらですね
cppcheck: Failed to load library configuration file 'std.cfg'. File not found
cppcheck: Failed to load library configuration file 'windows.cfg'. File not found
(information) Failed to load std.cfg. Your Cppcheck installation is broken, please re-install. The Cppcheck binary was compiled with CFGDIR set to "C:/building/msys64/mingw32/share/cppcheck/cfg" and will therefore search for std.cfg in that path.
と怒られました。
環境
Windows10 x64 msys2
$pacman -Sl | grep pacman
msys pacman 5.0.1-1 [インストール済み]
msys pacman-mirrors 20160112-1 [インストール済み]
$pacman -Sl | grep cppcheck
mingw32 mingw-w64-i686-cppcheck 1.74-1 [インストール済み]
mingw64 mingw-w64-x86_64-cppcheck 1.74-1 [インストール済み]
$cppcheck --version
Cppcheck 1.74
原因
cppcheckには
ブログズミ: [Cppcheck] cfg ファイル設定
に紹介のあるように.cfg
ファイルが有ります。
msys2のパッケージビルドするときに、デフォルトのconfigファイルのパスを指定するらしいのですが、これが絶対パスしか受け付けないようで、C:/building/msys64/mingw32/share/cppcheck/cfg
に固定されてしまったものがpacman
で落ちてくるっぽいです。
対処法
実行ファイルをバイナリエディタで書き換える
まずは./msys64/mingw[32か64]/bin
にあるcppcheck.exe
を適当なバイナリエディタで開きます
share/cppcheck/cfg
で検索すると、エラーメッセージ用とそうでない方の2箇所ヒットしますが、そうでない方を探して
書き換えます。文字列は必ずNULL文字で終わらないといけないのがCの仕様なので、ここでも00
で終わるようにします。
当たり前ですが、それ以降のアドレスがずれないように、長さが増減したらその数に合わせて00
のbyte数を調整してください。じゃないと色々壊れます。いや、以降のアドレスを参照する部分を全部書き換えればいいんですが、それくらいならリビルドするほうが早いです。
結果
やったぜ。
感想
msys2の中の人、相対パスにできるようにパッチ当ててください
Author And Source
この問題について(msys2でcppcheckを使おうとしたらlibrary configurationがないと怒られるのは嫌だ), 我々は、より多くの情報をここで見つけました https://qiita.com/yumetodo/items/0a998dc7c696742754f8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .