Add `Naming/Filename` rule

This commit is contained in:
Sijawusz Pur Rahnama 2023-11-09 07:07:45 +01:00
parent 881209d54e
commit b9ce705a47
2 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,19 @@
require "../../../spec_helper"
module Ameba::Rule::Naming
subject = Filename.new
describe Filename do
it "passes if filename is correct" do
expect_no_issues subject, code: "", path: "src/foo.cr"
expect_no_issues subject, code: "", path: "src/foo_bar.cr"
end
it "fails if filename is wrong" do
expect_issue subject, <<-CRYSTAL, path: "src/fooBar.cr"
# ^{} error: Filename should be underscore-cased: foo_bar.cr, not fooBar.cr
CRYSTAL
end
end
end

View File

@ -0,0 +1,28 @@
module Ameba::Rule::Naming
# A rule that enforces file names to be in underscored case.
#
# YAML configuration example:
#
# ```
# Naming/Filename:
# Enabled: true
# ```
class Filename < Base
properties do
description "Enforces file names to be in underscored case"
end
MSG = "Filename should be underscore-cased: %s, not %s"
private LOCATION = {1, 1}
def test(source : Source)
path = Path[source.path]
name = path.basename
return if (expected = name.underscore) == name
issue_for LOCATION, MSG % {expected, name}
end
end
end