scalafix ruleの作り方の例

https://discord.com/channels/1124331179580084406/1124334001507794994/1255004192993443910

ちょうどいい(?)ネタがあったので、これを例に作ってみます。

既にどこかに存在するのかどうか?は知りません。 (大抵、よほど複雑でなければ数分で書けるので、探すより書いた方が速いので、大体調べずに雑に書くことが多い)

続きを読む

独自scalafixのruleを同じsbt project内部に置く際の設定方法

個人的に、すごい細かい使い捨て含めるとおそらくもう1000個くらいはrule書いたことあるので、おそらく現状では日本一scalafix rule書いていると思うのですが、 慣れるとそのくらい気軽に書けてすぐ役に立って便利なので、既存の他人が書いたruleを使うだけではなく、独自に書くことを強くすすめていきたいです。

しかし、それにあたって、sbtのproject構成が思ったより面倒なので、それの解説をします。

続きを読む

特定の型の値を捨てていたら警告やエラーにするscalafixやwartremoverでのlinter

Scala標準に

-Wvalue-discard などがありますが、自分が知る限り、これはすごく細かく制御できるわけではなく、全てを警告します。

$ scala -Wvalue-discard
Welcome to Scala 2.13.14 (OpenJDK 64-Bit Server VM, Java 11.0.23).
Type in expressions for evaluation. Or try :help.

scala> def f = { 2 ; "a" }
                 ^
       warning: a pure expression does nothing in statement position; multiline expressions might require enclosing parentheses

しかし

続きを読む

わざわざsbt-native-packager経由でdocker imageを作る唯一の大きな利点

みなさんはsbtで作ったものを、(単にライブラリとしてではなく全部まとめて)本番環境にデプロイしたりする場合、どういう形式にしてますか?

最近・・・でもないですが、このあたりの選択肢は色々あるというか、sbtやScalaに限らない話なので、 広く捉えればJVM独自のものでも色々あったり(例えばgraalやjlinkやjibなど?)、Docker関連の技術でも細かいこと考えると色々ありますね。

それらも完全に独立して相反するものもなくもないですが、色々組み合わせる可能性もあるので、さらにややこしいですね。

そこについては個人的に詳しくないので、これ以上語りませんというか語れませんが。

続きを読む