というのを作りました。
続きを読む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関連の技術でも細かいこと考えると色々ありますね。
それらも完全に独立して相反するものもなくもないですが、色々組み合わせる可能性もあるので、さらにややこしいですね。
そこについては個人的に詳しくないので、これ以上語りませんというか語れませんが。
続きを読む