問題タブ [static-code-analysis]

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 投票する
4 に答える
1563 参照

java - ソースコード、バイトコード、マシンコードなどで静的解析を実行することのトレードオフは何ですか?

さまざまなレベルのコードで静的分析を実行する際のさまざまなトレードオフは何ですか? たとえば Java の場合、Java ソース コードとJasminコードと Java バイトコードの静的解析を実行するのはなぜでしょうか? その選択によって、実行できるさまざまなタイプの分析が制限または拡張されますか? 選択は分析の正確さに影響しますか? ありがとう。

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

visual-studio-2010 - 流暢な検証でCA1062を抑制

私には、次のような流暢で拡張可能な検証ヘルパーがいます。

Thatメソッドは実際にはジェネリック(That <T>)であり、暗黙的な型指定を使用してジェネリックIAssertCondition <T>オブジェクトを返すため、拡張可能です。IsNotNullは、実際には拡張メソッドです。

とにかく、メソッドに渡されたパラメーターを検証するためにこのアプローチを使用する際の問題は、引数を使用する前に引数を検証するように指示するCA1062警告が表示されることです。もちろん、これはすでに実行しています。

ValidatedNotNullAttributeを使用して引数が検証されていることをFxCopに通知することについてのEricSmithの投稿(ここ)を読みましたが、説明した流暢なインターフェイスを使用してこれを実現する方法がわかりません。

上記のステートメントが要件を満たし、警告が表示されないことをコード分析が認識するための私のオプションは何ですか?

0 投票する
5 に答える
5153 参照

c# - オブジェクトを破棄するためのコード分析に適した方法

Visual Studio 2010 (主に C# 4.0) 開発標準の一部として、コード分析が有効になっています。最近提出された新しいプロジェクトのコードをレビューしていると、大量のコードが表示されます。

CA2000 : Microsoft.Reliability: メソッド 'XYZ' で、オブジェクト 'ABC' がすべての例外パスで破棄されていません。オブジェクト 'ABC' へのすべての参照が範囲外になる前に、オブジェクト 'ABC' で System.IDisposable.Dispose を呼び出します。

警告。問題は、私が何をしても警告が消えるように見えないことです。私は何時間もかけて Web を精査し、できる限りのことを試しました。

最初に、ローカル変数を適切に破棄するために単純な using ブロックを入れることについて話しているのではないことを明確にさせてください。それは問題ではありません。私の場合、これらの警告は、オブジェクトがメソッドによって返されるか、メソッド内の別のオブジェクトに割り当てられたときに表示されます。

このような警告を 4 つ含むコード サンプルを次に示します。

警告が発生する行にコメントしました。

MSDN の記事 (こちら)で説明されているように、両方の Create メソッドをリファクタリングしようとしましたが、それでも警告が表示されます。

更新 SomeObject と SomeOtherObject の両方が IDisposable を実装していることに注意してください。

また、オブジェクト初期化子が問題の構成要素である可能性がありますが、初期化子は 2 つのプライベート メソッドに分離されており、MainMethod の警告とは関係がないことに注意してください。

これらのメソッドを適切に実装して CA2000 の警告を排除する方法を誰か教えてもらえますか?

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

php - キャッチされていない例外を検出するPHP静的コード分析ツール?

PHP用の静的コード分析ツールはかなりたくさんあるようですが、PHPコードでスローされたがキャッチされない例外を検出できるツールを提案していただけますか?(理論的にはPHPスクリプトでの実行を停止できるもの)。

のようなものだけを見ることができればthrow new SomeException()幸いSomeExceptionですException

私はあまり洗練されたものを探していません-私が(あなたがポイントを得る)から(あなたがポイントを得る)から走るとsomeFunctionThatCanThrow('throw内部にステートメントがあるindex.phpので)私がトラブルに巻き込まれる可能性があることを警告するためだけに。ランタイムであっても、それは決して起こりません。

ありがとう。

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

sonarqube - Sonar 2.9 does not import SuppressionFilter

I am trying to create new rules profile in Sonar 2.9 with my checkstyle rules xml. When I try to import a checkstyle rules file with suppression filter configured, sonar gives me following messages:

I am not bothered about SuppressionCommentFilter for now, but how to enable SuppressionFilter? If it is not possible, is there any other way to have a similar functionality of excluding specific files from specific checks in Sonar?

0 投票する
4 に答える
1425 参照

c++ - wchar_t*からBSTRへの受け渡しを検出するための静的コード分析

aBSTRはコードベースのaにすぎないtypedefためwchar_t*、文字列リテラルがメソッドに渡される場所がいくつか(多く?)あります。BSTRこれは、マーシャラーや特定のメソッドを使用しようとする人BSTR(たとえばSysStringLen)を混乱させる可能性があります。

このタイプの誤用を静的に検出する方法はありますか?

/WallVC10と静的コード分析のMicrosoftAllRulesを使用してコンパイルしようとしましたが、次の問題のあるコードはどちらからもフラグが付けられません。


更新:wtypes.h私が諦めたこれらの種類の違反を検出するために破壊しようとした後。

2つのパスを試しましたが、どちらも上記のサンプルプログラムで作業することができましたが、実際のプロジェクトを試すと失敗しました。

  1. 名前の付いたクラスを作成しますBSTRが、はユニオンメンバーとしてをVARIANT持っているBSTRため、新しいクラスにはコンストラクターや代入演算子を含めることができませんでした。これはすべての場所で壊れ、NULLとして扱われましたBSTR。変換演算子を持つ型に置き換えようとしましNULLたが、数十の新しい演算子(比較、変換など)を追加した後、あいまいな呼び出しに遭遇し、あきらめました。
  2. 次に、@ CashCowと@Hansによって提案された方法を試しました(BSTRtypedefのタイプのポインターを作成します)。これも機能しませんでした。メソッドを追加toBSTRし、comutil.h()やその他の場所を変換して散らかした後、コンパイラがIDLから生成されたヘッダーをチョークするようになりました(デフォルト値はリテラル幅の文字列に変換されます)。fromBSTR_bstr_t

要するに、私は自分でこれを達成しようとすることをあきらめました。誰かがそれについて聞くのを助けることができるコード分析ツールを知っているなら、私はそれについて聞いてとてもうれしいです。

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

visual-studio - ゲートチェックインビルドは、ソースの[SuppressMessage]を無視します

カスタム定義の静的コードルールに違反するチェックインを拒否したいと思います。したがって、「PerformCodeAnalysis」を「AsConfigured」に設定してGatedCheckinビルドを定義しました。

ゲートチェックインビルドで定義されたものと同じ構成とターゲットを使用してソリューションをローカルでビルドすると、エラーは発生しません。ただし、Gated Checkinビルドは、ソースで定義した[SuppressMessage]属性を無視しているようであるため、エラーが報告されます。

ゲートチェックインビルドは、GlobalSuppressionsファイルで定義されている[SuppressMessage]属性を無視しません。

他の誰かがこの問題を抱えていますか?

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

c# - Which code is written better?

I ran a static code analysis tool on our tool and looking at its results the code below was one of the things it was talking about:

So I changed it to the code below and it fixed the error that the tool was talking about:

So in your opinion Which style of coding do you think is more appropriate and less error-prone?

Thanks

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

c++ - VS2010静的コード分析のバグ?

わかりました。これは、Visual Studioの非常にバギーな静的コードアナライザーにかかっていると確信していますが、これに目を向けても問題はないと考えました。

ベクトルスタイルのコンテナの独自のコレクションを作成しました。それらは問題なく動作しているように見えますが、VisualStudio静的コードアナライザーから次の警告に気づきました。

警告C6386:バッファオーバーラン:「引数1」にアクセスしています。書き込み可能なサイズは「newspace * 4」バイトですが、「4194240」バイトが書き込まれる可能性があります

上記の警告は、次のコードの最後の行(memcpy)で発生し、前のすべての行を強調表示します。この特定のベクトルクラスが保持できるすべての可能なタイプはPODです。 mSpaceには、ベクター内の使用可能なメモリが保持できるアイテムの数が含まれ、mSizeには現在のアイテムの数が含まれます。 mDynamicは、ベクトルによって現在管理されているメモリブロックを指します。

目が出血するまで(まあ、ほとんど)これを見てきましたが、アナライザーがこの警告を生成する理由がわかりません。他の場所でも同じ警告が4194240というかなり奇妙な値で見られました。そのため、アナライザーのさらに別のバグであると想定しています。

誰かがこれがアナライザーの既知のバグであることを確認できますか(接続をすばやく検索しても結果が得られませんでした)、またはコードに明らかに見えないバグがありますか?

0 投票する
4 に答える
12160 参照

c++ - 管理されていないC++コードのコードメトリクス分析

マネージコード用にVisualStudio2010に組み込まれているものと同様に、アンマネージMFC C ++コードの分析を実行し、メトリック(コードの行、依存関係、結合など)を提供できる無料のツールを知っている人はいますか?

私はしばらくの間Googleで検索してきましたが、実際に機能するものを見つけることができませんでした。トンありがとう!