Skip to main content
analyze

Boost your productivity

DCM is a tool to build maintainable software faster. It provides you with valuable insights that you didn't know about before. No AI hallucinations, purely statically available data that would take too long to collect manually.


Lint rules

Find bugs and style issues. Reduce boring routine.

Use rules to find bugs and issues that are difficult to spot by eye. They help you cut through the boring routine and turn verbal code style agreements into a set of automated checks so you can focus on what really matters: building great software.

Lint rules in IDE

Built for you

Unlike the rules provided by the Dart analyzer, DCM rules are flexible and can be configured to suit your specific needs. Want your own order of class members, different from what others use? Just change the rule's configuration.

Easy to set up

Use already familiar analysis_options.yaml file to configure a list of rules that will help you find bugs and match your code style. And if you accidentally misspell a rule name or configure it incorrectly, DCM will instantly show this.

Configuration example

Don't want to go through the list of all available rules? Get started quickly with one of the presets.

With examples and explanations

All rules provided by DCM have a documentation page with the rule description and examples to help you clearly understand what problem (or style issue) the rule solves. Some rules also have links to additional sources (e.g. GitHub issues) to give you more context on the underlying issue.

In your IDE and on CI/CD

DCM IDE integrations give you instant feedback on any code changes and setting up DCM on CI/CD helps you ensure that no unnoticed issue makes it into your main branch.

Analyze output

For Dart, Flutter and different packages

Apart from providing rules for Dart and Flutter, DCM also covers several popular packages such as provider, bloc, equatable and other. We're constantly working to support more and more external packages, so if you have ideas about what other packages we can support, let us know!


Metrics

Get your projects complexity overview

Use metrics to measure the complexity of your code and identify areas that may be difficult to maintain or test.

This overview can be particularly useful for large projects, where it can be challenging to keep track of all the contributions from different developers.

Metric report

Configurable

Metrics at their core are just numbers, and there is rarely a number that suits everyone. This is why you can configure the metrics to suit your code style and approaches.

With detailed reports

Metric reports allow you to view complex parts down to a specific method or class. You can also choose the output format that suits you best: plain text, JSON, Code Climate, GitLab, HTML, Checkstyle.

Metric report for one file

For different scopes

Collect metrics for classes, functions or whole files.


Widget analysis

Ensure the highest quality of your widgets

Building good UI is hard. Make this process simpler by understanding how complex your widgets are and how they are used.

Measure quality

DCM analyzes your Flutter widgets and shows a combined score based on how complex the widget is.

Widget report

Find usages

Use the widget report to find out what other widgets the current widget relies on (both internal and external widgets from Flutter itself or other packages) and what other widgets use it.

And similar (or duplicated) widgets

Similarity report helps you find similar widgets in your codebase and then decide whether this similarity is acceptable or whether widgets should be refactored. While not all similarity is bad, reducing the number of duplicate code can help you not only make it easier to maintain, but also avoid potential visual or behavioral differences when you change one of your widgets.

Similarity report

Assets analysis

Keep your image assets in good shape

All Flutter apps use image assets in one way or another. But as the number of assets grows, it becomes increasingly difficult to maintain them. DCM can help you understand which image assets are not used, can be optimized, or do not follow your naming conventions.

Assets report

Reduce the size of your images without reducing their quality

Although .png and .jpg images are very common, these formats are not the most optimal when it comes to image size. Such images can be converted to .webp format, which provides at least a 25% reduction in size and does not reduce quality.

Simplify working with high-resolution images

High-resolution images introduce additional complexity, and with DCM you can easily find unused, missing, or incorrect high-resolution images.

Keep your images consistent

Tired of dealing with images that use different naming conventions or are placed under the wrong folders? DCM can help you fix this and ensure your team is following these conventions.

And get an overview of all your assets

To get a list of all your assets, simply generate an HTML report. This report includes not only the total size of the image assets, but also an additional meta information for each image.

Assets HTML report

Project structure analysis

Quickly find how files depend on each other

Analyzing your project structure will help you ensure that your team is following architectural agreements and avoid surprises with business logic that depends on the UI and so on.

Structure report

With different modes

By default, this command shows only your code, but with the help of additional flags, you can include external files and packages to get a comprehensive overview of how your code depends on any external code.

And support for modules

Need to get a high-level overview of how your modules depend on each other? Just pass a regular expression to group files into modules.

Structure modules report

In "dot" format

The command's output is in "dot" format, which is supported by various tools, including your IDE, online playgrounds, and the GraphViz CLI.



DCM

Ready to fix your code?

Start today