warnings-as-errors がオンになっていると、次のような C# コンパイラ メッセージが表示されます。
File.cs(3,1415): error CS1572: Warning as Error: XML comment on 'FooLibrary.Foo.Foo()' has a param tag for 'foo', but there is no parameter by that name
type errorではなくtype warningerrorformat
としてマークしたいと思います。
私はすでに次のような値を持っていますerrorformat
:
%f(%l\\,%c):\ %trror\ %m^M
%f(%l\\,%c):\ %trror\ %m
( . ^M
_ _\r\n
\n
これが私が最初に試したことです:
%f(%l\\,%c):\ error\ %m: %tarning\ as\ Error:\ %m^M
%f(%l\\,%c):\ error\ %m: %tarning\ as\ Error:\ %m
Vim は、1 つの文字列内で複数回出現する を処理できないという事実を嘆いていました%m
。
それで、アサーションを組み込んだ珍しい正規表現に夢中になり始めました。これが私が試したものです:
%f(%l\\,%c):\ error\ %\\(%[A-Z0-9]%#:\ %tarning\ as\ Error:\ %[%^^M]%#%\\)%\\@=%m^M
%f(%l\\,%c):\ error\ %\\(%[A-Z0-9]%#:\ %tarning\ as\ Error:\ %[%^^M]%#%\\)%\\@=%m
これはうまくいきませんでした。タイプ「C」(おそらく「CS1572」から)とメッセージ「W」(%t
消費する必要がある値)を取得します。(他のいくつかの実験では、 を省略して%t
、アサーション内の残りの文字列を消費する必要があることが判明しました。さもなければ、%m
その時点で の一致を停止しました。非常に奇妙です。)
それらを正規表現グループとして扱っているのではなく、むしろ独特の直線的な方法で扱っていることに気づき、アサーションを逆にしてみましたが、次のようになりました。
%f(%l\\,%c):\ error\ %\\(%m^M%\\)%\\@=%[A-Z0-9]%#:\ %tarning\ as\ Error:\ %.%#^M
%f(%l\\,%c):\ error\ %\\(%m^M%\\)%\\@=%[A-Z0-9]%#:\ %tarning\ as\ Error:\ %.%#
残念ながら、これらも失敗し、「警告」ではなくタイプ「C」を取得し、(最終的にはメッセージをそのまま取得しますが)^M
文字列の末尾に を残します。
errorformat
コマンド内で考えられる可能性を使い果たしました。この問題を解決する可能性のあるものは他にありますか、それとも別のスクリプトを実行してラップし、フォーマットを Vim が処理できるものに変換する必要がありますか?
(クイックフィックスリストに「エラー」ではなく「警告」という単語を取得するためのすべてです。悲しいですね。)