去年末からVisual Studioは2008 Professional Editionを使用していたのだけど、プレゼントで頂いたのでTeam Systemをインストールしました。で、Team Systemの機能を見ていたら2008からの新機能に
スペル チェックでのカスタム辞書のサポート
クラス、メソッド、およびプロパティ名と同様に、リソース文字列にもスペル チェックを使用できます。カスタム辞書を使用すれば、標準的でない語句のスペル チェックも実行できます。
というのがあるらしい。スペルチェックは嬉しい! のだけど、MSDN Libraryを見てもこれについて全然ふれてないよ。イミフ!
まずスペルチェックは、コード分析の名前指定の規則についてチェックするときに使用されるものみたい。Team System Development Editionにはプロジェクトのプロパティにコード分析タブがあります。
その中でも関連している規則は以下のものだけなのかな。
なんでもかんでもチェックしてくれるのではなく、Publicなフィールドやメソッドなど外に見えるものをチェックするみたいですね。残念。
たとえば次のようなコードを書くと、いずれもPublicなのでチェック対象になります。Katamariは辞書にないので警告が出て、FilenameはFileNameだよと警告がでることが期待されます。
Public Class SampleClass
Public Katamari As String
Public Filename As String
End Class
が、実際にはFilenameの方しか警告されません(他の規則のチェックはオフにしてあります)。
カスタム辞書はおろか辞書についても日本語MSDN Libraryではふれていないようなので、検索したところ Code Analysis Team Blog : New for Visual Studio 2008 - Custom Dictionaries に情報がありました。なるほどー。この記事はカスタム辞書について。記事のリンクから辞書自体についても書いてあります。こちら、New for Visual Studio 2008 - Spelling rules 。
記事の1文を読むと、ライセンス的な理由により英語ベースのVisual Studioしかスペルチェックが有効にならないらしい。なにー! でも上記の結果のように一部有効だし、日本語情報でも辞書について書いてあるし問題ないでしょと良いように解釈。先のコードのKatamariについても警告を出るようにするにはプロジェクトファイル(VBら.vbproj)を開いて、次のように「<CodeAnalysisCulture>en-US</CodeAnalysisCulture>」を追記します。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{E6F6D8D5-7BFB-4C4C-9495-70B9205679EF}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>SampleClassLibrary</RootNamespace>
<AssemblyName>SampleClassLibrary</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<OptionExplicit>On</OptionExplicit>
<OptionCompare>Binary</OptionCompare>
<OptionStrict>On</OptionStrict>
<OptionInfer>On</OptionInfer>
<!-- ↓ -->
<CodeAnalysisCulture>en-US</CodeAnalysisCulture>
<!-- ↑ -->
</PropertyGroup>
プロジェクトを開きなおしてコード分析を再度行うと、警告が増えました。
「Hello_World」や「IsConnected」や「HTTPError」などはきちんと単語に分割してチェックしてくれるのは非常に良いのですが、コメントとPrivateなフィールドやメソッドはチェックしてくれないので奇麗なコード書きには利用できないのが残念です。