우리의 Scala 포맷터를 사용해야 하는 이유
- 구조화되지 않거나 정렬되지 않은 Scala 코드 즉시 포맷팅
- 타입, 매개변수, 연산자 주변 간격 수정
- 클래스, 객체, 트레이트, 메서드의 중괄호 스타일 정규화
- 긴 표현식과 메서드 체인에 scalafmt 스타일 줄 바꿈 적용
- `.scala`, `.sc` 스크립트, `.sbt` 빌드 파일 지원
- 코드는 보안 백엔드를 통해 포맷팅됨 – 공유 또는 인덱싱되지 않음
- 노트북, 데스크톱, 태블릿에서 작동하는 반응형 편집기 UI
🛠️ 온라인에서 Scala 코드 포맷하는 방법 for scala-formatter
1. Scala 코드 붙여넣기 또는 로드
📥 Scala 코드를 편집기에 붙여넣거나 `.scala`, `.sc`, `.sbt` 파일을 드래그 앤 드롭하세요. 편집기는 Scala 구문 강조를 적용하여 코드를 빠르게 검토할 수 있게 합니다.
2. "포맷" 클릭
⚙️ **포맷** 버튼을 누르세요. 코드는 HTTPS를 통해 scalafmt 스타일 포매터로 전송되어 의미를 변경하지 않고 공백, 들여쓰기 및 줄 바꿈을 재구성합니다.
3. 결과 검토
🔍 정리된 버전을 원본과 비교하세요. 중괄호, 간격 및 빈 줄이 정규화되어 코드 구조를 더 쉽게 파악할 수 있습니다.
4. 복사 또는 다운로드
📤 포맷된 Scala 코드를 IDE로 다시 복사하거나 커밋, 코드 리뷰 또는 배포 준비가 된 `.scala` 파일로 다운로드하세요.
기술 사양
스타일링 동작 (Scalafmt 스타일)
이 포매터는 일반적인 scalafmt 규칙을 반영하도록 설계되어 현대 Scala 프로젝트에서 관용적인 코드 모양을 유지합니다.
| 측면 | 동작 | 참고 |
|---|---|---|
| 들여쓰기 및 중괄호 | `class`, `object`, `trait`, `def`, `if`, `match`, `for`에 대한 일관된 들여쓰기 | 중첩 제어 흐름과 패턴 매칭을 더 쉽게 읽을 수 있게 합니다. |
| 타입 및 매개변수 간격 | 콜론, 화살표 및 매개변수 목록 주변의 공백 정규화 | 예: `def f(x:Int):String` 대신 `def f(x: Int): String`. |
| 임포트 및 패키지 | 패키지 및 임포트 블록을 구조화하고 정의와 분리하여 유지 | 파일 간 탐색 및 일관성을 향상시킵니다. |
| 빈 줄 | 최상위 정의 주변의 빈 줄 표준화 | 모델, 서비스 및 헬퍼와 같은 논리적 섹션을 분리합니다. |
| 멱등성 | 여러 번 포맷을 실행해도 동일한 결과를 얻습니다 | 스타일 변화 없이 원하는 만큼 자주 재포맷해도 안전합니다. |
Scala 버전 호환성
이 포매터는 Scala 2와 Scala 3 구문 모두를 위해 설계되었습니다.
| 기능 | 지원 | 비고 |
|---|---|---|
| Scala 2.x | ✅ 예 | 암시, 동반 객체, 클래식 for-컴프리헨션과 같은 일반적인 패턴에서 작동합니다. |
| Scala 3 (Dotty) | ✅ 예 | given/using, 확장 메서드, 열거형 및 기타 Scala 3 구문을 이해합니다. |
| SBT 빌드 파일 | ✅ 예 | 빌드 및 의존성 정의에 사용되는 `.sbt` 파일을 포맷합니다. |
지원 입력 및 제한
작은 코드 조각뿐만 아니라 실제 프로젝트 파일에 최적화되었습니다.
| 매개변수 | 제한 / 동작 | 비고 |
|---|---|---|
| 파일 확장자 | .scala, .sc, .sbt | 소스 파일, 스크립트 및 빌드 정의. |
| MIME 유형 | text/x-scala | 구문 강조를 위해 내부적으로 사용됩니다. |
| 최대 입력 크기 | ≈ 2MB 소스 코드 | 매우 큰 생성 코드는 로컬 scalafmt를 통해 포맷하는 것이 더 좋습니다. |
| 인코딩 | UTF-8 권장 | UTF-8이 아닌 콘텐츠는 포맷하기 전에 변환해야 합니다. |
실행 및 안전성
포맷팅은 공개된 타사 서비스 대신 비공개, 보안된 백엔드를 통해 수행됩니다.
| 측면 | 동작 | 비고 |
|---|---|---|
| 전송 | Scala 포맷팅 API에 대한 HTTPS 호출 | 귀하의 코드는 안전하게 전송되며 공개적으로 노출되지 않습니다. |
| 타임아웃 | 요청당 약 25초 | 비정상적인 입력에서 장기 실행되거나 멈춘 포맷팅 작업을 방지합니다. |
| 의미론 | 레이아웃 전용 변환 | 포매터는 공백과 레이아웃만 변경하며 프로그램 로직은 변경하지 않습니다. |
로컬 워크플로우에서 Scalafmt 사용하기
완전한 제어와 저장소 전체 포맷팅을 위해 scalafmt를 설치하고 빌드 또는 CI 파이프라인에 통합하세요:
범용 (sbt를 통해)
프로젝트에 scalafmt 추가
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")sbt 플러그인을 추가하여 sbt 셸에서 scalafmt를 실행할 수 있습니다.
모든 소스 포맷팅
sbt scalafmtAll`.scalafmt.conf`를 사용하여 프로젝트의 모든 Scala 및 sbt 파일을 포맷팅합니다.
CI에서 포맷팅 확인
sbt scalafmtCheckAll파일이 올바르게 포맷되지 않으면 빌드가 실패합니다.
일반적인 사용 사례
백엔드 & FP 서비스
대규모 Scala 백엔드와 FP 코드베이스를 일관성 있게 유지하고 리뷰하기 쉽게 만듭니다.
- Akka, ZIO, Cats Effect 또는 Play 프로젝트 전반에 걸쳐 스타일을 표준화합니다.
- 풀 리퀘스트를 열거나 예제를 공유하기 전에 코드를 정리합니다.
- 대규모 리팩토링 또는 라이브러리 마이그레이션 후 형식을 정규화합니다.
object A{def main(args:Array[String]){println("hi")}}
object A {
def main(args: Array[String]): Unit = {
println("hi")
}
}
Scala 학습 및 교육
간격 논쟁 대신 함수형 개념과 타입에 집중하세요.
- 로직과 패턴을 검토하기 전에 학생 제출물을 자동으로 포맷팅합니다.
- Scala 스타일을 가르칠 때 포맷팅 전/후 예제를 보여줍니다.
- 슬라이드, 문서 및 블로그 게시물을 위한 깔끔한 코드 스니펫을 준비합니다.
빌드 및 도구 스크립트
`.sbt` 빌드 파일과 작은 Scala 스크립트를 깔끔하게 유지하세요.
- 유지보수를 쉽게 하기 위해 sbt 설정과 의존성 블록을 포맷팅합니다.
- 마이그레이션 또는 내부 도구에 사용되는 헬퍼 스크립트를 정리합니다.
❓ Frequently Asked Questions
❓scalafmt란 무엇이며 이 도구는 어떻게 관련되어 있나요?
🔧모든 scalafmt 규칙을 여기서 사용자 정의할 수 있나요?
🌐Scala 3 구문을 지원하나요?
🔒제 Scala 코드가 공개 서버로 전송되나요?
HTTPS를 통해 이 도구 전용의 비공개 포맷팅 백엔드로 전송되며, 공유되거나 인덱싱되지 않습니다. 매우 기밀 또는 독점 코드의 경우, scalafmt을 로컬에서 실행할 수 있습니다.⚙️포맷팅이 제 Scala 프로그램의 동작을 변경하나요?
Pro Tips
저장소에 `.scalafmt.conf` 파일을 유지하여 에디터, CI 및 `sbt scalafmt`가 모두 동일한 스타일을 사용하도록 하세요.
리팩토링 전에 전용 "포맷 전용" 커밋을 실행하여 이후 diff가 공백이 아닌 실제 코드 변경에 집중하도록 하세요.
팀 전체에서 일관된 최대 줄 너비를 사용하여 시끄러운 diff와 충돌하는 스타일을 피하세요.
교육 시, 먼저 지저분한 Scala를 보여준 후 포맷된 버전을 보여 레이아웃이 가독성을 어떻게 향상시키는지 강조하세요.
Additional Resources
Other Tools
- CSS 정리 도구
- HTML 정리 도구
- 자바스크립트 정리 도구
- PHP 정리 도구
- 색상 선택기
- 스프라이트 추출기
- Base64 디코더
- Base64 인코더
- C# 포맷터
- CSV 포맷터
- Dockerfile Formatter
- Elm 포맷터
- ENV 포맷터
- Go 포맷터
- GraphQL 포맷터
- HCL 포맷터
- INI 포맷터
- JSON 포맷터
- LaTeX 포맷터
- 마크다운 포맷터
- Objective-C 포맷터
- Php Formatter
- 프로토콜 버퍼 포맷터
- Python 포맷터
- Ruby 포맷터
- Rust 포맷터
- 셸 스크립트 포맷터
- SQL 포맷터
- SVG 포맷터
- Swift 포맷터
- TOML 포맷터
- Typescript Formatter
- XML 포맷터
- YAML 포맷터
- Yarn 포맷터
- CSS 압축기
- Html Minifier
- Javascript Minifier
- JSON 압축기
- XML 최소화 도구
- HTTP 헤더 뷰어
- PDF 텍스트 변환
- 정규식 테스터
- 검색 순위 확인기
- Whois 조회