2009-03-06 5 views
10

컴파일 할 때 수천 가지 경고가있는 레거시 Java 코드베이스가 있습니다. 나는이 모든 경고의 근원을 실제로 고치고 싶지만 불행히도 내 회사에서이 옵션을 선택할 수는 없습니다 ("수익을 창출하는 새로운 제품을 만드는 것"과 같은 다른 것들은 담당자에 의해 우선 순위가 높은 것으로 간주됩니다) .javadoc 컴파일 중 경고 (코드베이스 전체)를 어떻게 억제 할 수 있습니까?

이제는 우리의 연속 빌드 서버의 출력에서 ​​실제 오류를 찾기가 쉽지 않은 경우 이러한 모든 경고와 함께 살 수있었습니다. 빌드 서버는 단지 개미 호출을 사용하지만 아무 것도 좋아하지 않지만 지금까지 경고 출력을 막기 위해이 호출을 수정할 수있는 방법을 찾기 위해 어디에서든지 찾을 수 없었습니다.

코드를 살펴보고 @SuppressWarnings 주석을 추가하면 효과가 있지만 모든 경고 소스를 거치고 고치는 것만큼이나 고통 스러울 것입니다. 유사한

<javadoc suppressWarrnings="true" 

라도 모든 경고 메시지 javadoc에 컴파일러가 출력되지 만들기 위해 : 내가 할 수있는 단지 어떤 방법이 있다면 그래서 내가 사랑하는 정말로 것 같습니다. 이 같은 것이 가능합니까 (글로벌 javadoc 경고 비활성화)?

답변

5

개미 작업과 javadoc 도구 모두 자체적으로 경고를 사용하지 않도록 설정할 수있는 방법이 없습니다.

내가 생각할 수있는 가능한 해결 방법은 나머지 빌드와 별도로 개미 호출로 javadoc 작업을 실행하는 것입니다. ant 대신 -logfile 인수를 사용하여 출력을 콘솔이 아닌 로그 파일로 재지 정할 수 있습니다.

6

-quiet 플래그를 사용해보십시오.

+0

바보 같은 질문 :이 플래그를 전달하는 방법을 알고 있습니까? 개미? – machineghost

+0

나는 이런 식으로 시도 additionalparam – anon

+0

으로 생각 : 나는 단지 표준 도크 렛을 Javadoc 툴에 적용되지 -quiet이 작동하지 않습니다 생각 – anon

1

Mark의 대답은 나에게 좋게 들리 겠지만 Cruise Control 연속 빌드 시스템을 사용하지 않는 사람에게는 큰 도움이 될 것입니다. 그러나, 나 같은 사람이 그 시스템을 사용하고 있다면, 다른 방법이 있다는 것을 발견했습니다.

크루즈 컨트롤은 여러 XSLT 스타일 시트를 사용하여 보고서를 조합합니다. 우리의 경우이 스타일 시트에 거주 :

~/applications/cruisecontrol-bin-2.7.3/webapps/cruisecontrol/xsl 

하지만 설치 우리의 설치를하지 않았기 때문에 그 표준 경로 나하지 않을 경우 나도 몰라. 그럼에도 불구하고 설치시 동등한 디렉토리를 찾을 수 있어야합니다. 이 디렉토리 안에는 errors.xsl이라는 파일이 있습니다. 경고를 제거하려면 해당 파일을 두 번 변경해야합니다. 둘 다 기존 규칙을 주석 처리해야합니다.

은 교체 :

<xsl:variable name="total.errorMessage.count" select="count($warn.messages) + count($error.messages)"/> 

로 :

<!--  <xsl:variable name="total.errorMessage.count" select="count($warn.messages) + count($error.messages)"/>--> 
<xsl:variable name="total.errorMessage.count" select="count($error.messages)"/> 

이것은 "오류 수가"실제 오류의 수보다는 오류 + 경고의 수있을 것.

<xsl:template match="message[@priority='warn']" mode="errors"> 
    <xsl:if test="not(starts-with(text(),'cvs update'))"> 
     <xsl:value-of select="text()"/><br class="none"/> 
    </xsl:if> 
</xsl:template> 

로 :

그런 다음, 대체

<!--<xsl:template match="message[@priority='warn']" mode="errors"> 
    <xsl:if test="not(starts-with(text(),'cvs update'))"> 
     <xsl:value-of select="text()"/><br class="none"/> 
    </xsl:if> 
</xsl:template>--> 

이 실제 경고 자체를 숨 깁니다.또는 주석 처리 된 코드를 항상 삭제할 수 있지만 경고를 다시 받기를 원할 경우에 대비하여 파일을 먼저 백업해야합니다. 또한 XSLT는 비 XSLT 마크 업을 무시하므로 완전히 제거하는 것 외에도 경고를 사용하여 다른 작업을 수행 할 수 있습니다. 예를 들어 DIV의 모든 경고를 래핑 한 다음 CSS/Javascript를 사용하여 경고를 "축소"할 수 있습니다 완전히 제거하는 대신

궁극적으로이 솔루션을 직접 발견해야했지만, 여기에 나온 모든 대답은 내가 무슨 일이 일어나고 있는지 이해하는 데 도움이되었습니다. 도움을 주셔서 감사합니다.

0

이전 방금 대답 한 내용에서 약간 더 나은 변형이 있음을 발견했습니다. errors.xsl을 편집하는 대신 buildresults.xsl을 편집하십시오. 이 파일은 주석을 포함

for traditional cc display of only compile errors and warnings 
comment out mode="errors" and uncomment mode="compile" and mode="javadoc" 

당신이 그 의견의 조언 (가 언급 두 줄을 주석하고 언급 한 라인의 주석) 당신이 똑같은 효과를 얻을,하지만 컴파일 오류가 포함로를 따라합니다.

이전 방법보다이 방법이 귀찮은 이유는 무엇입니까? 글쎄 내 생각에 (나는이 테스트를 더 잘 수행해야했지만 게으르다.) 필자의 이전 방법은 컴파일 에러를 먹는다. 이 방법은 그것들을 보존한다.

8

Java 8에서는 javadoc 작업에 additionalparam="-Xdoclint:none"을 추가 할 수 있습니다. (Source)

+0

이 작업을 수행 할 때 나는 여전히 경고를 보지만, 나는 (또한) 고칠 시간이 없다는 99 경고를 보는 것보다 낫다. –

1

요즘 일부 javadoc 비표준 옵션을 사용하면 과도한 오류 및/또는 경고를 피할 수 있습니다. javadoc의 도움말을 확인하십시오 (javadoc -X 실행). 다음과 같은 비표준 옵션을 사용할 수 있어야한다 :

-Xmaxerrs <number> 
-Xmaxwarns <number>    
-Xdoclint:(all|none|[-]<group>) 

-Xmaxerrs-Xmaxwarns-Xdoclint 활성화 또는 javadoc의 코멘트에 문제가 특정 검사를 비활성화 인쇄 경고의 최대 수를 설정 인쇄 오류의 최대 수를 설정합니다.

예를 들어, -Xdoclint:none을 지정하면 javadoc 주석의 대부분의 문제에 대한 특정 검사가 비활성화됩니다. 그리고 -Xmaxwarns 1은 경고의 수를 1로 제한합니다 (나는 -Xmaxwarns 0을 시도했지만 모든 경고를 출력 했으므로 0은 제한이 없음을 의미합니다)