diff --git a/rules/S3723/rust/metadata.json b/rules/S3723/rust/metadata.json new file mode 100644 index 0000000000..6a0ae2c31a --- /dev/null +++ b/rules/S3723/rust/metadata.json @@ -0,0 +1,24 @@ +{ + "title": "Array elements should be separated by commas", + "type": "CODE_SMELL", + "code": { + "impacts": { + "MAINTAINABILITY": "MEDIUM" + }, + "attribute": "FORMATTED" + }, + "status": "ready", + "remediation": { + "func": "Constant\/Issue", + "constantCost": "2min" + }, + "tags": [ + "clippy" + ], + "defaultSeverity": "Major", + "ruleSpecification": "RSPEC-3723", + "sqKey": "S3723", + "scope": "All", + "defaultQualityProfiles": ["Sonar way"], + "quickfix": "unknown" +} diff --git a/rules/S3723/rust/rule.adoc b/rules/S3723/rust/rule.adoc new file mode 100644 index 0000000000..fea721289e --- /dev/null +++ b/rules/S3723/rust/rule.adoc @@ -0,0 +1,36 @@ +== Why is this an issue? + +When defining arrays in Rust, it is possible to forget a comma between elements, especially when the elements are binary operator expressions that span multiple lines. This can lead to unexpected results, causing logical errors or runtime issues. + +The origin of this problem is often due to oversight or formatting changes that split expressions across lines without adding the necessary comma. + +== How to fix it + +To fix this issue, add commas after each element or write the entire array on a single line. + +=== Code examples + +==== Noncompliant code example + +[source,rust,diff-id=1,diff-type=noncompliant] +---- +let a = &[ + -1, -2, -3 // Noncompliant: <= no comma here + -4, -5, -6 +]; +---- + +==== Compliant solution + +[source,rust,diff-id=1,diff-type=compliant] +---- +let a = &[ + -1, -2, -3, + -4, -5, -6, +]; +---- + +== Resources +=== Documentation + +* Clippy Lints - https://rust-lang.github.io/rust-clippy/master/index.html#possible_missing_comma