問題タブ [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 投票する
3 に答える
620 参照

asp.net-mvc-2 - ビュー内の「リソースが見つかりません」のReSharperエラーを除外します

私はMVC2アプリケーションを持っており、 ReSharper 6.1を使用しています-コード検査の重大度を大幅にカスタマイズし、エラー、警告、提案、ヒントとして表示することを決定したものを編集しましたが、特定のリソースがHTMLHelperを利用するときに欠落しています。

したがって、たとえば:

<img src="<%:Url.Content("~/Resources/Image12345.jpg")%>" />

上記と同様のすべての行でエラーが発生し、上記のパスが存在しないことを通知します-設計時には存在しませんが、ビルドプロセス中に、これらのビューはすべて、すべてを含む場所にXCOPYされます。画像などのリソースがあるため、アプリケーションを実行する時点では、このパス解像度はすべて正しいです。ReSharperを初めて使用するチームで作業しているため、このエラーが表示されないようにしたいと思いました。これにより、同僚が壊れていないものをいじり始める可能性があります。

ReSharperは、これが問題ではないことを明らかに認識しておらず、この特定の分析をオフにしたい理由を知る方法がありません。全体として、ReSharperは大幅にカスタマイズ可能であり、バージョン6.1のInspection Severityには、便利であることが証明された新しいMVCオプションがいくつかありますが、これの検査をオフにする方法はわかりません。

誰かアイデアはありますか?

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

c++ - VS11 コード分析のヒント?

VS11 で C++ のコード分析を実行すると、多くの誤検知が発生しました。たとえば、数十個のスイッチがあり、ポインターが null である可能性があると表示されます。スイッチ内のすべてのケース (少なくとも 1 つのケース) でポインターが設定され、デフォルトで assert(0) と例外をスローする my 関数が呼び出されます。アサートと例外がメソッドにあるため、ポインターがnullになることは不可能であることに気付いていないと思います。このような誤検知が表示されないように、ヒントまたは修正するにはどうすればよいですか?

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

objective-c - XCode3.2でコードを静的に分析する場合の誤検知

XCode3.2のXCode静的コードアナライザーで問題が発生しました。それは私が見つけた潜在的なリークが正当化されていないことを示しています。他の人に確認して、それが本当に誤検知であることを確認したいだけです。

メインコードは次のとおりです(一部の関数本体):

上記のvalidateメソッドは次のとおりです。

XCodeは、validateメソッドがNOを返す可能性があり、リリースがdocに送信されないため、docの割り当てがリークの可能性があることを示しています。しかし実際のところ、初期化が失敗した場合、initWithData:options:によってnilが返され、害は発生しません。ドキュメントにもこれが記載されています。

それで、専門家は何と言いますか?誤検知かどうか?

最高、ハラルド

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

code-analysis - Visual Studio 11 でのコード クローンの構成

「コード クローン」を見つける VS11 の新しい組み込み機能が本当に気に入っていますが、それを構成する方法がないようです。

例として、5 行以上の正確なクローンのみを表示します。

現在、Exact、Strong、Medium、Weak の一致があり、10 行以上のようです。これを構成できれば、クローンを処理するのに役立ち、何年にもわたって切り取って貼り付けてきたと確信している小さなメソッドを見つけることができます。

更新 生成されたファイルを除外する機能を構成する方法について、Release Preview バージョンのドキュメントからのメモを次に示します。

T4 テンプレートによって生成されたファイルをコード クローン分析から除外するには

  1. テンプレートを Visual Studio プロジェクトのサブ ディレクトリに配置します。たとえば、GeneratedFiles などの名前を付けます。

  2. プロジェクトに新しいテキスト ファイルを追加し、その名前と拡張子を t4Exclusions.codeclonesettings に変更します。

  3. ファイルの内容を次のように変更します。

<CodeCloneSettings> <Exclusions> <File>生成されたファイル*.cs</File> </Exclusions> </CodeCloneSettings>

更新- 2012 年 8 月 27 日 Code Clone のドキュメントでこれを見つけましたが、以前のバージョンにはありませんでした。これは、長さが 10 行未満のクローンを見つける 1 つの方法です。

特定のコード フラグメントのクローンを見つけるには

1. メソッドまたは get/set 定義内のコードの一部を強調表示します。

注 - ステートメントのクローンは見つかりますが、フィールド、メソッド、またはプロパティ シグネチャなどの宣言は見つかりません。

2. フラグメントのショートカット メニューで、Find matching clones in solution を選択します。

ソリューションに類似のメソッドまたはフラグメントが既に存在するかどうかを知りたい場合は、このメソッドを使用します。

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

java - import ステートメントと java.* 文字列を禁止することで、標準の Java ライブラリへのアクセスをブロックできますか?

ファイル システム、ネットワーク、またはその他の IO に、非常に制限された独自の API を介してアクセスすることを除いて、人々がサーバー上で単純なコンソール Java プログラムを実行できるようにしたいとします。しかし、オペレーティング システム レベルの制限に深く入り込みたくないので、現在の議論のために、コード レベルのサニタイズ方法を検討したいと思います。

したがって、次のようにこの制限を達成しようとするとします。明示的にホワイトリストに登録されているものを除いて、すべての "import" ステートメントを禁止します (たとえば、"import SanitizedSystemIO. " は許可されていますが、"import java.io. " は許可されていません)。したがって、ユーザーは SanitizedSystemIO の File クラスを参照するコードを記述できますが、java.io.File を参照することはできません。このようにして、ユーザーはサニタイズされたラッパー API を使用することを余儀なくされますが、独自のフレームワーク コード (IO 機能を提供するために、ユーザーのコードと一緒にコンパイルおよび実行される) はすべての通常の Java API にアクセスできます。

このアプローチは機能しますか? または、標準のJava APIにアクセスするためにハッキングする方法はありますか?

ETA: わかりました。まず第一に、これはもちろん system.* ではなく java.* 文字列でなければなりません。基本的にC#だと思います...

第二に、「セキュリティマネージャーを使用する」または「クラスローダーを使用する」というアプローチがあると人々は言います。しかし、コード分析アプローチのどこが悪いのでしょうか? KISS の利点の 1 つは、KISS の単純さです。SecurityManager でチェックしてサニタイズするすべてのものを把握する代わりに、機能の小さなホワイトリストを許可し、他のすべてをブロックするだけです。実装に関しては、これは Java の知識がほとんどない人にとっては些細な作業です。

元の質問を繰り返しますが、これはハッキングできますか? このようなコード制限にもかかわらず、基になる API へのアクセスを許可する Java 言語構造はありますか?

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

xpath - PMD xpath チュートリアル

Java EE コードベースのカスタム ルールを作成しようとしています。xpath ルールの作成をどこから始めればよいか教えてください。これに利用できる完全なチュートリアルはありますか?

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

python - Pythonでの静的コード分析?

Pythonに推奨できる静的コード分析はどれですか。コードのリファクタリングに役立つと思います。知っている

  • モジュールの依存関係のためのスネークフード
  • 動的コールグラフのpycallgraph
  • バグのピリント

静的コールアナライザーはありますか?カスタムのものをプログラムしたい場合、これが最も簡単な方法ですか?

他にどのような種類の静的コードチェックを考えることができますか?それとも、ABCのようなPythonの魔法でさえありますか?

編集:http://docs.python.org/3.3/library/ast.htmlまたはhttp://www.astroid.org/を使用して、カスタムパーサーをプログラムできることがわかりました。次に、graphvizを使用して、UMLグラフのPlantUMLを視覚化することができます。

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

c# - StyleCop 4.7 で動作するようにソナーを構成する方法

ソナーを StyleCop 4.7 で動作させようとしていますが、いくつか問題があります。

1) Sonar 設定で StyleCop の場所を設定すると、Sonar が実行に失敗し、CI ビルドが失敗します。Sonar は、StyleCop 4.7 の一部としてコンパイルされたアセンブリを見つけることができないようです

2) 4.4 では利用できないバージョン 4.7 で利用可能なルールを取得する方法がわかりません。つまり、バージョン 4.7 で使用できるが、ソナーの品質プロファイルで有効にして優先順位を付けるオプションとして表示されないルールを有効にしたいということです。

C# プロジェクトでソナー分析を実行しようとしていますが、デフォルト バージョンの C# プラグインを使用して正常に実行されます。Sonar のバージョン 2.13.1 を実行しています。どんな助けでも大歓迎です。

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

code-analysis - VisualStudio11ベータ版のコード分析からのCA0503およびCA0505メッセージを修正または抑制するにはどうすればよいですか

非常に単純なプロジェクトでコード分析を実行すると、すぐに「CA0503 IssueRunningCodeAnalysis」および「CA0505IssueRunningCodeAnalysis」違反が発生します。 CA0503のドキュメントページには、「このプロパティは非推奨です。置き換えられるプロパティを使用してください」と記載されています。ただし、置き換えられるプロパティ、エラーの処理方法、またはエラーの抑制方法については示していません。どうやら、これは隠されたMicrosoftルールセットであり、ルールをオフにすることはできません。

CA0505のドキュメントページにも同様に、「置き換えられるプロパティが定義されているため、非推奨のプロパティは無視されます」と記載されています。さらに、「警告CA505は、指定された非推奨のコード分析プロパティと先行するコード分析プロパティの両方にプロジェクトまたはビルド構成ファイルの値が含まれている場合に生成されます。この問題を解決するには、非推奨のプロパティを削除してください。」

ソリューション全体でCA0503またはCA0505のいずれかをテキスト検索しても、何も返されません。ただし、「CodeAnalysisRules」を検索すると、2つのプロジェクトファイルのそれぞれに次の行が見つかります。

<CodeAnalysisRules>-Microsoft.Design#CA2210 </ CodeAnalysisRules>

同様のテキスト検索で、「CodeAnalysisRuleSet」に対応する行が見つかりません。

他の誰かがこれに遭遇し、おそらくこれらのメッセージを修正または抑制する方法を見つけましたか?