Visual Studio 2017 + .NET Framework 4.7でC# 7.0を使った開発で、複数の値のペア(2組以上もOK)を一度に扱える「Value tuple(バリュータプル)」を用いた場合、コードチェック用ツール「StyleCop」がシンタックスエラーを返してしまうようです。
SA0102 : CSharp.CsParser : A syntax error has been discovered in file C:\Work*****
このことはGitHubのStyleCopでもIssueとして報告されています。
ValueTupleやTupleでは、複数の値を用意した場合、特に指定しなければそれぞれの要素は「Item1、Item2……」というようなプロパティが自動で作られるのですが、ValueTupleではこのいまいちなプロパティに独自で名前をつけることができます。この「命名機能」を使うとStyleCopが「そんな書式は知らん!」とシンタックスエラーを吐くみたいで。
とりあえずこれ自体はスルーしちゃってもC#の記法としては問題無いのですが、残念ながら現バージョンのStyleCopはここでエラーが出ると、それ以降のチェックを投げ出して終了してしまうようです。なので、ValueTupleのエラーを無視するにしても、いったんは名前無しでItem1、Item2といった味気ないバージョンに変更すればStyleCopも知ってる書式としてスルーしてくれるようです。このとき、括弧だけの書き方ではなく、以下のようにValueTupleと明記しないと同じエラーが出ます。
// メソッド戻り値として使う場合…… // StyleCopに叱られる書き方1 private (string message, int errorCode) GetErrorInfo() // StyleCopに叱られる書き方2 private (string, int) GetErrorInfo() // StyleCopに叱られない書き方 private ValueTuple<string, int> GetErrorInfo()
この「叱られない書き方」に書き換えて、StyleCopを再実行しないと全体のコードチェックが実行されません。案外、他にも書式エラーがたんまりあって、単にそれが通知されていないだけ、ってケースがあるのでご注意を。
参考まで。
- 作者: Bill Wagner,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2018/02/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
C# 7.0 Pocket Reference: Instant Help for C# 7.0 Programmers
- 作者: Joseph Albahari,Ben Albahari
- 出版社/メーカー: O'Reilly Media
- 発売日: 2017/07/28
- メディア: ペーパーバック
- この商品を含むブログを見る