問題タブ [fxcop]
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.
c# - StyleCop と FxCop のルールは相互に除外されます
コードを改善するために StyleCop と FxCop ツールを使用していますが、StyleCop と FxCop の 2 つのルールが存在する場所に行き着きました。StyleCop のルールに一致するようにコードを修正すると、FxCop の検証が失敗し、その逆も同様です。
最初のルールは StyleCop の SA1200 で、すべての using ディレクティブは名前空間内に配置する必要があると述べています。
すべての using ディレクティブは、名前空間内に配置する必要があります。
だから私はこのようなことをしました
StyleCop では問題ありませんでした。警告はなくなりました。ここで FxCop 検証を実行すると、CA1014 に違反していることがわかります。
'MyApp.dll' を CLSCompliant(true) でマークします。これは、外部から見える型を公開するためです。
これを解決するには、次のようにする必要があります。
ClsCompliant
しかし、属性が認識されないため、プロジェクトをビルドできません( のSystem
中に含まれる名前空間からのものであるためMyNamespace
)。したがって、using System;
ディレクティブをMyNamespace
宣言の外に移動すると。これにより、コードがコンパイルされますが、StyleCop のルールが破られます。
StyleCop または FxCop のルールの 1 つを無効にする以外に、この問題に対処する方法はありますか? それが不可能な場合、どのルールを無効にする必要がありますか? 重要度が低いのはどれですか?
c# - プロパティゲッター/セッターがLinkDemandを必要とする場合、どうすればFxCopをなだめることができますか?
クラスバーにプロパティFooがあります。
両方GetFoo
とSetFoo
で飾られています:
その結果、FxCopは、Fooプロパティ(または暗黙のgetterメソッドとsetterメソッド)に同じLinkDemandがないことを正しく不平を言います。
CA2122:Microsoft.Security:'Bar.Foo.get()'は、LinkDemandを持つ'Bar.GetFoo()'を呼び出します。この呼び出しを行うことにより、「Bar.GetFoo()」は間接的にユーザーコードに公開されます。セキュリティ保護を回避する方法を明らかにする可能性のある次のコールスタックを確認します。
SecurityPermission
ただし、この警告を修正するために同じ属性をプロパティに適用しようとすると、プロパティがこの属性の有効なターゲットではないことがわかりました。
このFxCop警告を適切に修正するにはどうすればよいですか?
編集:Eric Lippertのコメント「なぜ地球上LinkDemand」に応答するには?
- 管理されていないコードのアクセス許可のためのLinkDemandを持つMarshal.GetIUnknownForObjectを使用して関数を作成しました。
- CA2122に文句を言ったFxCopを実行しました
- 私はエラーが何を意味するのか、そしてそれを解決する方法についてのヒントを探してCA2122をグーグルで検索しました
- 最初のグーグルヒットで、LinkDemandを使用してエラーを解決するというMichealFanningのアドバイスを見ました
私の正気を疑うように思われるあなたの反応を読んだ後、私はすぐにファニングのアドバイスが私の場合には当てはまらないと思いました。DemandとLinkDemandの記事を見て、代わりにDemandを使用してみます。
fxcop - 分析ツールがリファクタリングを適用しないのはなぜですか?
私は現在、 fxCopとNDependを頻繁に使用していますが、レポートが生成する「間違った」1アイテムを目にし続けており、なぜこれらのツールが提案されている修正を行うことができないのでしょうか?
解決するのが非常に難しいものもありますが、フィールドを読み取り専用としてマークする必要があるようなものは、ツールが持つ情報を使用して非常に簡単に適用できます。ただし、私にとっては、ツールに移動し、アイテムを見つけてコードを配置することなどを意味します...最小のアイテムでもかなりの時間がかかります。
CodeRush Xpressが一部のリファクタリングで行うのと同じように、各変更を確認する必要があれば幸いです。
これらのツールがこれを行わない理由はありますか?
1間違いはここでは相対的です。なぜなら、ネーミングに関するすべての fxCop エラーの 1700 クラスのようなものは悪いコードではありませんが、新しい開発者がコードに取り組むのを難しくするからです。
visual-studio - VS プロジェクト ファイルから直接 FxCop を実行する
プロジェクト用に個別の MSBuild ファイルを作成せずに、.csproj ファイル自体でターゲットとして呼び出すことにより、開発環境の各 VS .csproj ファイルで FxCop を実行するように設定することに興味があります。これは
私の.csprojファイルの最後に何らかの方法で含まれていることは可能ですか?
.net - FxCop コマンド ラインとスペースを含むパス
スペースを含むパスを指定すると、FxCopコマンド ラインが機能しなくなります。はい、引用符を適切に使用します。
FxCop は、/r スイッチに渡されたパスについて不平を言います。FxCop ガイダンスに従ってパスを引用しています。これは、/d スイッチを介してパスを渡すときにも発生します。他の誰かが同様の問題を抱えていましたか?cmd を使用するかPowerShellを使用するかは問題ではありません。
vb.net - アイテムが自動生成されるときにソースでFxCopを除外するにはどうすればよいですか?
例えば:
「メンバーの署名にジェネリック型をネストしないでください」というメッセージを表示します。イベントのデリゲートを保持する変数であるCurrentChangedEventで、VBはそれを自動的に生成します。
アイテムのルールを抑制するにはどうすればよいですか?
c# - fxcopでカスタムルールが表示されない
fxcopのカスタムルールを開発しようとしています。
私はこのコードを持っています:
私はこのxmlを持っています(Rules.xmlという名前で、ビルドアクションを埋め込みリソースに設定します)
コンパイルしてfxcopを実行し、このdllを使用してルールを追加します。
「マイルール」フォルダは表示されますが、ルールはありません...
私は何が欠けていますか?
よろしくお願いします。
c# - カスタム FxCop ルールの単体テスト
カスタム fxrules をテストしたいと思います。
しかし、fxcop の最新バージョンでは動作しません。Microsoft.Cci.Method.GetMethod が存在せず、代替手段が見つかりません。
Microsoft.FxCop.Sdk.Method オブジェクトを取得する方法を知っていますか?
助けてくれてありがとう。よろしくお願いします、