2012. 7. 18. 09:09 IT

배경 : gradle의 pmd plugin은 rule파일을 제대로 인식하지 못하고, csv 형태의 report파일 생성을 지원하지 않음.


해결책 : ant pmd task를 호출.


// apply plugin: 'pmd'


configurations {

    pmd // for code inspection

}

dependencies {

    pmd group:'pmd', name:'pmd', version:'4.2.5'  

}


task pmd << {

def ruleFilePath =  "..... /pmd-rule.xml";

ant.mkdir(dir:project.reporting.baseDir)

def reportFile = project.reporting.baseDir.toString() + "/pmd_" + new Date().format("yyyy-MM-dd") +".csv"

def excludesFiles = "*/test/**,*/sample/**,**/*Test*.java";

def includeDir = "*/src/**";

def checkDir = "../..";


ant.taskdef(name: 'pmd', classpath:configurations.pmd.asPath, 
             classname:"net.sourceforge.pmd.ant.PMDTask" );

ant.pmd( rulesetfiles: ruleFilePath,
failonerror: false,
maxRuleViolations: 9999,
shortFilenames: true){
formatter(type: 'csv', toFile:  reportFile)
fileset(dir: checkDir, includes: includeDir, excludes: excludesFiles)
};
}

기타 : 각각 프로젝트별로 pmd report를 만들고 병합하려고 했지만... 귀찮아서 통으로 돌리고 skip. 

posted by smplnote