Java 코드의 특정 섹션에 대해 Eclipse 코드 포맷터를 끄려면 어떻게 해야 합니까?
Java 문자열로 작성된 SQL 문이 있는 Java 코드가 있습니다(OR/M Flamewar는 사용하지 마십시오. 임베디드 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을 훨씬 쉽게 읽고 유지 관리할 수 있도록 합니다.예를 들어 편집기를 "덮어쓰기" 모드로 전환하여 텍스트를 쉽게 수정할 수 있습니다.
이 문제는 SQL의 특정 예제를 넘어 일반화되어 있습니다.세로 포맷으로 작성된 코드, 특히 표 형식의 구조는 예쁜 프린터에 의해 파괴될 수 있습니다.
현재 일부 프로젝트 구성원은 Eclipse 편집기를 사용하고 있으며 전체 소스 파일을 포맷할 때 의미적 포맷이 종종 파괴됩니다.
포맷과 관련하여 특정 소스 라인을 무시하도록 Eclipse에게 지시할 수 있는 방법이 있습니까?
이클립스 포메터를 바꾸는 특별한 코멘트를 찾고 있어요이러한 코멘트는, 델이 선택하는 대로 설정할 수 있는 것이 이상적입니다.또, 그 코멘트를 존중하도록 다른 포메터도 프로그래밍할 수 있습니다.
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
한 가지 "솔루션"은 팀원들이 Jalopy나 JIndent와 같은 외부 포맷터로 표준화하는 것입니다.그러나 이 질문에 대한 내용은 아닙니다(또한 이 프로젝트에 대한 저의 결정은 아닙니다).특별히 이클립스 포메터를 임시로 피할 방법을 찾고 있습니다.
이상적인 솔루션은 Eclipse를 사용하는 팀원이 IDE 재구성을 수행할 필요 없이 Eclipse 포메터에 대한 명령을 삽입할 수 있도록 합니다(포메터에 의존하지 않는 명령어 코멘트 선택 제외).STOP-ECLIPSE-FORMATTING
→STOP-FORMATTING
를 참조해 주세요.
Eclipse 3.6에서는 다음과 같은 특별한 설명을 추가하여 포맷을 해제할 수 있습니다.
// @formatter:off
...
// @formatter:on
Eclipse 환경설정에서 켜기/끄기 기능을 "켜야" 합니다.를 클릭하여 활성화 합니다.
기본 설정에서 마법 문자열을 변경할 수도 있습니다. 여기에서 Eclipse 3.6 문서를 확인하십시오.
상세 정보
Java > Code Style > Formatter > Edit > Off/On Tags
이 프리퍼런스에서는 디세블로 하는 태그와 포메터를 이노블로 하는 태그를 각각 정의할 수 있습니다(포메터 프로파일의 [Off/On Tags]탭 참조).
또한 플래그를 활성화해야 합니다.
포메터의 Eclipse 3.5 M4의 AFAIK에는 사용자 라인 분리를 보존하는 "Never Join Lines" 옵션이 있습니다.어쩌면 그게 네가 원하는 걸지도 몰라
아니면 이 추악한 해킹이 있어
String query = //
"SELECT FOO, BAR, BAZ" + //
" FROM ABC" + //
" WHERE BAR > 4";
특정 블록 주석의 형식을 사용하지 않도록 하는 데 사용할 수 있는 다른 솔루션이 있습니다./*-
(하이픈에 주의)를 표시하면 나머지 파일을 포맷해도 포맷에는 영향을 주지 않습니다.
/*-
* Here is a block comment with some very special
* formatting that I want indent(1) to ignore.
*
* one
* two
* three
*/
출처: Oracle 문서.
포맷을 해제하는 대신 이미 랩된 행을 결합하지 않도록 구성할 수 있습니다.Jitter의 답변과 마찬가지로 Eclipse STS에 대해 설명하겠습니다.
속성 → Java Code Style → Formatter → 프로젝트별 설정 활성화 또는 작업영역 설정 구성 → 편집 → 줄 바꿈(탭) → "이미 줄 바꿈된 줄 바꿈 안 함" 확인
저장, 적용.
포메터 태그를 추가하는 기능을 켜야 합니다.메뉴바에서 다음 위치로 이동합니다.
Windows → Preferences Java → Code Style → Formatter
버튼을 누릅니다.마지막 탭을 선택합니다.[On/Off] 상자에 주목하고 체크박스로 활성화합니다.
행의 선두에 플러스 기호를 붙이면, 다음과 같이 형식이 다릅니다.
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 ";
대체 방법:Eclipse 3.6에서는 "줄 바꿈"과 "일반 설정" 아래에 "이미 줄 바꿈된 줄 바꿈 안 함" 옵션이 있습니다.즉, 포메터는 긴 줄을 줄바꿈하지만 이미 가지고 있는 줄바꿈은 취소하지 않습니다.
@xpmatteo는 코드의 일부를 무효로 하는 것에 대한 해답을 가지고 있지만, 이것에 가세해 디폴트 이클립스 설정은 파일 전체가 아닌 편집된 코드의 행만을 포맷하도록 설정할 필요가 있습니다.
Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Lines
이렇게 하면 동료들이 실제로 변경하지 않은 코드를 다시 포맷하고 있기 때문에 처음부터 이러한 일이 발생하지 않습니다.이것은 소스 컨트롤의 diff를 무효로 하는 사고(작은 형식의 설정 차이로 인해 파일 전체가 다시 포맷되는 경우)를 방지하기 위한 좋은 방법입니다.
또한 태그 켜기/끄기 옵션이 꺼져 있는 경우에도 다시 포맷할 수 없습니다.
팬텀 코멘트, 추가//
새로운 라인이 필요한 곳, 훌륭합니다!
@formatter: off 는 코드의 참조를 에디터에 추가합니다.내 생각에 그 코드는 절대 그런 참조를 가지고 있어서는 안 된다.
팬텀 주석(//)은 사용된 형식 지정 도구에 관계없이 작동합니다.Eclipse, InteliJ, 어떤 에디터를 사용하든 상관없습니다.이것은 매우 좋은 구글 자바 포맷에서도 동작합니다.
팬텀 코멘트(//)는 어플리케이션 전체에 적용됩니다.Javascript도 가지고 있고 JSBeautifier 같은 것을 사용하고 있는 경우.Javascript에서도 비슷한 코드 스타일을 가질 수 있습니다.
사실 포맷하고 싶겠죠?혼합된 탭/공간과 후행 공백을 제거하려고 합니다.코드 표준에 따라 줄을 들여쓰려고 합니다.당신이 원하지 않는 것은 긴 줄이다.팬텀 코멘트가 주는 건 그것뿐이에요!
그다지 예쁘지는 않지만 기본 설정과 첫 번째 줄에서도 작동합니다.
String query = "" +
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
이 해킹은 다음과 같습니다.
String x = "s" + //Formatter Hack
"a" + //
"c" + //
"d";
포메터를 사용하지 않는 것이 좋습니다.나쁜 코드는 인위적으로 좋은 것이 아니라 나쁜 것으로 보여야 합니다.좋은 코드는 시간이 걸립니다.품질을 속일 수는 없습니다.포맷은 소스 코드 품질의 일부입니다.
언급URL : https://stackoverflow.com/questions/1820908/how-to-turn-off-the-eclipse-code-formatter-for-certain-sections-of-java-code
'programing' 카테고리의 다른 글
Vue SSR/Episerver 솔루션에서의 코드 분할 (0) | 2022.07.12 |
---|---|
자동 리픽서를 테일윈드CSS 및 그리드섬과 연동시키는 방법 (0) | 2022.07.12 |
Java에서 바이트 배열을 Base64로 변환하려면 어떻게 해야 하나요? (0) | 2022.07.12 |
C에서 .csv 파일을 읽습니다. (0) | 2022.07.12 |
Eclipse의 Java 컴파일러는 같은 코어의 랩퍼에 불과합니까? (0) | 2022.07.12 |