読者です 読者をやめる 読者になる 読者になる

Makopy'5 La6

スマホアプリ開発とかその周辺のこととか関係ないこと。または恋は言ってみりゃボディー・ブロー

(Xamarin.Forms)Warningを無効化する

Warningの無効化

Warningの取り扱いについては、個人やプロジェクトの単位でいろんなポリシーがあると思います。
WarningをErrorと見なすような厳しいポリシーもあれば、100以上ものWarningが放置されているプロジェクトを見かけることもあります。
それらの是非についてはここでは触れません。
どれにもそれなりの理由や背景があると思います。
是非はともかく、Warning無効化の方法について触れたいと思います。

Xamarin.FormsでのWarning無効化

以下、CS0618というWarningを例とします。
いずれの方法も、コード CS0618から、「CS」を除いた番号の部分を使用します。
0618でもよいし、618でもOKです。

CS0618については、こちら。
Compiler Warning (level 2) CS0618

プロジェクト全体で無効化

  • コンパイラ設定で警告無視対象に含める
    • (Visual StudioとXamarin Studioでは具体的な画面や設定項目名が異なります)

ファイル単位で無効化

  • ファイル冒頭でdisable

局所的に無効化

  • Warningを回避したい箇所をdisableとrestoreで囲む

Xamarin Studioでの困りごと

筆者の個人的な開発環境はMac OS上のXamarin Studioです。
この記事を書いている時点では、
Xamarin Studio Community 6.2.1(build 3)
を使用しています。

上記環境では、以下のような困りごとがあります。

  • エラー出力のWarning表示はリアルタイムではない
    • エディタ上はリアルタイムにWarning箇所に波線でアンダーライン表示される
    • エラー出力でのWarning表示はビルド完了時に反映される
      • ここまでこないとコードが分からない…。
  • コンパイラの[警告を無視]のリストに番号を設定した場合、エディタ上の表示はWarningとして表示されたまま

Xamarin.FormsでのWarning

Xamarin.Formsでの開発は、スマホアプリ開発です。
スマホアプリの開発となると避けられない問題として、
「どこまで古いOSバージョンに対応するか?」
というのがあります。

古いOSをサポート対象に含めている場合、どうしてもOSバージョン分岐して古い形式での実装を残さざるを得ないことがあります。
今回例に出したCS0618を引き起こすケースのひとつです。
Warning無効化に安易に頼らずに解決するの努力は必要ですが…。
どうしてもの場合はあれこれ考えるよりは、「局所的に」潰してしまうのがいいと思っています。
もちろん、動作的に問題がないことの確認が取れていることは大前提になります。

個人的なWarningに対するポリシー

個人的なWarningに対するポリシーは、
「不必要なWarningは出すべきでないし、Warningは放置しない」
です。

何か込み入った問題が起きた時に、Warningがあれば疑ってみたくなります。
その時に100も200もWarningが放置されていると困りますね…。
また、そのような状態からでは、新たなWarningが埋もれやすくなるなど、見通しの悪さを生み出します。
簡単に潰せるWarningはもちろん放置せず、どうしても消えないWarningは無効化で対応できれば対応するのが、個人的な流儀です。