Transformers

DeepSource offers more than just issue detection. It also provides an automated source code formatting feature through Transformers. Each commit in a repository is processed by a DeepSource Transformer, which applies industry-standard code formatters to ensure that the code is consistently formatted and free of conflicts. This automated formatting process helps maintain the quality of your codebase by ensuring that it adheres to established standards.

When a pull request (PR) is generated, all the enabled transformers specified in the .deepsource.toml configuration file are executed. Any changes that are detected are then committed back to the same branch.

In cases where changes are made directly to the default branch without a pull request, a new pull request is automatically generated with the necessary transformations. This process ensures that any code changes made to the repository are consistently formatted and meet established standards, regardless of the method of modification.

๐Ÿ“˜

GitHub imposes restrictions on creating commits on branches from other forks, which may occasionally prevent changes from being committed back. In such cases, we recommend merging the pull request as it is. Once the pull request is merged, DeepSource automatically identifies and incorporates the formatting transformations introduced in the merge commit.

When transformers are initially added to the .deepsource.toml file on the default branch, the entire codebase is transformed. However, subsequent to this initial transformation, only files that have been added or modified in a commit, pull request, or merge request are transformed.

๐Ÿ“˜

It should be noted that for pull requests that have non-default branches as their base (such as pull requests to release branches), transformations are not executed.

Supported Transformers

The following table lists all the supported Transformers.

TransformerShortcodeVersion
Autopep8autopep82.0.4
Blackblack24.2.0
Isortisort5.13.2
GofmtgofmtGo 1.21.7
0.6.0gofumpt0.6.0
rustfmtrustfmt1.7.0-nightly
Prettierprettier3.2.5
RuboCoprubocop1.52.1
Scalafmtscalafmt3.5.9
StandardJSstandardjs17.1.0
StandardRBstandardrb1.29.0
Yapfyapf0.40.2
Google Java Formatgoogle-java-format1.17.0
dotnet-formatdotnet-format.NET SDK 8.0
clang-formatclang-format18.1.1
PHP CS Fixerphp-cs-fixer3.51.0
Ktlintktlint0.50.0
swift-formatswift-format508.0.1
Ruff Formatterruff0.3.2