2017-01-16 1 views
1

コンパイラスイッチまたは一般的に使用されているツール(これはわかりません)を介して可能ですか?変数がmutableキーワード(まだJavaでは存在しません)?Javaコンパイラがすべての変数が最終であると仮定します。

例:

Contract a; // compile error 
Contract b = getContract(id); // ok 
b.doSomething(); // ok 
b = getContract(otherId); // compile error 
mutable int i = 1; 
i++; // ok 

私は、言語はこのようにしているがあることを知っているが、そのようなツールを使用して、会社内のコードのJavaを余儀なくされているが、唯一の選択肢です。

Greetings、 JG。

+1

Googleのerrorproneには、http://errorprone.info/bugpattern/Varのチェックがあります。 –

答えて

1

いいえ、Javaコンパイラに強制することはできません。また、Java以外のキーワード(mutableなど)をJavaソースコードに入れることはできません。互換性のあるJavaコンパイラはこれらのいずれも許可しません。

カスタム注釈を使用して、変更可能なローカル変数を宣言し、スタティックアナライザーを使用して、注釈なしで地元の割り当てを検出することができます。

私は法案に正確に適合するツールを認識していませんが、既存のアナライザーツール、注釈などがある場合もあります。

(CheckStyleのチェックは、あなたが望むものと正確には一致しません)。finalを宣言に追加する場所を教えてくれますが、それはあなたが求めているものではありません。 は、彼らがそのように明示的に宣言されていない場合であってもfinalとしてを扱うこと。)


しかし、私の意見では、これを行うには悪い考えです。

あなたの雇用主は、あなたが使用できる唯一の言語であるJavaを決定しました(間違っているか間違っているか)。この理由の1つは、開発したコードをJavaプログラマーが維持し、強化することができるようにすることです。ゼロ割り当てコードを書くことができるように、珍しい表記法を使用することによって、企業ポリシーが損なわれています。

最高でも、あなたはこれを行うことであなたの同僚にあなた自身を知らせることはできません。

2

CheckStyleスタティックコード解析ツールをご覧ください。また、IDEに統合することもできます。 FinalLocalVariableチェックはあなたのケースのようになります。それらの値を持っていることはありませんローカル変数が変更されたことを

小切手を は、最終的に宣言されています。チェックは、変更されていないパラメータ が最終的に宣言されていることを確認するように設定することもできます。

また、PMDソースコードアナライザがあります。しかし、私はそれを使用したことがないので、何も示唆することはできません。

関連する問題