2017-05-02 18 views
2

私は最近若いチームの開発実践の向上を手助けし始め、すべてのコミットの前にチェックスタイルを実行するようにしました。残念ながら、それらのコードはエラーで散らばっており、それを実装するスケーラブルな方法は、たびにファイルの小さな部分に対してcheckstyleを実行することだけです。VCSが変更されたファイルに対してのみcheckstyleを実行する方法はありますか?

戦略的には、VCSで修正されたファイルだけにチェックスタイルを実行したかったのです。これを実現するためにグラデーションスクリプトを書いたが、うまくいかないようだ。誰にでもこれを実現させるためのヒントがありますか?

apply plugin: 'checkstyle' 

def getChangedFiles = { -> 
    try { 
     def stdout = new ByteArrayOutputStream() 
     exec { 
      commandLine 'git', 'diff', '--name-only' 
      standardOutput = stdout 
     } 
     return stdout.toString().trim().split("\n") 
    } 
    catch (ignored) { 
     return null; 
    } 
} 

task checkstyle(type: Checkstyle) { 
    configFile file("${project.rootDir}/quality/checkstyle/uncommon-checkstyle.xml") 
    configProperties = [ 
      'checkstyle.cache.file': rootProject.file('build/checkstyle.cache'), 
      'checkstyleSuppressionsPath': file("${project.rootDir}/quality/checkstyle/suppressions.xml").absolutePath 
    ] 
    source 'src' 
    String[] split = getChangedFiles() 
    for (int i=0; i<split.length; i++){ 
     include split[i] 
     println split[i] 
    } 
    exclude '**/build/**' // Exclude everything inside build folders. 
    exclude '**/test/**' // Exclude tests 
    exclude '**/androidTest/**' // Exclude android test files. 
    ignoreFailures = false // Don't allow the build to continue if there are warnings. 
    classpath = files() 
} 

checkstyle { 
    toolVersion '6.19' // set Checkstyle version here 
} 

印刷コマンドは、ファイルの右のセットがgetChangedFiles(によって返される表示されます)と私が含まれているファイルが同様に正確であることを確認するためにチェックしましたが、Checkstyleは、それ自体がその上で実行していないようです。

答えて

0

あなたが実際に望むのは、変更されたファイルで見つかった違反を除外することです。

チェックアウトViolations LibとそのReadmeに記載されているプラ​​グイン。これをオフラインにするプラグインや、プルリクエストと統合するプラグインがあります。

関連する問題