読者です 読者をやめる 読者になる 読者になる

snuffkinの遊び場

IT関係、スポーツ、数学等に関することを、気が向いたときに書いてます。

Play!とIrenkaでRailsみたいなことができるのでは?

ここに刺激的なスクリーンショットも載っているPlay!が素敵そう。実際に動かさないと本当の実力は分からないけど、JavaでRails的なことをある程度実現してくれそう。 Irenkaを利用してPlay!用のIDEを作って、S2JDBCあたりでDBアクセスしたらサクサク開発でき…

Uruma StudioのリポジトリにHackを公開しました

このページでこれまで紹介してきたHackを開発中のUruma Studioのリポジトリに登録しました。現時点ではほとんど未テストですが、要望等あれば検討していきたいと思います。

if条件に固定値true/falseを使用している箇所を検出

あまりないと思いますが、大昔にソースレビューで見つけて、怒りが湧いたときのことを思い出して作ってみました。当時はlog4jもなく、UT用にデバッグモードとIT用のデバッグモードをif(true)/if(false)で切り替えていた不届き者がいて困りました… /** * @whe…

Throwableを継承したクラス生成時のチェック

今日のHack。これまた、某同僚から聞いた困った報告が元ネタです。 時と場合によりけりですが、Throwableを継承したクラスをデフォルトコンストラクタでnewしないで欲しいと思うケースがあります。「スタックトレースだけ出力されても、詳細メッセージが分か…

変数コメントを生成するHack

定型的なコメントを書くのが面倒な方に贈るHack。勢いに乗って実装中に、あなたはpublic変数を宣言したとします。 public String hoge; ↑こんな感じでね。ここで、本当は流れに乗ってどんどん実装したいんだけれど、コメントもつけなくちゃいけないから、コ…

Iterator#hasNextを使わずにIterator#nextを呼び出す、不作法者を検挙するHack

とある同僚から、「hasNextを呼ばずに、nextを使っている部下がいた」との密告を受けました。そんな上司のためのHackです。warnの第二引数はここへのリンクにするとか、貴方のお好みに合わせて変更してください。 /** * @when * invocation.target = {@link …

isDebugEnabledの中でdebugメソッドを呼んでいないコードを検出

つぎは、性能問題をチェックするためのHack。ここに書いてあるHackの変形版です。(直感的にはCategoryの所をLoggerにしたいのですが、Loggerにするとうまく動かないですね) /** * @when * invocation.target = {@link Category#debug(Object)} * except { * …

SuppressWarningsを検出

SuppressWarningsアノテーションを使って、問題を隠しちゃう人のソースをチェックするときに利用するHack。まあ、目新しさはありませんが。 /** * @when * annotation.type <= {@link SuppressWarnings} */ public void found(CtAnnotationInstance annotati…

ウィジット・インジェクションをチェック

Uruma Studio開発中です。 まずは、ソースコードに記述した要素が画面定義と対応しているかチェックする機能を開発中。以前にも書いたように、Irenkaを利用しています。今回はUrumaのウィジット・インジェクションのチェック機能を作ってみました。 Irenka Q…

アノテーション+掟のつづき

こんなことを書いたため、id:y-komoriさんからのお誘いでUruma + Irenkaで物を作ってみることになりました。 双方共に、少数のコアユーザから熱烈な支持をされているプロダクトだと思うので、実際に利用して、紹介していきたいと考えています。今のところ、U…

アノテーション+掟

フレームワーク論の話を見ての思いつき。「アノテーション」のフレームワークは解の一つとして良いと思いますが、実行しないと意図した通りに実装したのか分らない物が多い(「規約」ベースも同様)。特に規模の大きなプロジェクト程、規約通りに作る事にはコ…

クエリの制約に使えるもの

自分用メモ。 クエリに使える制約はマニュアルにないものが、いくつかあるようです。以下のあたりのソースを見ると、いろいろと書いてありそう。 org.ashikunep.irenka.dom.navigator.Navigation org.ashikunep.irenka.query.ir.propertyパッケージ

コンパイル時以外にも実行できたんですね

Irenkaで毎回コンパイル時にHackが動作すると、いろいろ面倒なこともありますが、解決する手段がありました。この方法を使うと普段はHackを適用させずに、一度きり実行させるようなことができます。 パッケージ・エクスプローラー右クリック 「実行」→「実行…

JSR 305って、、、

こういうのってIrenka使えば、比較的易しく実装できるのでは? APT使ったら実装苦しいだろうな…「JSR 305: Annotations for Software Defect Detection」 http://jcp.org/en/jsr/detail?id=305