問題タブ [checker-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
245 参照

java - チェッカー フレームワークの type.invalid エラーを回避するには?

作成したライブラリがあり、Checker Framework NullnessChecker を導入してそのコードを検証した後、(予想どおり) コンパイルに失敗しました。明らかなエラーはすべて修正しましたが、これは修正方法がわかりません...

問題のある関数のシグネチャは次のとおりです。

そして、エラーが発生した呼び出しサイト:

チェッカーにこれを受け入れさせる方法を誰か教えてもらえますか? 私には正しいコードのようです。

編集

エラー:

0 投票する
1 に答える
1694 参照

java - Gradle 依存関係へのパスを Java コンパイラに渡す

私は Checker Framework で遊んでいますが、そのアノテーション プロセッサには、型アノテーションを JDK クラスに追加できるように、「アノテーション付き JDK」jar へのパスを渡す必要があります。

したがって、Gradle に必要なことは、jar へのパスを取得し、それを Java コンパイラに渡すことです。

通常、Gradle では非常に単純です。

resolveAnnotatedJdkタスクを実行するとうまくいきます!

compileJava問題は、構成ブロック内で動作させることです:

compileJavaブロックは構成であり、依存関係が解決される前に実行されるため、これは機能しません。

runFirstオプションをブロックに追加しようとしましたが、うまくいくようです:

しかし、私はそれを適切な方法で行っていないと思います。本当にハックのようです。

これを改善する方法を知っている人はいますか?

0 投票する
1 に答える
360 参照

checker-framework - チェッカー フレームワーク: デフォルト コンストラクターで警告を抑制

オブジェクトを適切に初期化する通常の ctor と、初期化フィールドの警告を生成する Hibernate 用の 2 番目のデフォルト ctor の 2 つのコンストラクターがあります。警告を取り除くための好ましい方法は何ですか?

0 投票する
0 に答える
449 参照

java - Checker Framework が -AskipUses 引数を無視しているようです

私は自分のプログラムに注釈を付け始め、nullness 注釈を書き始めました。ガイドラインに従って、クラスの 1 つに注釈を付け、 としてマークしました@AnnotatedFor({"nullness"})。このプログラムは、Oracle JDK 1.7.u21 を使用して Java 7 プラットフォームでコンパイルされています (技術的な制限により、JDK 8 に切り替えることはできません)。このクラスは、ナノ化されていないサードパーティ (Google Guava) および JDK ライブラリ メソッドの束を使用するため、次のように Maven コンパイラ プラグイン引数に-AskipUses=...とともにオプションを含めます。-AuseSafeDefaultsForUnnanotatedSourceCode

クラスのソースコード:

プロジェクトをビルドすると、次のようなエラーが発生するため、チェッカーは「スキップ」オプションを無視しているようです

38 行目に進みます。

または 39:

または 38 再び:

-AskipUses=などなど・・・オプションを使って解消したつもりだったのですが、色々なチェッカーエラーでログがオーバーフローしてしまいました。

私は何か間違ったことをしていますか?

UPD 07.12.2015: クラスの完全なソース コードを添付しました。UPD 14.12.2015: ソース コードが更新されたため、ケースの再現がはるかに簡単になりました。

0 投票する
1 に答える
550 参照

java - Checker Framework と一緒にカスタム注釈プロセッサを使用する

モジュールの1つに、他のモジュールで使用されるカスタム注釈用のいくつかの注釈プロセッサが含まれているマルチモジュールmavenベースのプロジェクトに取り組んでいます。注釈プロセッサ モジュールの依存関係を他のモジュールに追加すると、そのモジュールの注釈はそれらの注釈プロセッサによって処理されます。

しかし最近、Checker Framework (型アノテーション用) を統合したところ、すべてのカスタム アノテーション プロセッサ (前述) が機能しなくなりました。それらを Checker Framework でも動作させる方法についてのアイデアは大歓迎ですか?


シナリオをクリアするには、

module_A という名前の Maven モジュールがあるとします。このモジュールには、"@FoodItem" という注釈 (クラス レベル) があります。「@FoodItem」アノテーションが付けられたクラスは「Food」インターフェースを実装する必要があるというルールを適用する必要があります。そこで、同じモジュール (module_A) に注釈プロセッサ「FoodItemAnnotationProcessor」を記述しました。これは、そのようなクラスを処理し、その規則への準拠をチェックします。

次に、module_A への maven 依存関係を持つ module_B という名前の別のモジュールがあるとします。このモジュールには、"@FoodItem" アノテーションが付けられた "Pizza" というクラスがあります。

上記の構成でプロジェクト (module_A と module_B を含む) をビルドすると、「FoodItemAnnotationProcessor」がコンパイル段階で実行され、上記のルールに対してクラス「Pizza」が検証されます。

その後、Checker フレームワークを module_B に統合しました (ここで説明したように)。その後、チェッカー フレームワーク関連の検証はコンパイル時に期待どおりに実行されますが、「FoodItemAnnotationProcessor」は機能しなくなりました。