-
Notifications
You must be signed in to change notification settings - Fork 0
MS_FxCop
- 戻る(テスティング・フレームワーク)
-
ビルド出力のアセンブリが分析対象
-
基本的に Microsoft が提供する
「クラス ライブラリ開発のデザインガイドライン」
に基づいてアセンブリを分析する。 -
アドバイスを盲目的に適用するのは危険
-
チェックルールのカテゴリ
- デザイン(設計)
- グローバリゼーション(国際化対応)
- インターオペラビリティ(相互運用性)
- モバイル
- 命名規約
- パフォーマンス
- ポータビリティ(移植性)
- セキュリティ
- セキュリティ透過性
- 語法・使用法
補足(「盲目的に適用するのは危険」): この注意は重要で、
FxCop の指摘には文脈に依存するものが多く含まれる。
例 指摘内容 実際には CA1062 引数の null チェックを要求 internal な呼び出しでは冗長になることがある CA1707 識別子にアンダースコアを使わない テストメソッド名では慣習的に使う CA1305 IFormatProviderを明示内部処理では不要なことも多い CA2007 ConfigureAwait(false)を要求ASP.NET Core では不要(同期コンテキストが無い) したがって、ルールを取捨選択し、
採用したものは CI でビルド失敗として扱うというのが正しい運用になる
(全部を警告のまま放置すると、誰も見なくなる)。
補足(最新化:.NET アナライザーへ): FxCop の系譜は
以下のように移り変わっている。
世代 名称 分析対象 〜2019 FxCop( FxCopCmd.exe/ VS 統合)ビルド後のアセンブリ(IL) 2019〜2020 FxCop アナライザー( Microsoft.CodeAnalysis.FxCopAnalyzers)ソースコード(Roslyn) 2020〜 .NET アナライザー(SDK に同梱) ソースコード(Roslyn) 現在は .NET SDK に標準搭載されており、
<PropertyGroup> <EnableNETAnalyzers>true</EnableNETAnalyzers> <AnalysisLevel>latest</AnalysisLevel> <AnalysisMode>Recommended</AnalysisMode> </PropertyGroup>のように
.csprojで有効化する(net5.0以降は既定で有効)。
ルール ID(CA1062など)は FxCop 時代から引き継がれている。アセンブリ(IL)ではなくソースを見るようになったことで、
- ビルドしなくても、入力中にリアルタイムで警告が出る
- Code Fix による自動修正ができる
- クロスプラットフォームで動く
という利点が生まれた。
一方、第三者から提供されたアセンブリだけを検査する用途は
失われている(旧 FxCop 独自の利点だった)。
補足(現在の静的解析の全体像): .NET では以下が併用される。
種類 例 観点 コード品質 CA**(.NET アナライザー) 設計・性能・セキュリティ コード スタイル IDE**(.NET SDK 同梱) 書式・言語機能の使い方 書式ルール SA**(StyleCop.Analyzers) 空行・順序・コメント セキュリティ **CA2100 系 / SonarQube / CodeQL 脆弱性 すべて
.editorconfigで重大度を一元管理でき、
dotnet build/ CI で同じ結果になる。
脆弱性検査については
Webアプリケーション脆弱性対策も参照。
-
コードの自動チェック・ツールは両刃の剣 | 日経 xTECH(クロステック)
http://tech.nikkeibp.co.jp/it/free/NT/WinColumn/20040715/1/ -
FxCop とカスタムルールを使って .NET コードの
品質を監視する (1/2):CodeZine(コードジン)
https://codezine.jp/article/detail/582 -
Windows 7.1 SDK に FxCop 10 が同梱される
https://www.infoq.com/jp/news/2010/06/FXCop-10 -
FxCop(.NET のプログラミングチェック) | ネスケラボ
https://blog.nextscape.net/research/dotnetenv/fxcop -
コード分析の概要 | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/code-analysis/overview
Tags: 移行, テスト, デバッグ, .NET開発, ツール類, ドキュメンテーション, CI
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。