tools
Build Tools
-
sbt (Scala Build Tool):
- Overview: sbt is the de facto build tool for Scala projects, offering powerful features for compiling, running, and testing Scala code. It supports incremental compilation and integrates well with continuous integration systems.
- Key Features: Dependency management, multi-project builds, interactive shell, custom tasks and plugins.
- Website: https://www.scala-sbt.org/
-
Mill:
- Overview: Mill is a newer build tool aimed at simplicity and performance, offering a more straightforward configuration than sbt.
- Key Features: Simple configuration syntax, incremental compilation, and integration with common Scala tools and libraries.
- Website: https://com-lihaoyi.github.io/mill/
Integrated Development Environments (IDEs)
-
IntelliJ IDEA:
- Overview: IntelliJ IDEA by JetBrains offers robust Scala support through the Scala plugin, providing an integrated environment for Scala development, including sbt and Play Framework support.
- Key Features: Intelligent code completion, on-the-fly code analysis, refactoring tools, and debugging support.
- Website: https://www.jetbrains.com/idea/
-
Visual Studio Code with Metals:
- Overview: Visual Studio Code (VS Code), combined with the Metals plugin, provides a lightweight yet powerful Scala development experience.
- Key Features: Code completion, diagnostics, goto definition, code formatting, debugging, and integrated terminal.
- Metals Website: https://scalameta.org/metals/
Testing Frameworks
-
ScalaTest:
- Overview: ScalaTest is a flexible testing framework that supports different styles of testing, making it adaptable to various testing needs.
- Key Features: Support for TDD, BDD, and integration testing; easily integrates with sbt and IDEs.
- Website: https://www.scalatest.org/
-
Specs2:
- Overview: Specs2 is a library for writing executable software specifications. With its BDD approach, it's particularly well-suited for unit and acceptance testing.
- Key Features: Support for matchers, mocking, and specification structuring; integrates with sbt and IDEs.
- Website: https://specs2.org/
Linters and Code Formatting Tools
-
Scalafmt:
- Overview: Scalafmt is a code formatter for Scala, ensuring consistent code style across your project and team.
- Key Features: Customizable formatting rules, IDE and build tool integration.
- Website: https://scalameta.org/scalafmt/
-
Scalafix:
- Overview: Scalafix is a refactoring and linting tool for Scala, helping to enforce best practices and migrate codebases to new Scala versions.
- Key Features: Custom linting rules, automatic code fixes, and migration aids for upgrading Scala versions.
- Website: https://scalacenter.github.io/scalafix/
Performance
- Kamon:
- Overview: Kamon provides instrumentation for monitoring applications built with Scala, Akka, and Play Framework, offering insights into application performance and bottlenecks.
- Key Features: Metrics collection, distributed tracing, and context propagation.
- Website: https://kamon.io/