From 08f4f27d4819bb62a6035bb5ad6049dc560ff03c Mon Sep 17 00:00:00 2001 From: margarita-nedzelska-sonarsource <70522623+margarita-nedzelska-sonarsource@users.noreply.github.com> Date: Thu, 16 Sep 2021 16:49:23 +0300 Subject: [PATCH] Create rule S2189[kotlin]: Loops should not be infinite (#327) --- rules/S2189/kotlin/metadata.json | 3 +++ rules/S2189/kotlin/rule.adoc | 44 ++++++++++++++++++++++++++++++++ rules/S2189/metadata.json | 3 ++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 rules/S2189/kotlin/metadata.json create mode 100644 rules/S2189/kotlin/rule.adoc diff --git a/rules/S2189/kotlin/metadata.json b/rules/S2189/kotlin/metadata.json new file mode 100644 index 0000000000..0db3279e44 --- /dev/null +++ b/rules/S2189/kotlin/metadata.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/rules/S2189/kotlin/rule.adoc b/rules/S2189/kotlin/rule.adoc new file mode 100644 index 0000000000..2b0b0bbd23 --- /dev/null +++ b/rules/S2189/kotlin/rule.adoc @@ -0,0 +1,44 @@ +include::../description.adoc[] + + +== Noncompliant Code Example + +---- +var j: Int +while (true) { // Noncompliant; end condition omitted + j++ +} + +var k: Int +val b = true +while (b) { // Noncompliant; b never written to in loop + k++ +} +---- + +== Compliant Solution + +---- +var j: Int = 0 +while (true) { // reachable end condition added + j++ + if (j == Int.MIN_VALUE) { // true at Integer.MAX_VALUE +1 + break + } +} + +var k: Int = 0 +var b = true +while (b) { + k++ + b = k < Int.MAX_VALUE +} +---- + +ifdef::env-github,rspecator-view[] +''' +== Comments And Links +(visible only on this page) + +include::../comments-and-links.adoc[] +endif::env-github,rspecator-view[] diff --git a/rules/S2189/metadata.json b/rules/S2189/metadata.json index 104c682ad1..a2e4486ae0 100644 --- a/rules/S2189/metadata.json +++ b/rules/S2189/metadata.json @@ -12,7 +12,8 @@ "extra": { "coveredLanguages": [ "Java", - "JavaScript" + "JavaScript", + "Kotlin" ], "replacementRules": [