From b6925725ce3508194e456025c6ca779625e77f2b Mon Sep 17 00:00:00 2001 From: Iulia Dumitru Date: Sun, 1 Sep 2024 19:27:27 +0200 Subject: [PATCH] Add rule for `rand(Bool)` instead of `rand() < 0.5` --- rules/lang/best-practice/rand_bool.fixed.jl | 40 +++++++++++++++++++++ rules/lang/best-practice/rand_bool.jl | 40 +++++++++++++++++++++ rules/lang/best-practice/rand_bool.yaml | 23 ++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 rules/lang/best-practice/rand_bool.fixed.jl create mode 100644 rules/lang/best-practice/rand_bool.jl create mode 100644 rules/lang/best-practice/rand_bool.yaml diff --git a/rules/lang/best-practice/rand_bool.fixed.jl b/rules/lang/best-practice/rand_bool.fixed.jl new file mode 100644 index 0000000..8dc1e25 --- /dev/null +++ b/rules/lang/best-practice/rand_bool.fixed.jl @@ -0,0 +1,40 @@ +#ruleid: rand-bool +rand(Bool) + +function some_rand_function(x) + #ruleid: rand-bool + if rand(Bool) + println("Random") + end +end + +#ok: rand-bool +rand() < 0.7 # this is fine + +x = rand() +#ruleid: rand-bool +if rand(Bool) + do_something() +else + do_something_else() +end + +#ok: rand-bool +y = ok() +if y < 0.5 + do_something() +else + do_something_else() +end + +#ruleid: rand-bool +rand(Bool) && action() + +#ok: rand-bool +flag = rand(Bool) + +#ruleid: rand-bool +if some_flag && rand(Bool) || other_flag + println("Random") +end + diff --git a/rules/lang/best-practice/rand_bool.jl b/rules/lang/best-practice/rand_bool.jl new file mode 100644 index 0000000..2efa460 --- /dev/null +++ b/rules/lang/best-practice/rand_bool.jl @@ -0,0 +1,40 @@ +#ruleid: rand-bool +rand() < 0.5 + +function some_rand_function(x) + #ruleid: rand-bool + if rand() < 0.5 + println("Random") + end +end + +#ok: rand-bool +rand() < 0.7 # this is fine + +x = rand() +#ruleid: rand-bool +if x < 0.5 + do_something() +else + do_something_else() +end + +#ok: rand-bool +y = ok() +if y < 0.5 + do_something() +else + do_something_else() +end + +#ruleid: rand-bool +x < 0.5 && action() + +#ok: rand-bool +flag = rand(Bool) + +#ruleid: rand-bool +if some_flag && rand() < 0.5 || other_flag + println("Random") +end + diff --git a/rules/lang/best-practice/rand_bool.yaml b/rules/lang/best-practice/rand_bool.yaml new file mode 100644 index 0000000..f24341d --- /dev/null +++ b/rules/lang/best-practice/rand_bool.yaml @@ -0,0 +1,23 @@ +rules: + - id: rand-bool + patterns: + - pattern-either: + - pattern: $RAND() < 0.5 + - patterns: + - pattern-inside: | + $X = $RAND() + ... + <... $X < 0.5 ...> + - pattern: $X < 0.5 + - metavariable-regex: + metavariable: $RAND + regex: '(Base.)?rand' + fix: rand(Bool) + message: To get a random Boolean, use `rand(Bool)`. + languages: + - julia + severity: WARNING + metadata: + category: best-practice + license: LGPL +