CORDEA blog

Android applications engineer

その Activity 、少し長すぎませんか?

Android の Activity や、layout xml, 気をつけていても長くなってしまう場合があります。

そして、特に一人で開発していたりすると、
長すぎることに気づいてもついつい放置してしまいがちです。

ただ、放置すると、多くの場合引継ぎ等に支障をきたします。
layout xml とかあまりに長すぎると補完聞かなくなったりしますしね...

というわけで、
今回は java file や layout xml が指定行数を超えるとビルドが通らなくなる方法を検討してみました。


checkFileLimits() をビルドの際に呼び出すことで
指定行数を超えるとビルドが通らなくなります。

import groovy.io.FileType

class LineLimit {
    void checkFileLimits(base, layoutLimit, javaLimit) {
        def layout = base + "/src/main/res/layout/"
        def java = base + "/src/main/java/"
        checkLimit(layout, layoutLimit)
        checkLimit(java, javaLimit)
    }

    void checkLimit(dir, limit) {
        new File(dir).eachFileRecurse(FileType.FILES) {
            def c = it.text.split("\n").size()
            if (c >= limit) {
                throw new Exception("File exceeds the limit. Number of lines: " + c + ", File name: " + it.name)
            }
        }
    }
}


 

    buildTypes {
        debug {
            def lineLimit = new File(projectDir.absolutePath + "/LineLimit.groovy")
            def sc = new GroovyClassLoader().parseClass(lineLimit)
            def llClass = sc.newInstance()
            llClass.checkFileLimits(projectDir.absolutePath, 499, 999)
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


 

method の呼び出しが美しくないので
ここらへんは groovy, gradle に明るい方に教えていただきたい