/scalafmt

Code formatter for Scala

Primary LanguageScalaApache License 2.0Apache-2.0

scalafmt

Build Status Build status Join the chat at https://gitter.im/olafurpg/scalafmt Latest version

Head over to the user docs for instructions on how to install scalafmt.

Quick help

  • Run all unit tests: sbt test
  • Run only formatting tests: core/testOnly org.scalafmt.FormatTests.
  • Write new formatting test: read this doc.
  • Build docs: sbt readme/run will create the docs, which you can open with open readme/target/scalatex/index.html. Docs are built with Scalatex.
  • Hack on IntelliJ plugin: see this doc.
  • Hack on scalafmt: see tutorial.
  • Hack on SBT plugin: run sbt scripted.
  • Run jmh benchmarks: ./bin/run-benchmarks.sh.
  • Run formatter on millions of lines of code: core/test:runMain org.scalafmt.ScalafmtProps (slow, and requires a lot of memory/cpu)
  • Debug performance: after each test run in FormatTests, a flamegraph report like this one is generated in target/index.html. I usually keep a browser tab open at localhost:3000/target/index.html along with this background process: browser-sync start --server --files "target/*.html". See Browsersync.
  • intellij/compile:compileIncremental failed? Run downloadIdea to download custom IntelliJ plugin. The download may take a while.

Tutorial

If you'd like to find out how to work on scalafmt, see this tutorial.

Team

The current maintainers (people who can merge pull requests) are:

An up-to-date list of contributors is available here: https://github.com/scalameta/scalafmt/graphs/contributors

We strive to offer a welcoming environment to learn, teach and contribute.

Acknowledgements

JProfiler generously supports scalafmt with its full-featured Java Profiler.