回答:
私は過去にlintを使用しましたが、それが有用であることがわかりました。ただし、使用していない大規模なプロジェクトに移行したため、使用を中止する必要がありました。そのため、コードの相互接続が原因で、lintの使用が困難になりました。lintの最大の問題は、誤検知を削除して気にしないように設定することです。昨年、彼らは別のリリースをしたので、今はもっと良いかもしれません。
私が協力しているある会社は、その大規模なプロジェクトを取り上げ、Coverityの静的分析ツールに通しました。ただし、これは多額の資金を使用するため、小規模企業にはお勧めしません。
私はlintを使用していませんが、GCCの警告で多くのプログラミングエラーを検出できることがわかりました。
これが私のお気に入りのCFLAGSです
CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef -Wnested- externs -Wshadow -Wconversion -Wwrite-strings -Wno-conversion -Wextra -Wstrict-aliasing -Wcast-qual
静的分析のために、Linus TorvaldsのSparseも試してみました。しかし、私はこれらの種類のツールは大規模なシステムにとってより有用だと思います。
認めざるを得ませんが、マイクロコントローラ/マイクロプロセッサプロジェクトで何らかのリントを使用することはあまりありませんでした。
LinuxベースのPC / 104 SBCでC ++を使用する私の現在の組み込みプロジェクトでは、cppcheckを使用しました(Cでも動作します!)。複雑なクラス継承ツリーに問題がありますが、かなりうまくいきます。そして、それはいくつかの価値を提供しました-それはメモリリークが発生する可能性のある潜在的な場所をチェックするのに適しています。しかし、それが指摘したことのほとんどは文体的でした-forループでは、ポストインクリメントの代わりにプレインクリメントを使用してください。
また、エンタープライズソフトウェアシステムのアプリケーションを開発する際には、Javascriptのオンラインリントを使用しました。そのセットアップで構文エラーをチェックするデバッグツールがなかったので、それは絶対に貴重でした。