swiftコンパイラは-parseable-outputフラグを受け取り、エラーを含む構造化出力を生成します。 wrong.swift
はあなたの例の内容を持っている場合たとえば、私は、以下を参照してください。
> swiftc -g -Onone -parseable-output wrong.swift
1149
{
"kind": "began",
"name": "compile",
"command": "\/Applications\/Xcode.app\/Contents\/Developer\/Toolchains\/XcodeDefault.xctoolchain\/usr\/bin\/swift -frontend -c -primary-file wrong.swift -target x86_64-apple-macosx10.9 -enable-objc-interop -sdk \/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/MacOSX.platform\/Developer\/SDKs\/MacOSX10.13.sdk -g -emit-module-doc-path \/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.swiftdoc -color-diagnostics -Onone -module-name wrong -emit-module-path \/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.swiftmodule -o \/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.o",
"inputs": [
"wrong.swift"
],
"outputs": [
{
"type": "object",
"path": "\/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.o"
},
{
"type": "swiftmodule",
"path": "\/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.swiftmodule"
},
{
"type": "swiftdoc",
"path": "\/var\/folders\/zc\/dp8ptx_10pg8m6pnwpbnjms00000gp\/T\/wrong-bc5f07.swiftdoc"
}
],
"pid": 33440
}
306
{
"kind": "finished",
"name": "compile",
"pid": 33440,
"output": "\u001B[1mwrong.swift:1:21: \u001B[0;1;31merror: \u001B[0m\u001B[1mcannot convert value of type 'Int' to specified type 'String'\n\u001B[0mvar name : String = 12\n\u001B[0;1;32m ^~\n\u001B[0m",
"exit-status": 1
}
しかし、REPLはあなたの表現を解析するための迅速なコンパイラのインスタンスを使用しているが、それは受け入れるための方法を持っていないと、余分な「合格しますそのコンパイラには「フラグ」が付いているので、現時点では、REPLにこの形式のエラーを出させる方法はないと思います。
この機能に興味がある場合は、swift.org JIRAで強化リクエストを提出してください。あなたが冒険しているならば、自分で追加することもできます。このオプションをlldbに渡し、lldbを解析してコンパイラに渡すには、素早いドライバを入手する必要があります。おそらく出力からエラーだけを抽出しなければならないか、あまりにもノイズが多いでしょう。
これは素晴らしい情報です。私は同じ結論に達し、今それが確認されます。 LLDBで動作するようにPythonスクリプトを書くことができると思いますか、またはSwiftソースコードを確実に拡張する必要がありますか? – firedev
lldb Python APIを使用してコンパイルからエラーを取得することはできますが、それらは構造化されていないフォームになります。あなたは手でそれらを解析する必要がないと言ったので、Swiftコンパイラによって生成された構造化されたフォームを利用したい場合は、lldbにそれらを生成する方法を教える必要があります。 –