2013-03-08 8 views
9

私のプログラムの通常の静的解析の一環として、クラスには本物のtoString()メソッドがある可能性があります。おそらく、すべてのクラスがそれらを実装しているとは限りませんが、おそらく具体化できる具体クラスではObjectの実装がtoString()です。JavaクラスがtoString()を実装していることを確認してください。

これをチェックするリントツールキットはありますか?私が現在使っているのはFindBugsとCheckStyleです。私はそれらのいずれかを使用して確認する明白な方法を発見していません。私はまた、私のリントスイートにPMDを追加することを検討していて、Sonarの何かにも開いています。だから私は既にツールチェストのツールを使用してそれを行うことを好むだろうが、私はそれを考慮する別のツールを追加する必要がある場合。

+1

私はCheckStyleを使用してカスタムルールを作成します。良いルールのように聞こえます。オープンソースコードベースに貢献するべきです。 – Bohemian

+3

ああ、もっとルール!それはストリップクラブのようなものです。 – irreputable

答えて

4

あなたはCheckstyleはRegexpチェック使用してこれを行うことができます。

<module name="Regexp"> 
    <property name="format" value="public\s+String\s+toString\s*()"/> 
    <property name="message" value="All classes must implement toString()"/> 
    <property name="ignoreComments" value="true"/> 
</module> 

をこれでも存在していないとして、コメントアウトされたtoString()方法を認識しています。私はCheckstyle 5.6とeclipse-csを使って試しましたが、以前のバージョンでも動作するはずです。

+0

これはかなり近く、ありがとうございます。クラスが完全にサービス可能な 'toString()'(例えば 'AbstractList'から)を継承しているケースはカバーしませんが、私が必要とするものである可能性があります。 –

関連する問題