DCM
@dcm.dev
Advanced linter for Flutter and Dart developers dcm.dev. Join our discord https://discord.gg/Vzjprgk4sb.
"its not AI, but it’s better!"
"its not AI, but it’s better!"
Ever written a function that always returns the same value (like "true")? 🤔
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
September 3, 2025 at 2:32 PM
Ever written a function that always returns the same value (like "true")? 🤔
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
🔥 13 new rules!
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
August 25, 2025 at 1:33 PM
🔥 13 new rules!
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is here! 🎉
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
August 18, 2025 at 6:04 PM
DCM 1.31.0 is here! 🎉
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
Using `_` instead of `context`? You might be referencing the wrong `BuildContext`. That can lead to subtle bugs.
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
August 12, 2025 at 10:15 AM
Using `_` instead of `context`? You might be referencing the wrong `BuildContext`. That can lead to subtle bugs.
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
August 7, 2025 at 1:20 PM
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
DCM 1.30.0 includes better baseline support in Dashboards! 🚀
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
August 6, 2025 at 7:20 PM
DCM 1.30.0 includes better baseline support in Dashboards! 🚀
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
💡 Why removing commented-out-code matters?
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
July 28, 2025 at 11:41 AM
💡 Why removing commented-out-code matters?
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
🚀 No more SizedBox hacks!🚀
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
July 23, 2025 at 8:55 PM
🚀 No more SizedBox hacks!🚀
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Creating a new Future inside FutureBuilder in #Flutter? That restarts the async task every rebuild.
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
July 21, 2025 at 1:36 PM
Creating a new Future inside FutureBuilder in #Flutter? That restarts the async task every rebuild.
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
🎉 DCM 1.30.0: 22 New Lint Rules!
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
July 18, 2025 at 5:56 PM
🎉 DCM 1.30.0: 22 New Lint Rules!
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
📊 DCM 1.30.0 Dashboards updates:
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
July 17, 2025 at 12:21 PM
📊 DCM 1.30.0 Dashboards updates:
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
DCM v1.30.0 is out!
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
July 9, 2025 at 10:20 AM
DCM v1.30.0 is out!
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
❓ Why declare a variable too soon?
The `move-variable-closer-to-its-usage` rule suggests moving variable declarations closer to where they’re actually used, reducing memory allocations and potentially heavy calculations.
🔗 dcm.dev/docs/rules/c...
The `move-variable-closer-to-its-usage` rule suggests moving variable declarations closer to where they’re actually used, reducing memory allocations and potentially heavy calculations.
🔗 dcm.dev/docs/rules/c...
June 24, 2025 at 1:29 PM
❓ Why declare a variable too soon?
The `move-variable-closer-to-its-usage` rule suggests moving variable declarations closer to where they’re actually used, reducing memory allocations and potentially heavy calculations.
🔗 dcm.dev/docs/rules/c...
The `move-variable-closer-to-its-usage` rule suggests moving variable declarations closer to where they’re actually used, reducing memory allocations and potentially heavy calculations.
🔗 dcm.dev/docs/rules/c...
New in DCM Dashboards: Printable Reports
✅ Sharing insights internally
✅ Sending updates to stakeholders or clients
✅ Creating professional PDF summaries
Fast. Simple. Shareable.
Read more: dcm.dev/blog/2025/04...
✅ Sharing insights internally
✅ Sending updates to stakeholders or clients
✅ Creating professional PDF summaries
Fast. Simple. Shareable.
Read more: dcm.dev/blog/2025/04...
June 18, 2025 at 12:04 PM
New in DCM Dashboards: Printable Reports
✅ Sharing insights internally
✅ Sending updates to stakeholders or clients
✅ Creating professional PDF summaries
Fast. Simple. Shareable.
Read more: dcm.dev/blog/2025/04...
✅ Sharing insights internally
✅ Sending updates to stakeholders or clients
✅ Creating professional PDF summaries
Fast. Simple. Shareable.
Read more: dcm.dev/blog/2025/04...
🔁 Ever find yourself repeating the same method call within a single block of code?
The "prefer-moving-to-variable" rule helps catch those duplications and encourages assigning the result to a variable instead.
Learn more → dcm.dev/docs/rules/c...
The "prefer-moving-to-variable" rule helps catch those duplications and encourages assigning the result to a variable instead.
Learn more → dcm.dev/docs/rules/c...
June 13, 2025 at 12:13 PM
🔁 Ever find yourself repeating the same method call within a single block of code?
The "prefer-moving-to-variable" rule helps catch those duplications and encourages assigning the result to a variable instead.
Learn more → dcm.dev/docs/rules/c...
The "prefer-moving-to-variable" rule helps catch those duplications and encourages assigning the result to a variable instead.
Learn more → dcm.dev/docs/rules/c...
Declaring the same variable inside a loop when it doesn’t need to be?
Our `move-variable-outside-iteration` rule helps avoid unnecessary declarations of variables that can be declared only once.
🔗 dcm.dev/docs/rules/c...
Our `move-variable-outside-iteration` rule helps avoid unnecessary declarations of variables that can be declared only once.
🔗 dcm.dev/docs/rules/c...
June 10, 2025 at 9:16 AM
Declaring the same variable inside a loop when it doesn’t need to be?
Our `move-variable-outside-iteration` rule helps avoid unnecessary declarations of variables that can be declared only once.
🔗 dcm.dev/docs/rules/c...
Our `move-variable-outside-iteration` rule helps avoid unnecessary declarations of variables that can be declared only once.
🔗 dcm.dev/docs/rules/c...
🧐 Got a GestureDetector with no handlers?
The "avoid-unnecessary-gesture-detector" rule warns when you're wrapping widgets for interaction but forget to add handlers like "onTap". No handler == no purpose.
🔗 dcm.dev/docs/rules/f...
The "avoid-unnecessary-gesture-detector" rule warns when you're wrapping widgets for interaction but forget to add handlers like "onTap". No handler == no purpose.
🔗 dcm.dev/docs/rules/f...
June 9, 2025 at 7:37 AM
🧐 Got a GestureDetector with no handlers?
The "avoid-unnecessary-gesture-detector" rule warns when you're wrapping widgets for interaction but forget to add handlers like "onTap". No handler == no purpose.
🔗 dcm.dev/docs/rules/f...
The "avoid-unnecessary-gesture-detector" rule warns when you're wrapping widgets for interaction but forget to add handlers like "onTap". No handler == no purpose.
🔗 dcm.dev/docs/rules/f...
Stay Ahead of Code Quality with Insightful Trends!
Our issue tracking now gives you a clear view of:
✅ Estimated fix time
📈 30-day change
🔍 Group by issue type
📅 7-90 day charts
⚠️ Spot issues early, even unintentional ones
→ dcm.dev/blog/2025/04...
Our issue tracking now gives you a clear view of:
✅ Estimated fix time
📈 30-day change
🔍 Group by issue type
📅 7-90 day charts
⚠️ Spot issues early, even unintentional ones
→ dcm.dev/blog/2025/04...
June 4, 2025 at 6:38 AM
Stay Ahead of Code Quality with Insightful Trends!
Our issue tracking now gives you a clear view of:
✅ Estimated fix time
📈 30-day change
🔍 Group by issue type
📅 7-90 day charts
⚠️ Spot issues early, even unintentional ones
→ dcm.dev/blog/2025/04...
Our issue tracking now gives you a clear view of:
✅ Estimated fix time
📈 30-day change
🔍 Group by issue type
📅 7-90 day charts
⚠️ Spot issues early, even unintentional ones
→ dcm.dev/blog/2025/04...
🔍 Using `is`, `whereType`, or pattern matching when the result is always true?
The `avoid-unnecessary-type-assertions` rule flags these redundant checks.
🔗 dcm.dev/docs/rules/c...
#FlutterDev #Dart
The `avoid-unnecessary-type-assertions` rule flags these redundant checks.
🔗 dcm.dev/docs/rules/c...
#FlutterDev #Dart
May 28, 2025 at 7:39 PM
🔍 Using `is`, `whereType`, or pattern matching when the result is always true?
The `avoid-unnecessary-type-assertions` rule flags these redundant checks.
🔗 dcm.dev/docs/rules/c...
#FlutterDev #Dart
The `avoid-unnecessary-type-assertions` rule flags these redundant checks.
🔗 dcm.dev/docs/rules/c...
#FlutterDev #Dart
❗️Repeated equal nested conditions in your #Flutter code?
The "no-equal-nested-conditions" rule helps quickly spot such cases. Duplicate nested conditions are usually typos or even bugs and should be timely fixed!
Learn more: dcm.dev/docs/rules/c...
#FlutterDev #Dart
The "no-equal-nested-conditions" rule helps quickly spot such cases. Duplicate nested conditions are usually typos or even bugs and should be timely fixed!
Learn more: dcm.dev/docs/rules/c...
#FlutterDev #Dart
May 22, 2025 at 5:33 PM
❗️Repeated equal nested conditions in your #Flutter code?
The "no-equal-nested-conditions" rule helps quickly spot such cases. Duplicate nested conditions are usually typos or even bugs and should be timely fixed!
Learn more: dcm.dev/docs/rules/c...
#FlutterDev #Dart
The "no-equal-nested-conditions" rule helps quickly spot such cases. Duplicate nested conditions are usually typos or even bugs and should be timely fixed!
Learn more: dcm.dev/docs/rules/c...
#FlutterDev #Dart
🛑 Using Function without specifying parameters or return type in your #Flutter widgets?
It disables type checks and can lead to sneaky bugs. Instead, declare function types as "void Function()".
🔗 dcm.dev/docs/rules/c...
It disables type checks and can lead to sneaky bugs. Instead, declare function types as "void Function()".
🔗 dcm.dev/docs/rules/c...
May 8, 2025 at 8:39 AM
🛑 Using Function without specifying parameters or return type in your #Flutter widgets?
It disables type checks and can lead to sneaky bugs. Instead, declare function types as "void Function()".
🔗 dcm.dev/docs/rules/c...
It disables type checks and can lead to sneaky bugs. Instead, declare function types as "void Function()".
🔗 dcm.dev/docs/rules/c...
🚀 Generate Shareable #Flutter Code Quality Reports in Seconds!
Just hit Ctrl+P / Cmd+P to export a PDF with:
🐞 Bugs
📖 Readability issues
🔁 Duplicate/unused code
🚦 Performance issues
No extra steps, share with anyone fast.
📎 Learn more: dcm.dev/blog/2025/04...
Just hit Ctrl+P / Cmd+P to export a PDF with:
🐞 Bugs
📖 Readability issues
🔁 Duplicate/unused code
🚦 Performance issues
No extra steps, share with anyone fast.
📎 Learn more: dcm.dev/blog/2025/04...
May 5, 2025 at 6:06 PM
🚀 Generate Shareable #Flutter Code Quality Reports in Seconds!
Just hit Ctrl+P / Cmd+P to export a PDF with:
🐞 Bugs
📖 Readability issues
🔁 Duplicate/unused code
🚦 Performance issues
No extra steps, share with anyone fast.
📎 Learn more: dcm.dev/blog/2025/04...
Just hit Ctrl+P / Cmd+P to export a PDF with:
🐞 Bugs
📖 Readability issues
🔁 Duplicate/unused code
🚦 Performance issues
No extra steps, share with anyone fast.
📎 Learn more: dcm.dev/blog/2025/04...
🤔 Declaring a nullable return type but always returning null?
The "function-always-returns-null" rule helps you catch this pattern so you can either return something meaningful or refactor the function altogether.
🔗 dcm.dev/docs/rules/c...
The "function-always-returns-null" rule helps you catch this pattern so you can either return something meaningful or refactor the function altogether.
🔗 dcm.dev/docs/rules/c...
April 28, 2025 at 4:20 PM
🤔 Declaring a nullable return type but always returning null?
The "function-always-returns-null" rule helps you catch this pattern so you can either return something meaningful or refactor the function altogether.
🔗 dcm.dev/docs/rules/c...
The "function-always-returns-null" rule helps you catch this pattern so you can either return something meaningful or refactor the function altogether.
🔗 dcm.dev/docs/rules/c...