[java] Java 코드의 특정 섹션에 대해 Eclipse 코드 포맷터를 끄는 방법은 무엇입니까?

Java 문자열로 작성된 SQL 문이있는 Java 코드가 있습니다 (OR / M 불꽃은 피하십시오. 내장 SQL은 내 결정이 아닙니다).

유지 관리를 쉽게하기 위해 SQL 문을 의미 적으로 여러 줄의 코드로 연결된 여러 문자열로 나누었습니다. 따라서 다음과 같은 대신 :

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

나는 다음과 같은 것을 가지고있다 :

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";

이 스타일을 사용하면 특히 큰 쿼리의 경우 SQL을 훨씬 쉽게 읽고 유지 관리 할 수 ​​있습니다 (IMHO). 예를 들어, 편집기를 “덮어 쓰기”모드로 설정하고 텍스트를 제자리에서 상당히 쉽게 수정할 수 있습니다.

이 문제는 특정 SQL 예를 넘어 일반화됩니다. 세로 형식, 특히 표 형식으로 작성된 코드는 예쁜 프린터에 의해 손상 될 수 있습니다.

이제 일부 프로젝트 멤버는 Eclipse 편집기를 사용하고 전체 소스 파일을 형식화 할 때 시맨틱 형식이 종종 소멸됩니다.

형식화와 관련하여 Eclipse에 특정 소스 행을 무시하도록 지시하는 방법이 있습니까?

Eclipse 포맷터를 토글하는 특수 주석과 같은 것을 찾고 있습니다. 이상적으로 이러한 주석은 원하는대로 구성 할 수 있으며 다른 포매터도이를 존중하도록 프로그래밍 할 수 있습니다.

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING

물론, 하나의 “솔루션은”우리 팀 구성원이 같은 일부 외부 포맷을 표준화하는 것입니다 고물 또는 JIndent ,하지만이 질문은 (또한이 프로젝트에 대한 나의 결정)에 대해 무엇 아니다 : 내가 특별히 방법을 찾고 있어요 임시로 Eclipse 포맷터를 사용하지 마십시오.

이상적으로 솔루션을 사용하면 Eclipse를 사용하여 팀 구성원이 IDE 재구성을 수행하지 않아도 Eclipse 포매터에 대한 지침을 삽입 할 수 있습니다 (포맷터 무의미한 명령 주석 선택 가능 : STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING).



답변

Eclipse 3.6에서는 다음과 같은 특수 주석을 배치하여 형식화를 해제 할 수 있습니다.

// @formatter:off
...
// @formatter:on

Eclipse 환경 설정에서 켜기 / 끄기 기능을 “켜기”로 설정해야 Java > Code Style > Formatter합니다. 에 클릭 Edit, Off/On Tags활성화 Enable Off/On tags.

환경 설정에서 마술 문자열을 변경할 수도 있습니다 . 여기서 Eclipse 3.6 문서를 확인하십시오 .

추가 정보

Java
>
Code Style
>
Formatter
>
Edit
>
Off/On Tags

이 환경 설정을 사용하면 포맷터를 비활성화 할 태그 하나와 포맷터를 활성화 할 태그 하나를 정의 할 수 있습니다 (포맷터 프로파일의 Off / On Tags 탭 참조).

여기에 이미지 설명을 입력하십시오

또한 플래그를 활성화해야합니다 Java Formatting


답변

포맷터의 Eclipse 3.5 M4의 AFAIK에는 “줄 바꾸기 안 함”옵션이있어 사용자 줄 바꿈을 유지합니다. 어쩌면 그것은 당신이 원하는 것을 할 것입니다.

그렇지 않으면이 추악한 해킹이 있습니다.

String query = //
    "SELECT FOO, BAR, BAZ" + //
    "  FROM ABC"           + //
    " WHERE BAR > 4";


답변

SO에 대한이 답변을 참조하십시오 .

특정 블록 주석의 서식을 억제하는 데 사용할 수있는 또 다른 솔루션이 있습니다. 사용 /*-블록 주석의 시작에서 (하이픈 주), 당신은 파일의 나머지를 포맷하면 포맷이 영향을받지 않습니다.

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

출처 : Oracle의 설명서 .


답변

서식을 끄는 대신 이미 줄 바꿈 된 줄을 결합하지 않도록 구성 할 수 있습니다. 지터의 응답과 유사하게 다음은 Eclipse STS입니다.

속성 → Java 코드 스타일 → 포맷터 → 프로젝트 특정 설정 사용 또는 작업 공간 설정 구성 → 편집 → 줄 바꿈 (탭) → “이미 줄 바꿈 된 줄을 조인하지 마십시오”확인

저장하고 적용하십시오.

여기에 이미지 설명을 입력하십시오


답변

포맷터 태그를 추가하는 기능을 설정해야합니다. 메뉴 표시 줄에서 다음으로 이동하십시오.

Windows

Preferences
Java

Code Style

Formatter

언론 Edit버튼을 누릅니다. 마지막 탭을 선택하십시오. 켜기 / 끄기 상자를 확인하고 확인란을 사용하여 활성화하십시오.


답변

줄의 시작 부분에 더하기 부호를 넣으면 형식이 다릅니다.

String query = 
    "SELECT FOO, BAR, BAZ" 
    +    "  FROM ABC"           
    +    " WHERE BAR > 4";


답변

포맷터가 SQL 문자열 들여 쓰기를 엉망으로 만드는 것을 피하기 위해 고정 너비 문자열 부분 (공백으로 채워짐)을 사용하고 있습니다. 이것은 혼합 된 결과를 제공하며 SQL에서와 같이 공백이 무시되지 않지만 도움이 될 수있는 곳에서는 작동하지 않습니다.

    final String sql = "SELECT v.value FROM properties p               "
            + "JOIN property_values v ON p.property_id = v.property_id "
            + "WHERE p.product_id = ?                                  "
            + "AND v.value        IS NOT NULL                          ";