4

私は、StyleCopを扱ういくつかのより些細なコードスタイリングを自動化するリファクタリングツールを作成しています。アドインで実行できるようにしたいことの1つ(開発者がオン/オフできるオプション機能として)は、「使用の整理->削除と並べ替え」機能を自動的に呼び出すことです。これは単純なマクロ呼び出しです。

ただし、私の問題は、ソリューション内のすべての.cs非デザイナーファイルのマクロを調べて再帰的に呼び出すときに、この特定のマクロが実行前にエラーをチェックすることです。構文エラーが発生し、アドインがその機能の呼び出しを開始すると、ファイルごとにダイアログが表示されます。

私がやりたいのは、関数がその場でエラーをチェックするために使用するのと同じ方法を使用し、ダイアログがポップアップする原因となるエラーがある場合は、1回限りの通知をポップアップして呼び出しをスキップすることです各ファイルに。

アドインがエラーリストをチェックできることは知っていますが、「削除して並べ替え」で問題を引き起こすエラーが常にリストに表示されるとは限らないことが何度もあります。リストを空にしてから、「削除して並べ替え」を試してみると、ビルドに問題があることがわかります。次に、ソリューションを構築し、それが失敗してエラーが表示されることを確認します。私が見ている唯一の解決策は、「削除して並べ替え」と同じ機能を使用して事前に確認することです。

「使用の削除と並べ替え」と同じ方法でビルドする前に、コンパイラエラーを検出する方法を知っている人はいますか?

4

2 に答える 2

1

あなたが話しているエラーの種類が正確にはわかりませんが、IntelliSense パーサーが生成するものだと思います。はい、そのパーサーはあまり信頼できません。本格的な C# パーサーを意図したものではありません。コードが不完全でコンパイルできない場合でも、状況依存のヘルプを提供するという、まったく異なる種類の仕事を行うように最適化されています。おそらく次の VS リリースを待つ以外に、信頼性を高めるためにできることは何もありません。

しかし、間違った問題を修正しようとしている可能性があることに気づきました。主な問題は、アドインが、削除してはならないディレクティブを使用して削除しているように見えることです。本当の解決策は、コード分析エンジンを改善して、真の名前空間の依存関係を確実に検出できるようにすることです。IntelliSense が不平を言うことを期待して、どれが重要かを推測しようとしても、顧客を苛立たせるだけです。

于 2010-02-20T11:51:50.327 に答える
0

ハックのように思えますが、誰かがより良い解決策を思いつかない限り、何もないよりはましなので、エラー リストのチェックを使用します。

さらに、「Edit.RemoveAndSort」の呼び出しの周りにタイマーを置いて実験することもできると思います。一定の時間がかかる場合は、RemoveAndSort に問題があるように見えることを示す 1 回限りのダイアログをポップアップし、ユーザーはキャンセルしたい、または少なくとも remove と sort を呼び出さないことを望んでいます。

于 2010-02-24T17:59:32.880 に答える