banner

pub tag buymeacoffee sponsor patreon discord instagram license


Summary

df_safer_dart_lints provides custom lint rules for df_safer_dart that help enforce safety patterns at compile-time. These rules work with the custom_lint package.

Available Lint Rules

Rule Severity Purpose
must_use_outcome_or_error Error Ensures Option/Result/Resolvable return values are handled
no_future_outcome_type_or_error Error Prevents Future<Result> types (use Async instead)
must_await_all_futures Warning Ensures Futures are awaited in annotated scopes
must_await_all_futures_or_error Error Same as above, but as error
must_be_anonymous Warning Ensures anonymous functions are passed where required
must_be_anonymous_or_error Error Same as above, but as error
must_be_strong_ref Warning Ensures strong-referenced variables are passed (for weak listener patterns)
must_be_strong_ref_or_error Error Same as above, but as error
must_handle_return Warning Ensures return values are handled
must_handle_return_or_error Error Same as above, but as error
no_futures Warning Prevents Future usage in annotated scopes
no_futures_or_error Error Same as above, but as error
must_use_unsafe_wrapper Warning Ensures unsafe calls are wrapped in UNSAFE()
must_use_unsafe_wrapper_or_error Error Same as above, but as error

Installation

Add to your pubspec.yaml:

dev_dependencies:
  custom_lint: any
  df_safer_dart_lints: any
  df_safer_dart_annotations: any  # Optional: for annotation-based rules

Enable in analysis_options.yaml:

analyzer:
  plugins:
    - custom_lint

# Optional: configure individual rules
custom_lint:
  rules:
    - must_use_outcome_or_error: true
    - no_future_outcome_type_or_error: true
    - must_await_all_futures: true
    - must_be_anonymous: true
    - must_use_unsafe_wrapper_or_error: true
    - no_futures: true

# Recommended: suppress warnings for UNSAFE label usage
errors:
  unused_label: ignore
  non_constant_identifier_names: ignore

Usage Example

import 'package:df_safer_dart/df_safer_dart.dart';

void main() {
  // Error: must_use_outcome_or_error
  // The result must be handled
  fetchData();  // ❌ Triggers lint error

  // OK: Result is handled
  final result = fetchData();  // ✅
  result.map((data) => print(data)).end();  // ✅

  // Error: no_future_outcome_type_or_error
  // Don't use Future<Result<T>>
  Future<Result<String>> bad() async { ... }  // ❌ Use Async<String> instead
}

Async<String> fetchData() {
  return Async(() async {
    return 'data';
  });
}

🔍 For more information, refer to the API reference.


💬 Contributing and Discussions

This is an open-source project, and we warmly welcome contributions from everyone, regardless of experience level. Whether you're a seasoned developer or just starting out, contributing to this project is a fantastic way to learn, share your knowledge, and make a meaningful impact on the community.

☝️ Ways you can contribute

  • Find us on Discord: Feel free to ask questions and engage with the community here: https://discord.gg/gEQ8y2nfyX.
  • Share your ideas: Every perspective matters, and your ideas can spark innovation.
  • Help others: Engage with other users by offering advice, solutions, or troubleshooting assistance.
  • Report bugs: Help us identify and fix issues to make the project more robust.
  • Suggest improvements or new features: Your ideas can help shape the future of the project.
  • Help clarify documentation: Good documentation is key to accessibility. You can make it easier for others to get started by improving or expanding our documentation.
  • Write articles: Share your knowledge by writing tutorials, guides, or blog posts about your experiences with the project. It's a great way to contribute and help others learn.

No matter how you choose to contribute, your involvement is greatly appreciated and valued!

☕ We drink a lot of coffee...

If you're enjoying this package and find it valuable, consider showing your appreciation with a small donation. Every bit helps in supporting future development. You can donate here: https://www.buymeacoffee.com/dev_cetera

LICENSE

This project is released under the MIT License. See LICENSE for more information.

Libraries

_common
df_safer_dart_lints
Lints for the df_safer_dart package. Uses annotations from the df_safer_dart_annotation package.