概要
最近Visual Studio Codeをエディタとして使ってFortranを書いています。この記事などを参考に設定を済ませ、概ね快適に書けるようになりました。記事の内容通りModern FortranとFORTRAN IntelliSenseの拡張機能を使用しています。
ところが、
i = 21/2
などと書いた際、
Integer division truncated to constant '10' at (1) [-Winteger-division]
のように警告が出ます。要するに整数除算の警告ですが、C言語などでもおなじみの仕様であり、このとき書いていたパラメータ設定に使うという明確な用途の上でいちいち警告として残ると煩わしいと感じました。
というわけで、この警告に限り拡張機能の上で無視してもらう設定を行います。
環境
- macOS Big Sur 11.6
- GNU Fortran (Homebrew GCC 11.2.0) 11.2.0
- VSCode:1.62.2
- Modern Fortran v2.3.0
結論
settings.json
に
"fortran.linterExtraArgs": [
"-Wall",
"-Wno-integer-division"
]
を追加します。
仕組み
Modern Fortranは、Featuresに
Code linting based on gfortran to show errors wiggles in your code
とあるように、gfortranの機能でLintingを行います。これにユーザー設定を加えられるようにするため、fortran.linterExtraArgs
という設定項目があります。
If you want to pass extra options to the gfortran executable or override the default one, you can use the setting fortran.linterExtraArgs. By default -Wall is the only option.
とあるように、引数をリスト形式で与えれば実行時にそれが追加されます。
デフォルトで指定されている-Wall
はWarning allで、すべてのあり得る項目に警告を出します。つまりこれによってLintingを実行できています。
これに対し、-Wno-[warning-name]
を指定すると、warning-name
の警告は出なくなります(参考)。先程の整数除算の警告は
Integer division truncated to constant '10' at (1) [-Winteger-division]
だったので、-Wno-integer-division
を引数に指定し、警告を無視しているというわけです。
応用すれば好きな警告を無視できますが、むやみに設定すると警告の意味がないので程々にすべきだと思われます。