From d656539c0ed11d53e604c42dbce9702c7ff28370 Mon Sep 17 00:00:00 2001 From: nacNAC333 Date: Tue, 2 Jun 2026 18:53:27 -0400 Subject: [PATCH] #155: add too-deep-object lint --- .../org/eolang/lints/misc/too-deep-object.xsl | 46 +++++++++++++++++++ .../eolang/motives/misc/too-deep-object.md | 23 ++++++++++ .../allows-shallow-nesting.yaml | 29 ++++++++++++ .../too-deep-object/catches-deep-nesting.yaml | 37 +++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 src/main/resources/org/eolang/lints/misc/too-deep-object.xsl create mode 100644 src/main/resources/org/eolang/motives/misc/too-deep-object.md create mode 100644 src/test/resources/org/eolang/lints/packs/single/too-deep-object/allows-shallow-nesting.yaml create mode 100644 src/test/resources/org/eolang/lints/packs/single/too-deep-object/catches-deep-nesting.yaml diff --git a/src/main/resources/org/eolang/lints/misc/too-deep-object.xsl b/src/main/resources/org/eolang/lints/misc/too-deep-object.xsl new file mode 100644 index 000000000..67e24ccfb --- /dev/null +++ b/src/main/resources/org/eolang/lints/misc/too-deep-object.xsl @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + warning + Object + + + + + anonymous + + is too deeply nested (depth + + ). Consider refactoring with [] or inline definitions. + + + + + \ No newline at end of file diff --git a/src/main/resources/org/eolang/motives/misc/too-deep-object.md b/src/main/resources/org/eolang/motives/misc/too-deep-object.md new file mode 100644 index 000000000..db0acd247 --- /dev/null +++ b/src/main/resources/org/eolang/motives/misc/too-deep-object.md @@ -0,0 +1,23 @@ +# Too deep object + +Objects nested more than 12 levels deep are hard to read and maintain. +Flatten the hierarchy or extract inner objects into separate files. + +Incorrect: + +```eo +[] > outer + [] > inner1 + [] > inner2 + ... + [] > inner12 +``` + +Correct: + +```eo +[] > outer + inner1 > @ +[] > inner1 + inner2 > @ +``` \ No newline at end of file diff --git a/src/test/resources/org/eolang/lints/packs/single/too-deep-object/allows-shallow-nesting.yaml b/src/test/resources/org/eolang/lints/packs/single/too-deep-object/allows-shallow-nesting.yaml new file mode 100644 index 000000000..31246acb4 --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/too-deep-object/allows-shallow-nesting.yaml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/misc/too-deep-object.xsl +asserts: + - /defects[count(defect[@severity='warning'])=0] +document: | + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/org/eolang/lints/packs/single/too-deep-object/catches-deep-nesting.yaml b/src/test/resources/org/eolang/lints/packs/single/too-deep-object/catches-deep-nesting.yaml new file mode 100644 index 000000000..b4b4144dd --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/too-deep-object/catches-deep-nesting.yaml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/misc/too-deep-object.xsl +asserts: + - /defects[count(defect[@severity='warning'])=1] +document: | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file