lint: Suggest @code instead of quotes.
* guix/scripts/lint.scm (%quoted-identifier-rx): New variable. (check-description-style)[check-quotes]: New procedure. Use it. * tests/lint.scm ("description: suggest ornament instead of quotes"): New test.
This commit is contained in:
parent
4534d85e70
commit
4bb54cc42f
|
@ -142,6 +142,10 @@ monad."
|
|||
"Return #t if S starts with what looks like an abbreviation or acronym."
|
||||
(string-match "^[A-Z][A-Z0-9]+\\>" s))
|
||||
|
||||
(define %quoted-identifier-rx
|
||||
;; A quoted identifier, like 'this'.
|
||||
(make-regexp "['`][[:graph:]]+'"))
|
||||
|
||||
(define (check-description-style package)
|
||||
;; Emit a warning if stylistic issues are found in the description of PACKAGE.
|
||||
(define (check-not-empty description)
|
||||
|
@ -173,6 +177,16 @@ trademark sign '~a' at ~d")
|
|||
'description))
|
||||
(else #t)))
|
||||
|
||||
(define (check-quotes description)
|
||||
"Check whether DESCRIPTION contains single quotes and suggest @code."
|
||||
(when (regexp-exec %quoted-identifier-rx description)
|
||||
(emit-warning package
|
||||
|
||||
;; TRANSLATORS: '@code' is Texinfo markup and must be kept
|
||||
;; as is.
|
||||
(_ "use @code or similar ornament instead of quotes")
|
||||
'description)))
|
||||
|
||||
(define (check-proper-start description)
|
||||
(unless (or (properly-starts-sentence? description)
|
||||
(string-prefix-ci? (package-name package) description))
|
||||
|
@ -203,6 +217,7 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
|
|||
(if (string? description)
|
||||
(begin
|
||||
(check-not-empty description)
|
||||
(check-quotes description)
|
||||
(check-trademarks description)
|
||||
;; Use raw description for this because Texinfo rendering
|
||||
;; automatically fixes end of sentence space.
|
||||
|
|
|
@ -218,6 +218,14 @@ string) on HTTP requests."
|
|||
(check-description-style pkg)))
|
||||
"should not contain trademark sign"))))
|
||||
|
||||
(test-assert "description: suggest ornament instead of quotes"
|
||||
(->bool
|
||||
(string-contains (with-warnings
|
||||
(let ((pkg (dummy-package "x"
|
||||
(description "This is a 'quoted' thing."))))
|
||||
(check-description-style pkg)))
|
||||
"use @code")))
|
||||
|
||||
(test-assert "synopsis: not a string"
|
||||
(->bool
|
||||
(string-contains (with-warnings
|
||||
|
|
Loading…
Reference in New Issue