Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
try:
reports = set(c.REPORTS)
except AttributeError:
pass
else:
reports = reports - targeted_ignoreables
if not reports:
if cfg.get("verbose"):
print(
" Skipping check '%s', determined to only"
" check ignoreable codes" % check_name
)
continue
if cfg.get("verbose"):
print(" Running check '%s'" % check_name)
if isinstance(c, checks.ContentCheck):
for line_num, code, message in c.report_iter(f):
if code in targeted_ignoreables:
continue
if not isinstance(line_num, (float, int)):
line_num = "?"
if cfg.get("verbose"):
print(
" - %s:%s: %s %s" % (f.filename, line_num, code, message)
)
else:
print("%s:%s: %s %s" % (f.filename, line_num, code, message))
error_counts[check_name] += 1
elif isinstance(c, checks.LineCheck):
for line_num, line in enumerate(f.lines_iter(), 1):
for code, message in c.report_iter(line):
if code in targeted_ignoreables:
def report_iter(self, parsed_file):
for error in parsed_file.errors:
if error.level not in self.WARN_LEVELS:
continue
ignore = False
if self._sphinx_mode:
for m in self.SPHINX_IGNORES_REGEX:
if m.match(error.message):
ignore = True
break
if not ignore:
yield (error.line, "D000", error.message)
class CheckMaxLineLength(ContentCheck):
REPORTS = frozenset(["D001"])
def __init__(self, cfg):
super(CheckMaxLineLength, self).__init__(cfg)
self._max_line_length = self._cfg["max_line_length"]
self._allow_long_titles = self._cfg["allow_long_titles"]
def _extract_node_lines(self, doc):
def extract_lines(node, start_line):
lines = [start_line]
if isinstance(node, (docutils_nodes.title)):
start = start_line - len(node.rawsource.splitlines())
if start >= 0:
lines.append(start)
if isinstance(node, (docutils_nodes.literal_block)):
end = start_line + len(node.rawsource.splitlines()) - 1
if "\r" in line:
yield ("D004", "Found literal carriage return")
class CheckNewlineEndOfFile(ContentCheck):
REPORTS = frozenset(["D005"])
def __init__(self, cfg):
super(CheckNewlineEndOfFile, self).__init__(cfg)
def report_iter(self, parsed_file):
if parsed_file.lines and not parsed_file.lines[-1].endswith(b"\n"):
yield (len(parsed_file.lines), "D005", "No newline at end of file")
class CheckValidity(ContentCheck):
REPORTS = frozenset(["D000"])
EXT_MATCHER = re.compile(r"(.*)[.]rst", re.I)
# From docutils docs:
#
# Report system messages at or higher than : "info" or "1",
# "warning"/"2" (default), "error"/"3", "severe"/"4", "none"/"5"
#
# See: http://docutils.sourceforge.net/docs/user/config.html#report-level
WARN_LEVELS = frozenset([2, 3, 4])
# Only used when running in sphinx mode.
SPHINX_IGNORES_REGEX = [
re.compile(r"^Unknown interpreted text"),
re.compile(r"^Unknown directive type"),
re.compile(r"^Undefined substitution"),
match = self._STARTING_WHITESPACE_REGEX.search(line)
if match:
spaces = match.group(1)
if "\t" in spaces:
yield ("D003", "Tabulation used for indentation")
class CheckCarriageReturn(LineCheck):
REPORTS = frozenset(["D004"])
def report_iter(self, line):
if "\r" in line:
yield ("D004", "Found literal carriage return")
class CheckNewlineEndOfFile(ContentCheck):
REPORTS = frozenset(["D005"])
def __init__(self, cfg):
super(CheckNewlineEndOfFile, self).__init__(cfg)
def report_iter(self, parsed_file):
if parsed_file.lines and not parsed_file.lines[-1].endswith(b"\n"):
yield (len(parsed_file.lines), "D005", "No newline at end of file")
class CheckValidity(ContentCheck):
REPORTS = frozenset(["D000"])
EXT_MATCHER = re.compile(r"(.*)[.]rst", re.I)
# From docutils docs:
#