過去の担当者が全員いなくなっているプロジェクトを保守したときのお話。
おそらく当初はandroid.util.Log
(以下Log
表記)で運用されていたが、どこかで誰かがTimberを導入したのでしょう。自分の担当した部分だけに。
TimberとLog
が共存するとどうなるかというと、Log
すべてに黄色波線が引かれます。
前述の通り、このプロジェクトはLog
から始まったプロジェクトのため、圧倒的にLog
の方が多いため波線がいたるところに引かれていました。これではコード中にノイズが多く、コードリーディングの効率が下がってしまいます。
というわけで方法を探しました。
Lint自体をオフにする
Log
の存在確認自体をオフにする方法です。
有効にTimberを利用できていればLog
の置換漏れを発見できなくなるメリットはありますが、今回は正常化させる工数的余裕がないので無視します。
Preferences | Editor | Inspections
の「Logging call to Log instead of Timber」のチェックを外して適用すれば波線は引かれなくなります。
@SuppressLint()
を利用する
Log
が含まれているメソッドor関数にアノテーションを付与する方法です。
@SuppressLint("LogNotTimber")
fun foo() {
Log.d("bar")
}
これで波線は引かれなくなります。
お気持ち
Android Studioが提案してくるので紹介しましたが、個人的には好きでない方法です。理由としては
- 各メソッドor関数に全て記述する必要がある
- 例外を握りつぶしているのと同じ。致命的な見逃しが起こりうる
の2点です。面倒くさい上にトラブルの種を埋めることはしたくないので基本的にやりません。
おわりに
他にやり方があれば知りたいです。たとえばプロジェクトごとに特定のLintをオフにする方法とかがあれば。
最後に一言、
既存部分に影響のあるライブラリを追加する場合はきっちり全て対応するか、あきらめて既存の方法に従え!
ありがとうございました。