aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/linters/no_decorative_section_comment.rb
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/linters/no_decorative_section_comment.rb')
-rw-r--r--scripts/linters/no_decorative_section_comment.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/linters/no_decorative_section_comment.rb b/scripts/linters/no_decorative_section_comment.rb
new file mode 100644
index 0000000..8f26fad
--- /dev/null
+++ b/scripts/linters/no_decorative_section_comment.rb
@@ -0,0 +1,34 @@
+def no_decorative_section_comment(root_dir)
+ pattern = root_dir.join('crates', '**', '*.rs').to_s
+ errors = Dir.glob(pattern).sort.flat_map do |path|
+ relative = Pathname.new(path).relative_path_from(root_dir).to_s
+ find_decorative_comments(path, relative)
+ end
+
+ return true if errors.empty?
+
+ puts 'Found decorative section comments (4+ consecutive `=`, `-`, or Unicode box-drawing characters).'
+ puts 'These section dividers are unnecessarily noisy — remove them:'
+ errors.each do |err|
+ puts " #{err}"
+ end
+ false
+end
+
+DECORATIVE_RUN_RE = /[-=]{4,}|[─-╿]{4,}/
+
+def find_decorative_comments(path, relative)
+ errors = []
+
+ File.readlines(path).each_with_index do |raw, idx|
+ stripped = raw.lstrip
+ next unless stripped.start_with?('//')
+ next if stripped.start_with?('///') || stripped.start_with?('//!')
+
+ next unless stripped.match?(DECORATIVE_RUN_RE)
+
+ errors << "#{relative}:#{idx + 1}: decorative section comment"
+ end
+
+ errors
+end