doc: extensions: drop warnings_filter
This extension was created to overcome C domain/Breathe limitations. This is no longer needed as we link directly to Doxygen pages. Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
This commit is contained in:
parent
15c4df0aaa
commit
e28232d515
4 changed files with 0 additions and 141 deletions
|
@ -968,7 +968,6 @@ Documentation:
|
||||||
- doc/index-tex.rst
|
- doc/index-tex.rst
|
||||||
- doc/index.rst
|
- doc/index.rst
|
||||||
- doc/kconfig.rst
|
- doc/kconfig.rst
|
||||||
- doc/known-warnings.txt
|
|
||||||
- doc/templates/sample.tmpl
|
- doc/templates/sample.tmpl
|
||||||
- doc/templates/board.tmpl
|
- doc/templates/board.tmpl
|
||||||
- boards/index.rst
|
- boards/index.rst
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
"""
|
|
||||||
Warnings filter extension
|
|
||||||
#########################
|
|
||||||
|
|
||||||
Copyright (c) 2021 Nordic Semiconductor ASA
|
|
||||||
SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
============
|
|
||||||
|
|
||||||
This Sphinx plugin can be used to filter out warnings that are known to be false
|
|
||||||
positives. The warnings are filtered out based on a set of regular expressions
|
|
||||||
given via an configuration file. The format of the configuration file is a
|
|
||||||
plain-text file where each line consists of a regular expression. Any lines
|
|
||||||
starting with ``#`` will be ignored.
|
|
||||||
|
|
||||||
Configuration options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
- ``warnings_filter_config``: Configuration file.
|
|
||||||
- ``warnings_filter_silent``: Silent flag. If True, warning is hidden. If False
|
|
||||||
the warning is converted to an information message and displayed.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import logging
|
|
||||||
import re
|
|
||||||
from typing import Dict, Any, List, Optional
|
|
||||||
|
|
||||||
from sphinx.application import Sphinx
|
|
||||||
from sphinx.util.logging import NAMESPACE
|
|
||||||
|
|
||||||
|
|
||||||
__version__ = "0.1.0"
|
|
||||||
|
|
||||||
|
|
||||||
class WarningsFilter(logging.Filter):
|
|
||||||
"""Warnings filter.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
expressions: List of regular expressions.
|
|
||||||
silent: If true, warning is hidden, otherwise it is shown as INFO.
|
|
||||||
name: Filter name.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, expressions: List[str], silent: bool, name: str = "") -> None:
|
|
||||||
super().__init__(name)
|
|
||||||
|
|
||||||
self._expressions = expressions
|
|
||||||
self._silent = silent
|
|
||||||
|
|
||||||
def filter(self, record: logging.LogRecord) -> bool:
|
|
||||||
if record.levelno != logging.WARNING:
|
|
||||||
return True
|
|
||||||
|
|
||||||
for expression in self._expressions:
|
|
||||||
# The message isn't always a string so we convert it before regexing as we can only regex strings
|
|
||||||
if expression.match(str(record.msg)):
|
|
||||||
if self._silent:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
record.levelno = logging.INFO
|
|
||||||
record.msg = f"Filtered warning: {record.msg}"
|
|
||||||
return True
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
class Expression:
|
|
||||||
"""
|
|
||||||
Encapsulate a log filter pattern and track if it ever matches a log line.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, pattern):
|
|
||||||
self.pattern = pattern
|
|
||||||
self.matched = False
|
|
||||||
|
|
||||||
def match(self, str):
|
|
||||||
matches = bool(re.match(self.pattern, str))
|
|
||||||
self.matched = matches or self.matched
|
|
||||||
return matches
|
|
||||||
|
|
||||||
|
|
||||||
def configure(app: Sphinx) -> None:
|
|
||||||
"""Entry point.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
app: Sphinx application instance.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# load expressions from configuration file
|
|
||||||
with open(app.config.warnings_filter_config) as f:
|
|
||||||
expressions = list()
|
|
||||||
for line in f.readlines():
|
|
||||||
if line.strip() and not line.startswith("#"):
|
|
||||||
expressions.append(Expression(line.rstrip()))
|
|
||||||
|
|
||||||
app.env.warnings_filter_expressions = expressions
|
|
||||||
|
|
||||||
# install warnings filter to all the Sphinx logger handlers
|
|
||||||
filter = WarningsFilter(expressions, app.config.warnings_filter_silent)
|
|
||||||
logger = logging.getLogger(NAMESPACE)
|
|
||||||
for handler in logger.handlers:
|
|
||||||
handler.filters.insert(0, filter)
|
|
||||||
|
|
||||||
|
|
||||||
def finished(app: Sphinx, exception: Optional[Exception]):
|
|
||||||
"""
|
|
||||||
Prints out any patterns that have not matched a log line to allow us to clean up any that are not used.
|
|
||||||
"""
|
|
||||||
if exception:
|
|
||||||
# Early exit if there has been an exception as matching data is only
|
|
||||||
# valid for complete builds
|
|
||||||
return
|
|
||||||
|
|
||||||
expressions = app.env.warnings_filter_expressions
|
|
||||||
|
|
||||||
for expression in expressions:
|
|
||||||
if not expression.matched:
|
|
||||||
logging.warning(f"Unused expression: {expression.pattern}")
|
|
||||||
|
|
||||||
|
|
||||||
def setup(app: Sphinx) -> Dict[str, Any]:
|
|
||||||
app.add_config_value("warnings_filter_config", "", "")
|
|
||||||
app.add_config_value("warnings_filter_silent", True, "")
|
|
||||||
|
|
||||||
app.connect("builder-inited", configure)
|
|
||||||
app.connect("build-finished", finished)
|
|
||||||
|
|
||||||
return {
|
|
||||||
"version": __version__,
|
|
||||||
"parallel_read_safe": True,
|
|
||||||
"parallel_write_safe": True,
|
|
||||||
}
|
|
|
@ -86,7 +86,6 @@ extensions = [
|
||||||
"zephyr.link-roles",
|
"zephyr.link-roles",
|
||||||
"sphinx_tabs.tabs",
|
"sphinx_tabs.tabs",
|
||||||
"sphinx_sitemap",
|
"sphinx_sitemap",
|
||||||
"zephyr.warnings_filter",
|
|
||||||
"zephyr.doxyrunner",
|
"zephyr.doxyrunner",
|
||||||
"zephyr.doxybridge",
|
"zephyr.doxybridge",
|
||||||
"zephyr.gh_utils",
|
"zephyr.gh_utils",
|
||||||
|
@ -257,10 +256,6 @@ doxybridge_dir = doxyrunner_outdir
|
||||||
|
|
||||||
html_redirect_pages = redirects.REDIRECTS
|
html_redirect_pages = redirects.REDIRECTS
|
||||||
|
|
||||||
# -- Options for zephyr.warnings_filter -----------------------------------
|
|
||||||
|
|
||||||
warnings_filter_config = str(ZEPHYR_BASE / "doc" / "known-warnings.txt")
|
|
||||||
|
|
||||||
# -- Options for zephyr.link-roles ----------------------------------------
|
# -- Options for zephyr.link-roles ----------------------------------------
|
||||||
|
|
||||||
link_roles_manifest_project = "zephyr"
|
link_roles_manifest_project = "zephyr"
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Each line should contain the regular expression of a known Sphinx warning
|
|
||||||
# that should be filtered out
|
|
Loading…
Add table
Add a link
Reference in a new issue