問題タブ [cqlinq]
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.
idisposable - 欠落している IDisposable 実装に対する NDepend CQL クエリ
この質問が探しているクエリは、IDisposable の実装に関するすべての小さな問題を見つけるのに十分ではないことを認識していますが、早期警告はすべて重要なので、取得できるものを取り上げます。
IDisposable を実装していないが、実装しているフィールドが 1 つ以上あるすべてのクラスをリストする NDepend の CQL クエリを誰かが思いついたかどうかを知りたいです。バグ (つまり、誰かが IDisposable 実装のフィールド タイプをチェックするのを忘れた)、またはコードの進化 (つまり、どこかのフィールドで使用されるクラスに IDisposable が追加される) によって、クラスがこのクエリの結果リストに含まれる可能性があります。すべての使用状況が更新されることなく後日)。
IDisposable を実装していないすべてのクラスを検索する単純なクエリは次のとおりです。
ただし、これはもちろん、クラスが上記のルールの IDisposable を実装する必要があるかどうかをチェックしません。
誰かそのようなクエリを持っていますか?私はまだCQLに慣れてきているので、この部分はわかりません。
nunit - NUnit で NDepend を駆動する
NUnit を使用して、NDepend を使用して CQL クエリを実行することは可能ですか? NDepend dll を UnitTests ライブラリに含めて、次のようなテストを記述できると便利です。
または似たようなもの。
これにより、Team City との統合が非常に簡単になり、静的解析テストのいずれかが失敗した場合、ビルドは自動的に失敗します。
c# - タイプ属性に対するNDependメソッドのクエリを制限する方法
標準の「メソッドが大きすぎます」クエリの修正バージョンを使用して、NDependに長いメソッドを識別させようとしています。
開発者がほとんど制御できない長いメソッドを報告したくないので、DebuggerNonUserCode
属性とを使用して生成されたコードを除外しますInitializeComponent()
。
残念ながら、生成されたタイプのメソッドも報告されるため、まだいくつかの誤検知が発生します。問題は、型自体にはDebuggerNonUserCode
属性がありますが、メソッドにはないため、生成されているにもかかわらず、出力に含まれていることです。
タイプとメソッド間の結合のようなものを探しています。属性を持たないすべてのタイプを指定して、DebuggerNonUserCode
それらに対してクエリを実行しますが、CQLでこれを表現する方法がわかりません。
一部のアセンブリでは、フルネームで簡単にフィルタリングできますが、残念ながら、一部のアセンブリでは、開発者が作成したタイプと生成されたタイプが混在しています。残念ながら、IsGeneratedByCompiler
この場合も使用できません。
私の質問
properties - NDepend を使用してどのプロパティ ゲッターに副作用があるかを調べるにはどうすればよいですか?
VisualStudio のよくある問題は、プロパティ ゲッターの不思議な呼び出しです。これらに副作用がある場合 (最も一般的な形式はif (foo == null) foo = new foo(); return foo;
)、デバッガーの [ローカル] ウィンドウと [ウォッチ] ウィンドウがブレーク ポイントに到達することなくプロパティを呼び出すという事実により、デバッグ時に予期しない影響が生じる可能性があります。
これには簡単な解決策があります。属性でプロパティにタグを付けるだけです
では、大規模なコード ベースで副作用が発生する可能性のあるゲッターを見つけるにはどうすればよいでしょうか。
NDependは、この種のツールとして最適です。その CQL 言語を使用すると、たとえば、含まれているインスタンスの状態を直接変更するすべてのプロパティを見つけることができます。
これは、フィールドを直接変更する getter のみを検索しますInitialize()
。メソッドを呼び出すなどして間接的に変更する getter を検索するにはどうすればよいですか?
ndepend - CQLを使用して特定のメソッドを実装する型を見つける
NDEpend で組み込みのデッド コード クエリを改良していますが、スタンドアロン プログラム (つまり、Main() エントリポイントを使用) から多くの誤検出を見つけています。
組み込みの未使用の型クエリに次の句があることに気付きました。
のようなものを書くことは不可能ですか?
代わりは?それは私が本当に選びたいものです。
ndepend - NDependでCQL結果を公開する
NDependプロジェクトにいくつかのカスタムCQLがあり、NDepend.Console.exeを使用してこれらのCQLの結果を生成したいと思います。レポートを生成すると、カスタムCQLの結果がレポートに表示されません。Visual NDependからエクスポートできますが、スクリプトからNDepend.Console.exeを使用したいと思います。蟻。
code-analysis - NDependカウント、平均など。レポート...集計。可能?クリーンな回避策?
巨大なコードベースがあり、ローカル変数が多すぎるメソッドだけで226個のメソッドが返されます。この巨大なテーブルがxml出力にダンプされて乱雑になることは望ましくありません。可能であれば、トップ10が欲しいのですが、本当に必要なのは、トレンドとエグゼクティブの要約を実行できるようにするためのカウントです。これを行うためのクリーン/効率的/スケーラブルでハッキーでない方法はありますか?
ndependタスクの代わりに実行可能タスクを使用でき(マージが自動化されないようにするため)、クラッターがマージされないことを想像します。次に、それらのファイルを手動で操作して要約を取得しますが、より短いパスがあるかどうかを知りたいですか?
ndepend - ndepend と cppdepend の CQL を使用して、リビジョン間のメトリックの変化を確認する
CQL を使用すると、CodeWasChangedのメソッドを簡単に見つけることができますが、メトリクスも比較する必要があります。変更されたコードを見つけて、改善されたかどうかを確認したいと考えています。
混合コード ベースのndependとcppdependを評価しています。私は両方に非常に感銘を受けました。特に、cppdepend が従来の c++ と最新の c++ にうまく対応しているようです。
これを行う方法を考え出すことができれば、必要なことはすべて CQL 内で行うことができますが、それ以外の場合は、レポートを外部で結合するなどのことを行う必要があります。そのため、フォールバックとして CQL からのレポート生成の自動化と比較に関するヒントをいただければ幸いです。VisualCppDepend または VisualNDepend 内で CQL を使用すると、メトリクス ビューでクエリの結果を確認できるので、明らかに満足です。結果のライブ調査は、他のツールと比較して、これらのツールで重要です。
CodeWasChanged および IsInOlderBuild のような他の句に関するコメントは、CQLを古いビルドに対して強制的に実行することを示しています。これは、リビジョン間でクエリを機能させることができないことを示唆しています。
私が望むクエリの種類は、構文を想像するようなものです。
バージョン間で動作するように一般化
または多分
design-patterns - MVVMパターンを検証するためのNDependでのCQLの構築
静的分析によってC#コードのいくつかのデザインパターンを検証したかったのです。NDependを使用してこれらを確認したいと思います。アプリケーションはMVVMデザインスタイルで構築されているため、検証したい一般的なデザインパターンは次のとおりです。1。View-ModelクラスにはDependencyProperties(WPF要素)がなく、Viewレイヤーでのみ表示されます。2.ビューレイヤーはIDisposableなどを実装しないでください
これらの詳細をキャプチャするためにCQLでクエリを作成しようとしましたが、クラスが属するレベルとそのプロパティを確認する必要があるため失敗しました。ネストされたクエリはまだCQLでサポートされていないことを理解していますが、NDependでこれらの詳細をキャプチャする方法はありますか?どういうわけか、複数のクエリの結果をキャプチャして、それらの交差を実行できることを望んでいますか?
よろしくお願いします、ショーン
ndepend - 現在、nDepend と CQL を使用して、派生型のクラスを直接使用してクラスを要求することは可能ですか?
多くの質問と投稿を読んで、サブクエリ/ネストされたクエリ/クエリ構成が次のバージョンまでサポートされないことを確認しました。ただし、それが必要かどうかはわかりません。頭の中でそのように書きますが、物事を複雑にしている可能性があります。
みたいに想像する
したがって、私がやりたいのは、型が接尾辞 Proxy を持つ特定の名前空間で他の型を直接使用しているかどうか、およびプロキシ型が SoapHttpClientProtocol から派生していることを確認することです。タイプがプロキシ タイプを直接使用している場合は、警告が通知されます。
提案、ヒント、ヒント、ポインター、または回答はありますか?