Gradle의 Findbugs 결과를 표준 출력으로 내보내기
이런 느낌:
Findbugs의 결과를 보는 것이 어렵습니다.
보고서를 보는 방법은 다음과 같습니다.
그리고 귀찮은 느낌.
Intellij IDEA의 findbugs 플러그인 시스템은 gradle과 함께 작동하지 않으므로 이야기하지 않습니다.
왠지 다른 gradle 플러그인과 달리 표준 출력해 주는 기능이 없다. Findbugs 플러그인에는 이러한 리포터가 있습니다.이 현재 작동하지 않습니다 :
이전 Findbugs의 CLI 옵션 이었습니까?
어쨌든, 사용할 수 있어도 리포터는 1개 밖에 선택할 수 없기 때문에, 전술한 2. 의 문제가 또 나온다. 다르다.
모두 이것 뭐하는 거야. . . 다른 IDE라면 더 현명한 플러그인이 있을까.
너무 힘들어서 어떻게 했는지
findbugs를 라이브러리로 읽으면 XML 파서도 온다 같기 때문에 Findbugs 실행 후 XML을 구문 분석하여 표준 출력으로 토출하는 기능을 썼습니다.
build.gradle
import edu.umd.cs.findbugs.SortedBugCollection
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.code.findbugs:findbugs:3.0.1'
}
}
apply plugin: 'findbugs'
// ... other settings
// print findbugs results to console
task printFindbugsResults << {
[findbugsMain, findbugsTest].forEach {
printFBXml it.reports.xml.destination
}
}
printFindbugsResults.mustRunAfter findbugsMain, findbugsTest
check.dependsOn printFindbugsResults
def printFBXml(File xml) {
if (!xml.exists()) return
def bugs = new SortedBugCollection()
bugs.readXML(xml)
def msgs = bugs.collect { bug ->
def srcLine = bug.primarySourceLineAnnotation
// ※1 バグ個別の出力フォーマット
"""\
|# ${bug.type}
|${srcLine.className}:${srcLine.startLine}:${srcLine.endLine}
|${bug.abridgedMessage}
|${bug.bugPattern.detailPlainText.trim()}
""".stripMargin().trim()
}
if (msgs.isEmpty()) return
logger.error """\
|===
|${msgs.join("\n---\n")}
|===
""".stripMargin().trim()
}
코멘트의 ※1 의 근처가 출력 형식이 되므로, BugInstance 이나 SourceLineAnnotation 의 프로퍼티를 바라보고 적당하게 변경합시다.
드디어 :
System.setProperty('org.gradle.color.error', 'RED')
글을 쓰면 처음의 거리의 외형이됩니다.
사실은 출력색 지정은 gradle 의 logger 와는 별도로 하는 편이 좋을지도.
Reference
이 문제에 관하여(Gradle의 Findbugs 결과를 표준 출력으로 내보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_ui/items/c9b6789ec1b41e0a5060텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)