From 63da7ba95076881bd9e8f384f1ed9e0f5920897c Mon Sep 17 00:00:00 2001
From: msdlisper <1170167213@qq.com>
Date: Sun, 19 Nov 2023 23:29:17 +0800
Subject: [PATCH 1/3] feat(linter): init anchor_is_valid
---
crates/oxc_linter/src/rules.rs | 2 +
.../src/rules/jsx_a11y/anchor_is_valid.rs | 508 ++++++++++++++++++
2 files changed, 510 insertions(+)
create mode 100644 crates/oxc_linter/src/rules/jsx_a11y/anchor_is_valid.rs
diff --git a/crates/oxc_linter/src/rules.rs b/crates/oxc_linter/src/rules.rs
index 7a211bc44200..a52cf157343f 100644
--- a/crates/oxc_linter/src/rules.rs
+++ b/crates/oxc_linter/src/rules.rs
@@ -197,6 +197,7 @@ mod unicorn {
mod jsx_a11y {
pub mod alt_text;
pub mod anchor_has_content;
+ pub mod anchor_is_valid;
}
oxc_macros::declare_all_lint_rules! {
@@ -369,4 +370,5 @@ oxc_macros::declare_all_lint_rules! {
import::no_amd,
jsx_a11y::alt_text,
jsx_a11y::anchor_has_content,
+ jsx_a11y::anchor_is_valid,
}
diff --git a/crates/oxc_linter/src/rules/jsx_a11y/anchor_is_valid.rs b/crates/oxc_linter/src/rules/jsx_a11y/anchor_is_valid.rs
new file mode 100644
index 000000000000..079e38617dc3
--- /dev/null
+++ b/crates/oxc_linter/src/rules/jsx_a11y/anchor_is_valid.rs
@@ -0,0 +1,508 @@
+use oxc_diagnostics::{
+ miette::{self, Diagnostic},
+ thiserror::{self, Error},
+};
+use oxc_macros::declare_oxc_lint;
+use oxc_span::Span;
+
+use crate::{context::LintContext, rule::Rule, AstNode};
+
+#[derive(Debug, Error, Diagnostic)]
+#[error("eslint-plugin-jsx-a11y(anchor-is-valid):")]
+#[diagnostic(severity(warning), help(""))]
+struct AnchorIsValidDiagnostic(#[label] pub Span);
+
+#[derive(Debug, Default, Clone)]
+pub struct AnchorIsValid;
+
+declare_oxc_lint!(
+ /// ### What it does
+ ///
+ ///
+ /// ### Why is this bad?
+ ///
+ ///
+ /// ### Example
+ /// ```javascript
+ /// ```
+ AnchorIsValid,
+ correctness
+);
+
+impl Rule for AnchorIsValid {
+ fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {}
+}
+
+#[test]
+fn test() {
+ use crate::tester::Tester;
+
+ let components = vec![1];
+ let specialLink = vec![1];
+ let componentsAndSpecialLink = vec![1];
+ let invalidHrefAspect = vec![1];
+ let preferButtonAspect = vec![1];
+ let preferButtonInvalidHrefAspect = vec![1];
+ let noHrefAspect = vec![1];
+ let noHrefPreferButtonAspect = vec![1];
+ let componentsAndSpecialLinkAndInvalidHrefAspect = vec![1];
+ let noHrefInvalidHrefAspect = vec![1];
+ let componentsAndSpecialLinkAndNoHrefAspect = vec![1];
+
+ // https://raw.githubusercontent.com/jsx-eslint/eslint-plugin-jsx-a11y/main/__tests__/src/rules/anchor-is-valid-test.js
+ let pass = vec![
+ (r#"