mirror of
https://github.com/Hopiu/djLint.git
synced 2026-05-17 01:21:06 +00:00
194 lines
5.8 KiB
YAML
194 lines
5.8 KiB
YAML
- rule:
|
|
name: T001
|
|
message: Variables should be wrapped in a single whitespace.
|
|
flags: re.DOTALL
|
|
exclude:
|
|
- handlebars
|
|
- golang
|
|
patterns:
|
|
# open
|
|
- '{{[^\s#/@^]+'
|
|
- '{%-[^\s]+'
|
|
- '{%[^\s|\-]+'
|
|
# handlebars
|
|
- '[^{]{#[^\s]+|^{#[^\s]+'
|
|
- '[^{]{\/[^\s]+|^{\/[^\s]+'
|
|
- '[^{]{\@[^\s]+|^{\@[^\s]+'
|
|
# close
|
|
- '[^(\s|^|\-)]+[}|%|#]}'
|
|
- '[^(\s|^)]+\-[}|%|#]}'
|
|
- \s{2,}[}|%|#]}
|
|
- '{[{|%|#]\s{2,}'
|
|
- rule:
|
|
name: T002
|
|
message: Double quotes should be used in tags.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- '{%.?extends\s+?[^\"]\w+'
|
|
- rule:
|
|
name: T003
|
|
message: 'Endblock should have name. Ex: {% endblock body %}.'
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- '{%\s*?endblock\s*?%}'
|
|
- rule:
|
|
name: D004
|
|
message: (Django) Static urls should follow {% static path/to/file %} pattern.
|
|
flags: re.DOTALL
|
|
# this should be using the static path from django settings
|
|
patterns:
|
|
- <(?:link|img|script|source)\s[^\>]*?(?:href|src|srcset)=[\"\']/?static/?
|
|
- rule:
|
|
name: J004
|
|
message: (Jinja) Static urls should follow {{ url_for('static'..) }} pattern.
|
|
flags: re.DOTALL
|
|
# this should be using the static path from django settings
|
|
patterns:
|
|
- <(?:link|img|script|source)\s[^\>]*?(?:href|src|srcset)=[\"\']/?static/?
|
|
- rule:
|
|
name: H005
|
|
message: Html tag should have lang attribute.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <html\s*(?:(?!lang).)*>
|
|
- rule:
|
|
name: H006
|
|
message: Img tag should have height and width attributes.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <img\s(?:(?!(?:height)=).)*/?>
|
|
- <img\s(?:(?!(?:width)=).)*/?>
|
|
- rule:
|
|
name: H007
|
|
message: <!DOCTYPE ... > should be present before the html tag.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- ^<html
|
|
- rule:
|
|
name: H008
|
|
message: Attributes should be double quoted.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- (?:class|id|src|width|height|alt|style|lang|title|srcset|media)=\'[^\']*'
|
|
- rule:
|
|
name: H009
|
|
message: Tag names should be lowercase.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- (?<=<)(?:HTML|BODY|DIV|P|SPAN|TABLE|TR|TD|TH|THEAD|TBODY|CODE|UL|OL|LI|H1|H2|H3|H4|H5|H6)
|
|
- rule:
|
|
name: H010
|
|
message: Attribute names should be lowercase.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- <\w+[^\>]+?(?:CLASS|ID|SRC|WIDTH|HEIGHT|ALT|STYLE|LANG|TITLE|MEDIA|SRCSET)=
|
|
- rule:
|
|
name: H011
|
|
message: Attribute values should be quoted.
|
|
flags: re.DOTALL|re.I|re.M|re.X
|
|
patterns:
|
|
- |
|
|
<(?:(?!meta)\w+)\s+?[^>]*?(?:class|id|src|width|height|alt|style|lang|title|href|action|method|checked|required|srcset)=[a-zA-Z_-]+
|
|
- <(?:meta)\s+?[^>]*?(?:class|id|src|alt|style|lang|title|href|action|method|name)=[a-zA-Z_-]+
|
|
- rule:
|
|
name: H012
|
|
message: There should be no spaces around attribute =.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- <\w+?(?:(?!\{[%|{|#])[^\n|>])*\s+=
|
|
- <\w+?(?:(?!\{[%|{|#])[^\n|>])*=\s
|
|
- rule:
|
|
name: H013
|
|
message: Img tag should have an alt attribute.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <img\s(?:(?!(?:alt)=).)*/?>
|
|
- rule:
|
|
name: H014
|
|
message: More than 2 blank lines.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- "[^\n]{,10}\n{3,}"
|
|
- rule:
|
|
name: H015
|
|
message: Follow h tags with a line break.
|
|
flags: re.DOTALL
|
|
patterns:
|
|
- </h\d?>(?:(?!(.+\r?\n){1,}).)*<[a-zA-Z]+\d?
|
|
- rule:
|
|
name: H016
|
|
message: Missing title tag in html.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <html[^>]*?>(?:(?!<title>).)*</html>
|
|
- rule:
|
|
name: H017
|
|
message: Tag should be self closing.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <(img|input|area|base|br|col[^(?:group)]|embed|hr|link|meta|param|source|track|wbr|command|keygen|menuitem|path)[^>]*?[^/]>
|
|
- <(img|input|area|base|br|col|embed|hr|link|meta|param|source|track|wbr|command|keygen|menuitem|path)>
|
|
- rule:
|
|
name: D018
|
|
message: (Django) Internal links should use the {% url ... %} pattern.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <(?:a|div|span|input)\s+?[^>]*?(?:href|data-url)=[\"|'](?!(?:https?://)|javascript:|on\w+:)[\w|/]+
|
|
- <form\s+?[^>]*?(?:action)=[\"|'](?!(?:https?://)|javascript:|on\w+:)[\w|/]+
|
|
- rule:
|
|
name: J018
|
|
message: (Jinja) Internal links should use the {{ url_for() ... }} pattern.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <(?:a|div|span|input)\s+?[^>]*?(?:href|data-url)=[\"|'](?!(?:https?://)|javascript:|on\w+:)[\w|/]+
|
|
- <form\s+?[^>]*?(?:action)=[\"|'](?!(?:https?://)|javascript:|on\w+:)[\w|/]+
|
|
- rule:
|
|
name: H019
|
|
message: Replace 'javascript:abc()' with on_ event and real url.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <(?:a|div|span|input)\s+?[^>]*?(?:href|data-url)=[\"|']javascript:[\w|/]+
|
|
- <form\s+?[^>]*?(?:action)=[\"|']javascript:[\w|/]+
|
|
- rule:
|
|
name: H020
|
|
message: Empty tag pair found. Consider removing.
|
|
flags: re.DOTALL|re.I
|
|
patterns:
|
|
- <((?!td|li|th|dt|dd)\w+)\s*?>\s*?<\/\1>
|
|
- rule:
|
|
name: H021
|
|
message: Inline styles should be avoided.
|
|
flags: re.I
|
|
patterns:
|
|
- <\w+\s(?:[^>]*\s)?style(?=[^>]*>)
|
|
- rule:
|
|
name: H022
|
|
message: Use HTTPS for external links.
|
|
flags: re.I
|
|
patterns:
|
|
- <\w+\s[^>]*?(?:href|data-url|action|src|url|srcset)=[\"|']http://[^>]*?>
|
|
- rule:
|
|
name: H023
|
|
message: Do not use entity references.
|
|
flags: re.I
|
|
patterns:
|
|
- '&.{5};'
|
|
- rule:
|
|
name: H024
|
|
message: Omit type on scripts and styles.
|
|
flags: re.I
|
|
patterns:
|
|
- <(?:script|style)[^>]*?type=[\"|'](?:(?:text/css)|(?:text/javascript))[^>]*?>
|
|
- rule:
|
|
name: H025
|
|
message: Tag seems to be an orphan.
|
|
flags: re.I|re.DOTALL
|
|
patterns:
|
|
- <(/?(?:\w+)(?:\s?(?:(?:{%[^(?:%}]*?%})|(?:{{[^(?:}})]*?}})|[^<>])*[^/])?)>
|
|
- rule:
|
|
name: H026
|
|
message: Emtpy id and class tags can be removed.
|
|
flags: re.I
|
|
patterns:
|
|
- <\w+\b[^(?:{(?:%|{|#))>]*?\b(class|id)\b=(\"\"|'')
|
|
- <\w+\b[^(?:{(?:%|{|#))>]*?\b(class|id)\b[^=\"]
|