問題タブ [clang-static-analyzer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
583 参照

objective-c - 静的分析と「ルールの作成」

NSBezierPath にカテゴリを追加して、パスの CGPathRef を返したいと考えています。これはコア基盤オブジェクトであるため、自動解放することはできず、メソッドの呼び出し元が解放する必要があります。メソッド名の一部として「コピー」または「作成」を配置することで、Apple が設定した規則に従っていると思います: https://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/ CFMemoryMgmt/Concepts/Ownership.html

ただし、静的アナライザーは、さらに先に進み、名前の一部として create/copy を含めるだけでなく、実際にメソッド名を「copy」(または mutableCopy など) で開始しない限り、それを受け入れません。

ただし、名前の競合を避けるために接頭辞を付ける必要があるため、これはカテゴリ メソッドの名前付けのベスト プラクティスに違反しています。

次のすべてを達成するための最良の方法は何ですか?

  1. Cocoa クラスのカテゴリにメソッドを追加する
  2. … Core Foundation オブジェクトを返す
  3. … アナライザーで警告が表示されません
  4. …ベストプラクティスに従って名前が付けられていますか?
0 投票する
1 に答える
1002 参照

clang - 関数が返せないことを ccc-analyzer (clang の C 静的アナライザー) に伝える方法

私は現在、コードベースを分析するためccc-analyzerに使用しています。static-buildGit ミラーから作成した最近のビルドを使用しています。

PC-Lint では、関数が返されないときはいつでも Lint に伝えることができます。これは通常/*lint -unreachable*/、PC-Lint の動作を制御する、または同様のコメント (「マークアップ」) を介して行われます。

特定の関数が決して返されないことがわかっているため(最終的にはCランタイムscan-buildの関数を呼び出します)、抑制したい多くの誤検知に遭遇しています。関数が返せないことを/exit伝える方法はありますか?static-buildccc-analyzer

0 投票する
1 に答える
898 参照

continuous-integration - Clang 静的アナライザーと継続的インテグレーション?

Clang 静的アナライザーは、PC-Lint や他の Lint バリアント、および同様のソフトウェアよりも、実際の問題を検出する上ではるかに信頼性が高いことが証明されています (背景を読むと驚くことではありません)。このscan-build方法は自動ビルドにも適していますが、重要な機能が 1 つ欠けているため、情報が見つかりません。最新のコミットが全体的なコード品質を悪化させたかどうかをどのように把握できますか?! 確かに、以前の実行からのエラー数を比較する必要があります。しかし、HTML の解析 (疑似ランダム命名スキームも考慮) はかなり奇妙に思えます。

このようなシナリオで静的アナライザーを有意義に統合するには、どのような方法がありますか?

注:ccc-analyzerここでも実行するだけではあまり意味がないようです。ただし、この場合、出力はテキストのみ (つまり、HTML ではない) であるため、解析が容易になります。ただし、プロセス全体ではccc-analyzerなく個々のファイルで実行する場合でも、提案を受け付けています。scan-buildmake

0 投票する
1 に答える
134 参照

clang-static-analyzer - Clang scan-build が非 ARC のファイルで -fno-objc-arc フラグを取得しない

こんにちは、ARCd であるが、ARCd ではないサードパーティ (AFNetworking) クラスを使用する XCode プロジェクトがあります。これらのファイルに対して -fno-objc-arc フラグを指定しましたが、scan-build を実行すると、次のような多くのエラーが発生します。

これらのクラスをコンパイル/チェックするときに、scan-build が -fobjc-arc を使用していることがわかりますが、これは正しくありません。

scan-build で正しい設定を取得する方法を教えてください。

参考までに、 http://clang-analyzer.llvm.org/からダウンロードした checker-267 バージョンを使用しています。

どうもありがとう

0 投票する
3 に答える
1426 参照

c++ - 特定のタイプで戻り値が使用されていない場合、コンパイルに失敗します

一部の関数呼び出しではコンパイルを失敗させたいが、他の関数呼び出しでは失敗させたい。失敗させたい関数呼び出しは、値が特定のタイプの場合に戻り値を処理しない関数呼び出しです。以下の例でErrorは、返される関数を処理しないことはコンパイルエラーですが、他のものを返す関数を処理しないことは問題なく成功するはずです。

注:ランタイム環境(組み込み)では、次の構成を使用できません:RTTI、例外。

このコードはClangでコンパイラーする必要があるだけで、各関数に注釈を付ける必要はありません。

実行時ではなくコンパイル時に失敗するソリューションをお勧めします。

0 投票する
1 に答える
171 参照

ios - ABRecordとARCを使用した潜在的なリーク

私はこのコードを持っています:

静的アナライザーは、潜在的なリークがあると言っています。phoneNumberPropertyを解放する必要があることはわかっていますが、どうすればよいですか?ARCを使用しているため、[phoneNumberPropertyリリース]が機能しません。それをnilに設定しても、それでも文句を言います。

助けてくれてありがとう

0 投票する
3 に答える
1976 参照

objective-c - ARC の使用中に変数の初期化に失敗した場合、clang はどのように警告しますか?

ローカル変数を初期化するのを忘れていましたが、使用しても警告が表示されませんでした。を使用しているためARC、変数は に初期化されてnilいるため、害はありませんが、初期化されていない値を使用したときに警告が必要です。を無効にするARCと、期待どおりの警告が表示されます。

ARC なし:

- 編集 -

local blocks を使用して、初期化されていない値を不可能にする方法を見つけました。これにより、警告が不要になります。

0 投票する
0 に答える
710 参照

xcode4.5 - レジスタ割り当て中にレジスタが不足した

Xcode 4.5.1 にアップデートしました。コードを「分析」すると、このエラーが発生します。コンパイルして正常に実行されることに注意してください。これはなぜですか?

10/25 更新 実際、私のコードはリリース構成で問題なくコンパイルおよび実行されます。ただし、デバッグ構成では、clang-static-analyzer で「分析」した場合と同様に、「レジスタが不足しています...」というエラーが表示されます。どんな助けでも大歓迎です。

ここに画像の説明を入力

0 投票する
1 に答える
1128 参照

report - コンパイラの警告でスキャンビルドレポートをclangしますか?

静的アナライザー用の clang の scan-build ドライバーは、かなりの html レポートを生成します。ただし、これらにはアナライザーが検出した問題のみが含まれます。

コンパイラ自体から警告 (およびエラー) について同じ種類のレポートを生成する方法はありますか?

0 投票する
1 に答える
4317 参照

c++ - Vera++ ルールの実装

Vera ++または静的アナライザーに関する知識がある場合は、スルーしてください。

複雑な C++ ルール検証マシンを静的アナライザーとして実装するにはどうすればよいですか? 基本クラスの仮想関数、クラス、構造体などのユーザー定義変数の識別などの複雑なルールを実装したい.グローバル、ローカル、静的などの変数スコープ.Vera++をよく理解していた.トークンの解析のみを行っている.言語のコンテキストはスクリプトを介して実装する必要があります (言語が C++ の場合、実装されたコンテキストは複雑すぎる可能性があります)。a *b; を区別するためです。(これは、クラス型 a のポインター b である可能性があります) または a *b;(変数内の 2 つの単純な乗算である可能性があります);

複雑なルールの実装には、スクリプトが言語のコンテキストを理解できるように、ステート マシンのようなコンパイラが必要になるかもしれないとさえ感じています。

私の質問はただ尋ねることです:

  1. Static Analyzer Rules の実装に関して、私の理解は正しいですか。

  2. このタスクを達成するためにどのように進めればよいか、少し教えてください。

  3. これらのタスクは、tcl の REGEXP によって簡素化できますか。

  4. Solid C++ Code Analyzer を適切に実装するために提案できる特定の設計アプローチはありますか?