3

ST-4.0.7.jar を使用しており、テンプレートは次のようになります。

backtrack_result(btresult) ::=<<
    <backtrack-result>
        <pattern id="$btresult.pattern.id$">$btresult.pattern.description$</pattern>
        <file>$btresult.file.file.path$</file>
        <line>$btresult.codeline.lineNr$</line>
        <method>$btresult.codeline.method.name$</method>        
    </backtrack-result>
>>

ただし、出力ファイルを調べると、

<method></method>

BTResult で:

public CodeLineInterface getCodeline() {
    return cl;
} 

コードラインで:

public MethodInterface getMethod() {
    return method;
}

メソッドで:

public String getName() {
    return name;
}

getMethod メソッドのコードライン オブジェクトにブレークポイントを設定しましたが、呼び出されません。したがって、どういうわけか、stringtemplate には正しいゲッターの解決に問題があると結論付けています。

STErrorListener を追加し、ST が次のエラーをスローすることを発見しました。

STReportGenerator  - context [/report /backtrack_results /backtrack_result] 5:19 no such property or can't access: ju.no.need.toknow.BTResult.method
Caused by: org.stringtemplate.v4.misc.STNoSuchPropertyException: no such property: ju.no.need.toknow.BTResult.method
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.throwNoSuchProperty(ObjectModelAdaptor.java:106)
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.lookupMethod(ObjectModelAdaptor.java:99)
    at org.stringtemplate.v4.misc.ObjectModelAdaptor.getProperty(ObjectModelAdaptor.java:67)
    at org.stringtemplate.v4.Interpreter.getObjectProperty(Interpreter.java:1158)

これについて特に困惑しているのは、テンプレートが btresult を取得する必要があると言っているのに、なぜ BTReult.method に解決しようとするのかということです。コードライン .method.name ?

4

1 に答える 1

2

わかった。それは私自身の愚かさでした.テンプレートを修正しましたが、コードは実際には古いテンプレートを使用していたため、すべての修正が機能しないように見えました. OSI レイヤ 8 の問題 ;-)

于 2013-03-06T12:27:24.130 に答える