File 1761-Emit-warnings-when-visible-anchors-with-empty-href-a.patch of Package erlang
From 58e28a859248628c5994ae1415b476f1c450cfa4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20W=C4=85sowski?= <michal@erlang.org>
Date: Tue, 13 Jan 2026 11:57:50 +0100
Subject: [PATCH] Emit warnings when visible anchors with empty href are
detected
---
scripts/otp_check_html_links.exs | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/scripts/otp_check_html_links.exs b/scripts/otp_check_html_links.exs
index 76e4fddaf1..a86375abe8 100755
--- a/scripts/otp_check_html_links.exs
+++ b/scripts/otp_check_html_links.exs
@@ -69,23 +69,30 @@ defmodule Anchors do
nil
end
- def validate_href(_file, "http://" <> _href, _anchors) do
+ def validate_href(file, href, _anchors, content)
+ when (href === "" or href === :href) and content != [] do
+ warn(file, "found empty href")
nil
end
- def validate_href(_file, "https://" <> _href, _anchors) do
+ def validate_href(_file, "http://" <> _href, _anchors, _content) do
nil
end
- def validate_href(file, "`" <> _ = href, _anchors) do
+ def validate_href(_file, "https://" <> _href, _anchors, _content) do
+ nil
+ end
+
+ def validate_href(file, "`" <> _ = href, _anchors, _content) do
warn(file, "found #{href}")
+ nil
end
- def validate_href(file, <<"#">> <> _anchor = href, anchors) do
- validate_href(file, Path.basename(file) <> href, anchors)
+ def validate_href(file, <<"#">> <> _anchor = href, anchors, content) do
+ validate_href(file, Path.basename(file) <> href, anchors, content)
end
- def validate_href(file, href, anchors) do
+ def validate_href(file, href, anchors, _content) do
target = Path.dirname(file) |> Path.join(href) |> Path.expand()
case String.split(target, "#", parts: 2) do
@@ -142,10 +149,10 @@ defmodule Anchors do
seen
else
Floki.find(document, "a[href]")
- |> Enum.reduce(seen, fn {_, attr, _}, seen ->
+ |> Enum.reduce(seen, fn {_, attr, content}, seen ->
href = :proplists.get_value("href", attr)
- case validate_href(file, href, anchors) do
+ case validate_href(file, href, anchors, content) do
{target, anchor} ->
{_, seen} =
Map.get_and_update(seen, target, fn
--
2.51.0