Android Studio のログにソースコードへのリンクを表示する

概要

Android Studio のログ出力にソースコードへのリンクを表示する方法です。

目次

確認環境

  • AndroidStudio 3.5.2
  • Kotlin 1.3.50

参考情報

解説

Android Studio のログ出力では、クラス名.メソッド名(ファイル名:行数) の形式で表示したときにソースコードへのリンクが有効になります。 Logcat, Instrumentation Test の実行ログでリンクが有効になることを確認しています。

fun printLinkToCode(tag: String) {
    val clazz = object {}::class.java
    val enclosingClassName = requireNotNull(clazz.enclosingClass?.name)
    val enclosingMethodName = requireNotNull(clazz.enclosingMethod?.name)

    val stackTrace = Thread.currentThread().stackTrace
    val indexOfThisMethod = stackTrace.indexOfFirst {
        it.className == enclosingClassName && it.methodName == enclosingMethodName
    }

    val caller = stackTrace[indexOfThisMethod + 1]
    Log.i(tag, "${caller.className}.${caller.methodName}(${caller.fileName}:${caller.lineNumber})")
}