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.