2017-01-19 5 views
2

私は特定のコンパイラ警告をオフにすることができますが、私のプロジェクト内の単一のファイルに対してのみ可能にしたいと思います。これは可能ですか?Scalaのlintの警告は、グローバルスコープより狭い範囲でオフにしますか?

コンテキストには、adapt-arg警告を生成する外部マクロライブラリを呼び出す単一のソースファイルがあります。

scalacOptions ++= Seq("-Xlint:-adapted-args,_" /*, ... */) 

しかし、これは世界的に警告をオフにして、私はそれらを発生させ、単一のファイルのためにそれをオフにしたい:私は私のbuild.sbtファイルを変更することにより、これらの警告をなくすことができることがわかりました。

私が存在するかもしれないと思った次の可能な解決策のいずれかを探して任意の運を持っていなかった

  • いくつかのプラグマを提供し、私のbuild.sbtファイル
  • で私のプロジェクトで異なるファイル用に別のコンパイルオプションを指定しますコンパイラによって生成された警告を変更するために私のソースファイル内のコメントを変更します。scalastyle:on/offコメントはScalastyleによって認識されます
  • @unchecked
  • のような小さなコード領域の注釈

異なるファイルに対して、または限定されたコード領域でも、異なるリンキングオプションを使用する方法はありますか?

+0

プロジェクトでサブモジュールを指定し、そのファイルを依存関係とともにコンパイルすることができます。メインモジュールへの依存としてサブモジュールを追加します。それは過度のようですが、少なくともあなたは各サブモジュールに異なるオプションを指定することができます。 –

答えて

1

望ましくない警告を除外するカスタムReporterを作成する予定でした。

ファイル名でフィルタリングするのは簡単ですが、おそらくホワイトリストがあります。

エラー/警告APIは、テキストPositionを提供します。 position.lineContentIGNOREまたは​​のような魔法のコメントトークンについても解析するのは簡単でしょう。これはアノテーションほど便利ではありませんが、実装が簡単です。

コンパイラはエラーがあった場合にレポーターにレポーターに尋ねます。

カスタムレポーターが-Xreporter myclassで指定されているか、誰かがsbtプラグインを作成していても驚かないでしょう。

+0

私はscalac 2.11.6を使用しています。 '-Xreporter'は認識されたオプションではありません。 – Sean

+0

そのような不幸なケースでは、警告を発生させる呼び出しを書き換えるマクロを記述します。 'f()'がunadapted呼び出し 'g(1,2,3)'に展開される 'rewrite(f())'は 'g(Tuple3(1,2,3))'に展開されます。拡張されていないマクロ呼び出しに対して警告が出されるかどうかについては問題がありましたが、修正されているかどうかはわかりません。 –

関連する問題