Posts

Showing posts from 2011

FxCop Integrator 3.0.0 Preview 1 をリリース

FxCop Integrator 3.0.0 Preview 1 をリリースしました。 このバージョンは FxCop Integrator 2.0.0 RTW を VS11 Developer Preview で使えるようにしたものです。 CodePlex のプロジェクトサイト からダウンロードできます。

FxCop Integrator 2.0.0 RTW をリリース

昨日 (2011/12/4)、ようやく FxCop Integrator 2.0.0 RTW をリリースできました。   FxCop Integrator 2.0.0 RTW には、下記のような新機能を実装しました。 Code Metrics PowerTool によるメトリクス測定のサポート MSBuild タスクの提供 デザイナコードや自動生成コードに対する警告をフィルタリングして表示しない機能 コード分析結果のレポーティング (CSV 形式) 複数プロジェクトのコード分析のサポート ファイルレベルのコード分析のサポート “SuppressMessage” 属性を簡単に付加できるようにする機能のサポート その他、色々と機能改善やバグ修正をしています。   FxCop Integrator 2.0.0 RTWは ここ からダウンロードできます。

FxCop Integrator 2.0.0 RC 版をリリース

Image
FxCop Integrator 2.0.0 の RC 版をリリースしました。 CodePlex のプロジェクトサイトからダウンロード できます。 RC 版では 11/11 にリリースしたベータ版に加えて、以下のような機能を追加しました。     MSBuild タスクの提供 MSBuild のコード分析カスタムタスクを提供しました。Visual Studio からオンデマンド実行する時と同じように、コード分析設定ファイル (CodeAnalysisConfiguration.xml) を読み込み、全く同じロジックでコード分析を行います。 MSBuild タスクは FxCop Integrator をインストールするための VSIX ファイルとは別に、独立したインストーラで提供しています。つまり、Visual Studio がない環境にもインストールできます。CI 環境に MSBuild タスクだけインストールし、デイリービルド時に FxCop Integrator と同じ設定でコード分析を行わせることも可能です。   MSBuild タスクをインストールすると、%PROGRAMFILES%\MSBuild\FxCop Integrator\FxCopIntegrator.targets が作成されます。プロジェクトファイルに <Import Project="$(PROGRAMFILES)\MSBuild\FxCop Integrator\FxCopIntegrator.targets" /> を追加してターゲットファイルをインポートし、MSBuild のパラメータに /p:FxCopCmdPath= FxCopCmd.exe のパス /p:EnableCodeInspectionOnBuild=true を指定すれば、ビルド後にコード分析が実行されます。 ちなみに /p:MetricsPath=Metrics.exe のパス /p:EnableCodeMetricsCalculationOnBuild=true を指定すると、コードメトリクス計測も実行できます。   FxCop Integrator 2.0.0 Beta 2 の「ビルド時のコード分析」機能も、内部的な仕様が変わります。

GAE に配置した Servlet が動かなくてしばらく困っていたけどようやく解決

Image
ちょっと GAE/J を使って作りたいものができたので、JDK 1.7.0 + Eclipse 3.7.1 が入ってる PC に GAE SDK 1.6.0 を入れてみました。   ちょちょいとサンプルアプリケーションを作ってローカルでは動かすことができましたが、GAE にデプロイしてみると Servlet が動かず、こんなエラーを返して来ました。 Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it. GAE の管理コンソールからログを見てみると、こんな例外が。 Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@1fc468e{/,/base/data/home/apps/s~sasaminn-gae-sample/1.354956893975889229} org.mortbay.util.MultiException[java.lang.UnsupportedClassVersionError: sasa/gae_sample/Gae_sampleServlet : Unsupported major.minor version 51.0] … UnsupportedClassVersionError とか言っているので GAE SDK のヘルプ を見てみたところ、 Google App Engine では、Java 5 と Java 6 がサポートされています。App Engine 上で実行される Java アプリケーションは、Java 6 仮想マシン(JVM)と標準ライブラリを使用して動作します。 とのこと…。1.6 用にコンパイルしないとダメなのね…。   JDK のダウングレードとかしたくなかったので、何とかできる方法がきっとあるはずと思って探してみたら、

アセンブリをロードせずに完全名を取得する

ここ最近 FxCop Integrator のコード分析と同じ動作をする MSBuild タスクを作り、ビルド実行時にカスタムタスクを呼び出してコード分析を走らせられるようにしていました。 そこで悩まされたのが、 一度ビルドするとプロジェクト参照しているアセンブリをロックしてしまい、次回以降参照先プロジェクトがビルドできなくなる という現象。調べてみるとどうやら Assembly.LoadFrom() でアセンブリをロードしているのが問題のようでした。   バージョン 1.4.0 の頃、アセンブリ参照エラーでコード分析が実行できないという障害報告をいくつかもらっていたので、FxCop Integrator 2.0.0 にはアセンブリ参照エラーが発生したら、アセンブリ参照の解決を行ってコード分析をリトライする機能をつけました。 これが実際どう動いているかというと、 コード分析実行のタイミングでプロジェクトの参照設定のリストから、参照している全てのアセンブリのパスを取得する 参照先の各アセンブリの完全名を取得し、完全名をキー、パスを値としたハッシュテーブルに格納しておく。 アセンブリ参照エラーが発生したら、エラーメッセージから参照できなかったアセンブリの完全名を取得して、上記のハッシュテーブルからアセンブリのパスを探し出し、そのアセンブリも参照するようにしてコード分析をもう一度やり直す。 ということをやっています。   上記の 2 のところでアセンブリの完全名が必要なので、Assembly.LoadFrom() でアセンブリをロードして完全名を取得しているのですが、どうもこれがよくない模様。Visual Studio から起動された MSBuild で動いているカスタムタスクがアセンブリをロードすると、それがずっとメモリ上に常駐してしまう (結果的にアセンブリファイルがロック状態になる) らしいのです。   アセンブリ参照エラーの自動リカバリは捨てたくないので、別 AppDomain にロードして完全名だけ返してもらって AppDomain をアンロードするとか、アセンブリのバイナリデータを自力で解析して完全名を取得するとか色々考えたのですが、実は簡単に解決する方法がありました。 それが AssemblyName.GetAssemblyNam

FxCop Integrator 2.0.0 ベータ版をリリース

Image
FxCop Integrator 2.0.0 のベータ版をリリースしました。 CodePlex のプロジェクトサイトからダウンロード できます。 FxCop Integrator は Visual Studio 2010 (Pro 以上) に FxCop を統合して、Premium や Ultimate で実装されている「コード分析」と同じように実行できるようにする、Visual Studio の拡張機能です。コマンドラインオプションの細かい設定などを意識せず、VS2010 から簡単に FxCop が実行できます。また、分析結果のフィルタリングや FxCop のルールの詳細を表示する機能も実装しています。 バージョン 2.0.0 では、コードメトリクスを測定する Visual Studio Code Metrics Power Tools 10.0 のサポートの他、ユーザから提案されたいくつかの新機能を実装しています。 Visual Studio Code Metrics Power Tools 10.0 の統合 FxCop Integrator 2.0.0 では、Permium や Ultimate で実装されている「コードメトリクス」機能のコマンドライン版、Visual Studio Code Metrics Power Tools 10.0 もサポートしました。FxCop と同じように、ソリューションエクスプローラのコンテキストメニューから簡単に実行させることができます。 実行すると、FxCop の結果と同じようにコードメトリクス測定結果の一覧が表示されます。もちろん、フィルタリングや該当のソースコードをフォーカスする機能もサポートしています。 FxCop と Metrics の両方をサポートしたので、コード分析を実行するメニューを複数に分割しました。 [Code Analysis] : FxCop と Metrics を両方同時に実行します。 [More Tasks…] > [Inspect XXX] : FxCop のみを実行します。 [More Tasks…] > [Calculate Metrics] : Metrics のみを実行します。 Metrics を使うつもりがない場合は、バー

テスト

テスト