SonarSource Rules
  • Products

    In-IDE

    Code Quality and Security in your IDE with SonarQube Ide

    IDE extension that lets you fix coding issues before they exist!

    Discover SonarQube for IDE

    SaaS

    Code Quality and Security in the cloud with SonarQube Cloud

    Setup is effortless and analysis is automatic for most languages

    Discover SonarQube Cloud

    Self-Hosted

    Code Quality and Security Self-Hosted with SonarQube Server

    Fast, accurate analysis; enterprise scalability

    Discover SonarQube Server
  • SecretsSecrets
  • ABAPABAP
  • AnsibleAnsible
  • ApexApex
  • AzureResourceManagerAzureResourceManager
  • CC
  • C#C#
  • C++C++
  • CloudFormationCloudFormation
  • COBOLCOBOL
  • CSSCSS
  • DartDart
  • DockerDocker
  • FlexFlex
  • GitHub ActionsGitHub Actions
  • GoGo
  • HTMLHTML
  • JavaJava
  • JavaScriptJavaScript
  • JSONJSON
  • JCLJCL
  • KotlinKotlin
  • KubernetesKubernetes
  • Objective CObjective C
  • PHPPHP
  • PL/IPL/I
  • PL/SQLPL/SQL
  • PythonPython
  • RPGRPG
  • RubyRuby
  • RustRust
  • ScalaScala
  • ShellShell
  • SwiftSwift
  • TerraformTerraform
  • TextText
  • TypeScriptTypeScript
  • T-SQLT-SQL
  • VB.NETVB.NET
  • VB6VB6
  • XMLXML
  • YAMLYAML
Dart

Dart static code analysis

Unique rules to find Bugs, Vulnerabilities, Security Hotspots, and Code Smells in your DART code

  • All rules 126
  • Vulnerability4
  • Bug15
  • Security Hotspot8
  • Code Smell99
Filtered: 4 rules found
suspicious
    Impact
      Clean code attribute
        1. Parameter names should match base declaration

           Code Smell
        2. "switch" statements should cover all cases

           Code Smell
        3. Exceptions should not be ignored

           Code Smell
        4. Dart build, compiler, or analyzer configuration errors

           Code Smell

        "switch" statements should cover all cases

        intentionality - complete
        maintainability
        Code Smell
        • suspicious

        Why is this an issue?

        More Info

        For completeness, a switch over the values of an enum must either address each value in the enum or contain a default case. switch statements that are not over enum must end with a default case. This exhaustiveness is enforced by compiler. However, in the code there might be other enum-like classes which are not enums according to compiler, but the switch over its constants was intended to be exhaustive.

        This rule with raise an issue when switch over such enum-like classes doesn’t cover all cases.

        Enum-like classes are classes that:

        • are defined as non-abstract
        • have only one private non-factory constructor
        • have two or more static const fields whose type is the enclosing class
        • no subclasses of the class is in the defining library

        Noncompliant code example

        class MyEnum {
          final int i;
          const EnumLike._(this.i);
        
          static const a = MyEnum._(1);
          static const b = MyEnum._(2);
          static const c = MyEnum._(3);
        }
        
        void foo(MyEnum e) {
          switch(e) { // Noncompliant, case 'b' is missing
            case MyEnum.a:
              print('a');
            case MyEnum.b:
              print('b');
          }
        }
        

        Compliant solution

        class MyEnum {
          final int i;
          const EnumLike._(this.i);
        
          static const a = MyEnum._(1);
          static const b = MyEnum._(2);
          static const c = MyEnum._(3);
        }
        
        void foo(MyEnum e) {
          switch(e) {
            case MyEnum.a:
              print('a');
            case MyEnum.b:
              print('b');
            case MyEnum.c:
              print('c');
          }
        }
        

        or

        class MyEnum {
          final int i;
          const EnumLike._(this.i);
        
          static const a = MyEnum._(1);
          static const b = MyEnum._(2);
          static const c = MyEnum._(3);
        }
        
        void foo(MyEnum e) {
          switch(e) {
            case MyEnum.a:
              print('a');
              break;
            case MyEnum.b:
              print('b');
              break;
            default:
              print('default');
          }
        }
        
          Available In:
        • SonarQube CloudDetect issues in your GitHub, Azure DevOps Services, Bitbucket Cloud, GitLab repositories
        • SonarQube ServerAnalyze code in your
          on-premise CI
          Developer Edition
          Available Since
          10.7

        © 2008-2025 SonarSource SA. All rights reserved.

        Privacy Policy | Cookie Policy | Terms of Use