Skip to content

feat(#20): add mystery-object lint - #1241

Open
VasilevNStas wants to merge 5 commits into
objectionary:masterfrom
VasilevNStas:fix/issue-20-mystery-objects
Open

feat(#20): add mystery-object lint#1241
VasilevNStas wants to merge 5 commits into
objectionary:masterfrom
VasilevNStas:fix/issue-20-mystery-objects

Conversation

@VasilevNStas

@VasilevNStas VasilevNStas commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

fix #20

What

A new Java-based lint mystery-object is added. It is registered in
MonoLints together with the other hand-coded lints (ascii-only,
reserved-name). The full set of artifacts:

  • src/main/java/org/eolang/lints/LtMystery.java — the lint implementation
  • src/main/resources/org/eolang/motives/names/mystery-object.md — the motive
  • src/test/java/org/eolang/lints/LtMysteryTest.java — unit tests
  • src/test/resources/org/eolang/lints/*.eo — EO fixtures used by the tests

Why

Consider this program:

[] > foo
  bar 42 > x

The object bar is neither defined in the program, nor imported via
+alias, nor one of the org.eolang objects. Such a call is almost always
a typo in the object name. Still, the parser happily compiles it into a
bare Φ.bar reference and nobody complains. The program reaches the
compile/run pipeline and fails there with an obscure error, far away from
the actual mistake.

This lint detects exactly that situation and reports it as an error
right at the source line.

How it works

The parser resolves any object application into a base attribute. There
are three interesting shapes:

  • Φ.org.eolang.io.stdout — a qualified path (result of +alias or a
    fully-qualified name). Always legitimate, never reported.
  • Φ.number, Φ.bytes, etc. — references to prime org.eolang objects.
    Legitimate, but only when the name is really one of the reserved top-level
    objects of the home repository.
  • Φ.bar — a bare single-name reference. This is the suspicious case.

The lint walks every //o[@base] element and applies the simple-name
pattern ^Φ\.[a-z][a-z0-9_-]*$. Any element that matches must prove its
right to exist:

  1. The name is declared somewhere in the current program, i.e. there is a
    //o[@name='bar'] node in the same XMIR — a legitimate local object, or
  2. The name is present in ReservedNames — the CSV of the org.eolang
    top-level objects, generated from the home repository on the reserved
    build profile.

Everything else is a mystery object and gets an error defect.

Aliased objects need no special handling: the parser resolves an alias into
a dotted path (Φ.org.eolang.io.stdout), which never matches the simple
one-word pattern, so they are excluded by construction.

Why not an XSL lint

The decision on "is NAME a legitimate org.eolang object" depends on the
runtime list from the home repository (ReservedNames, backed by
reserved.csv generated on the reserved Maven profile). XSL transforms
cannot read that runtime data, while a Java lint can — this is the same
reason the existing reserved-name lint is implemented in Java.

Robustness against a missing reserved list

reserved.csv exists only when the reserved profile is active (CI does
this in a dedicated reserved.yml workflow). In the default mvn test
run the map is empty. The lint handles this gracefully: with an empty list
it returns no defects. The full behavior matrix is exercised in the
@Tag("reserved") integration test (scansMysteryFromHome), which runs
against the real home data in CI.

Tests

  • catchesMysteryObjectbar with no definition is caught
  • reportsCorrectMessageForMysteryObject — message names the object
  • allowsDeclaredObject — local bar declaration is fine
  • allowsAliasedObject+alias import is fine
  • allowsCanonicalObjectorg.eolang literal (42) is fine
  • allowsAllObjectsDeclaredInline — all inline declarations are fine
  • scansMysteryFromHome (@Tag("reserved")) — integration against the
    real reserved list from home

Both mvn test (592 tests) and mvn clean install -Pqulice pass.

@VasilevNStas

Copy link
Copy Markdown
Contributor Author

@volodya-lombrozo plz review this PR

Comment thread src/test/java/org/eolang/lints/LtMysteryTest.java
Comment thread src/main/java/org/eolang/lints/LtMystery.java Outdated
Comment thread src/main/java/org/eolang/lints/LtMystery.java Outdated
@VasilevNStas
VasilevNStas force-pushed the fix/issue-20-mystery-objects branch 2 times, most recently from faab882 to 8ea053a Compare August 13, 2026 06:34
@VasilevNStas

Copy link
Copy Markdown
Contributor Author

@volodya-lombrozo plz re-review
I`m fixed it

@VasilevNStas
VasilevNStas force-pushed the fix/issue-20-mystery-objects branch from 8ea053a to 4745435 Compare August 15, 2026 09:53
@volodya-lombrozo

Copy link
Copy Markdown
Member

/benchmark

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark comparison for #1241

Comparing this branch against the master baseline in benchmark/lint-timings.csv. Positive deltas are slower, negative are faster.

Biggest changes

lint (size) before after delta
unlint-non-existing-defect (XXL) 14513 ms 11496 ms -3017 ms
application-without-as-attributes (XXL) 3157 ms 2231 ms -926 ms
unlint-non-existing-defect (XL) 2790 ms 2240 ms -550 ms
object-has-data (XXL) 1413 ms 916 ms -497 ms
unlint-non-existing-defect (L) 1559 ms 1101 ms -458 ms
unlint-non-existing-defect (M) 1256 ms 800 ms -456 ms
application-without-as-attributes (M) 507 ms 179 ms -328 ms
empty-object (XXL) 1065 ms 752 ms -313 ms
duplicate-as-attribute (S) 282 ms 30 ms -252 ms
bytes-without-data (XXL) 376 ms 126 ms -250 ms
Full results (440 entries)
lint (size) before after delta
alias-too-long (L) 1 ms 0 ms -1 ms
alias-too-long (M) 1 ms 0 ms -1 ms
alias-too-long (S) 39 ms 32 ms -7 ms
alias-too-long (XL) 1 ms 1 ms +0 ms
alias-too-long (XXL) 1 ms 0 ms -1 ms
anemic-getter (L) 13 ms 24 ms +11 ms
anemic-getter (M) 6 ms 8 ms +2 ms
anemic-getter (S) 41 ms 43 ms +2 ms
anemic-getter (XL) 21 ms 15 ms -6 ms
anemic-getter (XXL) 120 ms 78 ms -42 ms
anonymous-formation (L) 25 ms 22 ms -3 ms
anonymous-formation (M) 15 ms 10 ms -5 ms
anonymous-formation (S) 78 ms 93 ms +15 ms
anonymous-formation (XL) 42 ms 33 ms -9 ms
anonymous-formation (XXL) 221 ms 181 ms -40 ms
anonymous-objects-inside-formation (L) 15 ms 11 ms -4 ms
anonymous-objects-inside-formation (M) 12 ms 4 ms -8 ms
anonymous-objects-inside-formation (S) 49 ms 28 ms -21 ms
anonymous-objects-inside-formation (XL) 26 ms 18 ms -8 ms
anonymous-objects-inside-formation (XXL) 118 ms 94 ms -24 ms
application-without-as-attributes (L) 346 ms 244 ms -102 ms
application-without-as-attributes (M) 507 ms 179 ms -328 ms
application-without-as-attributes (S) 117 ms 172 ms +55 ms
application-without-as-attributes (XL) 597 ms 439 ms -158 ms
application-without-as-attributes (XXL) 3157 ms 2231 ms -926 ms
ascii-only (L) 1 ms 0 ms -1 ms
ascii-only (M) 0 ms 1 ms +1 ms
ascii-only (S) 2 ms 2 ms +0 ms
ascii-only (XL) 1 ms 1 ms +0 ms
ascii-only (XXL) 2 ms 0 ms -2 ms
atom-and-base (L) 25 ms 21 ms -4 ms
atom-and-base (M) 11 ms 7 ms -4 ms
atom-and-base (S) 67 ms 45 ms -22 ms
atom-and-base (XL) 56 ms 49 ms -7 ms
atom-and-base (XXL) 202 ms 157 ms -45 ms
atom-in-atom (L) 24 ms 18 ms -6 ms
atom-in-atom (M) 20 ms 13 ms -7 ms
atom-in-atom (S) 44 ms 59 ms +15 ms
atom-in-atom (XL) 42 ms 30 ms -12 ms
atom-in-atom (XXL) 246 ms 160 ms -86 ms
atom-with-data (L) 38 ms 19 ms -19 ms
atom-with-data (M) 18 ms 7 ms -11 ms
atom-with-data (S) 55 ms 42 ms -13 ms
atom-with-data (XL) 42 ms 34 ms -8 ms
atom-with-data (XXL) 201 ms 156 ms -45 ms
atom-without-rt (L) 25 ms 18 ms -7 ms
atom-without-rt (M) 11 ms 7 ms -4 ms
atom-without-rt (S) 47 ms 42 ms -5 ms
atom-without-rt (XL) 42 ms 30 ms -12 ms
atom-without-rt (XXL) 270 ms 155 ms -115 ms
bad-test-name (L) 16 ms 30 ms +14 ms
bad-test-name (M) 12 ms 6 ms -6 ms
bad-test-name (S) 39 ms 33 ms -6 ms
bad-test-name (XL) 26 ms 22 ms -4 ms
bad-test-name (XXL) 124 ms 117 ms -7 ms
broken-alias-first (L) 1 ms 1 ms +0 ms
broken-alias-first (M) 2 ms 1 ms -1 ms
broken-alias-first (S) 44 ms 30 ms -14 ms
broken-alias-first (XL) 1 ms 1 ms +0 ms
broken-alias-first (XXL) 1 ms 1 ms +0 ms
broken-alias-second (L) 2 ms 1 ms -1 ms
broken-alias-second (M) 1 ms 1 ms +0 ms
broken-alias-second (S) 33 ms 30 ms -3 ms
broken-alias-second (XL) 1 ms 0 ms -1 ms
broken-alias-second (XXL) 1 ms 2 ms +1 ms
bytes-without-data (L) 52 ms 16 ms -36 ms
bytes-without-data (M) 27 ms 11 ms -16 ms
bytes-without-data (S) 50 ms 52 ms +2 ms
bytes-without-data (XL) 79 ms 26 ms -53 ms
bytes-without-data (XXL) 376 ms 126 ms -250 ms
comment-is-too-wide (L) 0 ms 1 ms +1 ms
comment-is-too-wide (M) 2 ms 1 ms -1 ms
comment-is-too-wide (S) 51 ms 32 ms -19 ms
comment-is-too-wide (XL) 1 ms 1 ms +0 ms
comment-is-too-wide (XXL) 2 ms 1 ms -1 ms
comment-not-capitalized (L) 1 ms 2 ms +1 ms
comment-not-capitalized (M) 1 ms 1 ms +0 ms
comment-not-capitalized (S) 53 ms 27 ms -26 ms
comment-not-capitalized (XL) 1 ms 1 ms +0 ms
comment-not-capitalized (XXL) 1 ms 5 ms +4 ms
comment-starts-with-article (L) 1 ms 1 ms +0 ms
comment-starts-with-article (M) 1 ms 0 ms -1 ms
comment-starts-with-article (S) 27 ms 46 ms +19 ms
comment-starts-with-article (XL) 1 ms 0 ms -1 ms
comment-starts-with-article (XXL) 1 ms 1 ms +0 ms
comment-too-short (L) 1 ms 1 ms +0 ms
comment-too-short (M) 1 ms 0 ms -1 ms
comment-too-short (S) 31 ms 37 ms +6 ms
comment-too-short (XL) 1 ms 2 ms +1 ms
comment-too-short (XXL) 1 ms 1 ms +0 ms
comment-without-dot (L) 1 ms 1 ms +0 ms
comment-without-dot (M) 1 ms 1 ms +0 ms
comment-without-dot (S) 40 ms 28 ms -12 ms
comment-without-dot (XL) 1 ms 1 ms +0 ms
comment-without-dot (XXL) 1 ms 1 ms +0 ms
compound-name (L) 78 ms 70 ms -8 ms
compound-name (M) 25 ms 27 ms +2 ms
compound-name (S) 133 ms 34 ms -99 ms
compound-name (XL) 96 ms 87 ms -9 ms
compound-name (XXL) 469 ms 404 ms -65 ms
decorated-formation (L) 14 ms 12 ms -2 ms
decorated-formation (M) 9 ms 5 ms -4 ms
decorated-formation (S) 50 ms 39 ms -11 ms
decorated-formation (XL) 25 ms 17 ms -8 ms
decorated-formation (XXL) 113 ms 87 ms -26 ms
direct-phi (L) 27 ms 14 ms -13 ms
direct-phi (M) 16 ms 7 ms -9 ms
direct-phi (S) 66 ms 46 ms -20 ms
direct-phi (XL) 33 ms 24 ms -9 ms
direct-phi (XXL) 161 ms 115 ms -46 ms
duplicate-aliases (L) 1 ms 0 ms -1 ms
duplicate-aliases (M) 1 ms 1 ms +0 ms
duplicate-aliases (S) 38 ms 28 ms -10 ms
duplicate-aliases (XL) 1 ms 0 ms -1 ms
duplicate-aliases (XXL) 1 ms 1 ms +0 ms
duplicate-as-attribute (L) 67 ms 21 ms -46 ms
duplicate-as-attribute (M) 75 ms 27 ms -48 ms
duplicate-as-attribute (S) 282 ms 30 ms -252 ms
duplicate-as-attribute (XL) 169 ms 330 ms +161 ms
duplicate-as-attribute (XXL) 797 ms 967 ms +170 ms
duplicate-metas (L) 1 ms 1 ms +0 ms
duplicate-metas (M) 1 ms 1 ms +0 ms
duplicate-metas (S) 29 ms 30 ms +1 ms
duplicate-metas (XL) 1 ms 0 ms -1 ms
duplicate-metas (XXL) 1 ms 1 ms +0 ms
duplicate-names (L) 55 ms 47 ms -8 ms
duplicate-names (M) 28 ms 16 ms -12 ms
duplicate-names (S) 57 ms 48 ms -9 ms
duplicate-names (XL) 51 ms 51 ms +0 ms
duplicate-names (XXL) 281 ms 186 ms -95 ms
empty-alias (L) 1 ms 2 ms +1 ms
empty-alias (M) 1 ms 12 ms +11 ms
empty-alias (S) 29 ms 29 ms +0 ms
empty-alias (XL) 1 ms 0 ms -1 ms
empty-alias (XXL) 1 ms 1 ms +0 ms
empty-object (L) 119 ms 89 ms -30 ms
empty-object (M) 166 ms 91 ms -75 ms
empty-object (S) 165 ms 57 ms -108 ms
empty-object (XL) 185 ms 135 ms -50 ms
empty-object (XXL) 1065 ms 752 ms -313 ms
empty-spdx-tail (L) 1 ms 1 ms +0 ms
empty-spdx-tail (M) 2 ms 1 ms -1 ms
empty-spdx-tail (S) 46 ms 29 ms -17 ms
empty-spdx-tail (XL) 1 ms 1 ms +0 ms
empty-spdx-tail (XXL) 1 ms 1 ms +0 ms
error-line-out-of-listing (L) 0 ms 1 ms +1 ms
error-line-out-of-listing (M) 3 ms 1 ms -2 ms
error-line-out-of-listing (S) 34 ms 26 ms -8 ms
error-line-out-of-listing (XL) 1 ms 0 ms -1 ms
error-line-out-of-listing (XXL) 1 ms 1 ms +0 ms
formation-with-as-attributes (L) 30 ms 9 ms -21 ms
formation-with-as-attributes (M) 8 ms 8 ms +0 ms
formation-with-as-attributes (S) 30 ms 30 ms +0 ms
formation-with-as-attributes (XL) 21 ms 39 ms +18 ms
formation-with-as-attributes (XXL) 91 ms 75 ms -16 ms
incorrect-architect (L) 1 ms 1 ms +0 ms
incorrect-architect (M) 1 ms 1 ms +0 ms
incorrect-architect (S) 30 ms 32 ms +2 ms
incorrect-architect (XL) 0 ms 1 ms +1 ms
incorrect-architect (XXL) 1 ms 1 ms +0 ms
incorrect-bytes-format (L) 66 ms 46 ms -20 ms
incorrect-bytes-format (M) 66 ms 25 ms -41 ms
incorrect-bytes-format (S) 81 ms 47 ms -34 ms
incorrect-bytes-format (XL) 87 ms 70 ms -17 ms
incorrect-bytes-format (XXL) 548 ms 441 ms -107 ms
incorrect-home (L) 1 ms 1 ms +0 ms
incorrect-home (M) 2 ms 1 ms -1 ms
incorrect-home (S) 36 ms 34 ms -2 ms
incorrect-home (XL) 1 ms 1 ms +0 ms
incorrect-home (XXL) 1 ms 1 ms +0 ms
incorrect-jvm-rt-location (L) 2 ms 0 ms -2 ms
incorrect-jvm-rt-location (M) 1 ms 0 ms -1 ms
incorrect-jvm-rt-location (S) 32 ms 26 ms -6 ms
incorrect-jvm-rt-location (XL) 1 ms 0 ms -1 ms
incorrect-jvm-rt-location (XXL) 0 ms 1 ms +1 ms
incorrect-node-rt-location (L) 1 ms 1 ms +0 ms
incorrect-node-rt-location (M) 1 ms 0 ms -1 ms
incorrect-node-rt-location (S) 28 ms 29 ms +1 ms
incorrect-node-rt-location (XL) 1 ms 1 ms +0 ms
incorrect-node-rt-location (XXL) 1 ms 1 ms +0 ms
incorrect-package (L) 1 ms 1 ms +0 ms
incorrect-package (M) 2 ms 1 ms -1 ms
incorrect-package (S) 31 ms 28 ms -3 ms
incorrect-package (XL) 1 ms 0 ms -1 ms
incorrect-package (XXL) 2 ms 4 ms +2 ms
incorrect-rt-parts (L) 2 ms 2 ms +0 ms
incorrect-rt-parts (M) 1 ms 0 ms -1 ms
incorrect-rt-parts (S) 39 ms 29 ms -10 ms
incorrect-rt-parts (XL) 1 ms 1 ms +0 ms
incorrect-rt-parts (XXL) 1 ms 1 ms +0 ms
incorrect-spdx (L) 1 ms 1 ms +0 ms
incorrect-spdx (M) 2 ms 1 ms -1 ms
incorrect-spdx (S) 68 ms 41 ms -27 ms
incorrect-spdx (XL) 1 ms 1 ms +0 ms
incorrect-spdx (XXL) 1 ms 1 ms +0 ms
incorrect-test-object-name (L) 57 ms 12 ms -45 ms
incorrect-test-object-name (M) 14 ms 6 ms -8 ms
incorrect-test-object-name (S) 29 ms 27 ms -2 ms
incorrect-test-object-name (XL) 33 ms 22 ms -11 ms
incorrect-test-object-name (XXL) 146 ms 111 ms -35 ms
incorrect-unlint (L) 0 ms 1 ms +1 ms
incorrect-unlint (M) 1 ms 0 ms -1 ms
incorrect-unlint (S) 2 ms 1 ms -1 ms
incorrect-unlint (XL) 1 ms 0 ms -1 ms
incorrect-unlint (XXL) 1 ms 1 ms +0 ms
incorrect-version (L) 1 ms 1 ms +0 ms
incorrect-version (M) 1 ms 1 ms +0 ms
incorrect-version (S) 39 ms 27 ms -12 ms
incorrect-version (XL) 1 ms 1 ms +0 ms
incorrect-version (XXL) 2 ms 1 ms -1 ms
lambda-with-inners (L) 24 ms 19 ms -5 ms
lambda-with-inners (M) 22 ms 8 ms -14 ms
lambda-with-inners (S) 44 ms 41 ms -3 ms
lambda-with-inners (XL) 42 ms 31 ms -11 ms
lambda-with-inners (XXL) 201 ms 152 ms -49 ms
line-is-absent (L) 76 ms 59 ms -17 ms
line-is-absent (M) 74 ms 60 ms -14 ms
line-is-absent (S) 66 ms 46 ms -20 ms
line-is-absent (XL) 106 ms 95 ms -11 ms
line-is-absent (XXL) 569 ms 493 ms -76 ms
mandatory-architect (L) - 0 ms new
mandatory-architect (M) - 1 ms new
mandatory-architect (S) - 29 ms new
mandatory-architect (XL) - 0 ms new
mandatory-architect (XXL) - 1 ms new
mandatory-home (L) 1 ms 1 ms +0 ms
mandatory-home (M) 1 ms 1 ms +0 ms
mandatory-home (S) 27 ms 22 ms -5 ms
mandatory-home (XL) 1 ms 1 ms +0 ms
mandatory-home (XXL) 0 ms 0 ms +0 ms
mandatory-package (L) 0 ms 1 ms +1 ms
mandatory-package (M) 1 ms 0 ms -1 ms
mandatory-package (S) 33 ms 24 ms -9 ms
mandatory-package (XL) 1 ms 1 ms +0 ms
mandatory-package (XXL) 1 ms 1 ms +0 ms
mandatory-spdx (L) 1 ms 1 ms +0 ms
mandatory-spdx (M) 2 ms 1 ms -1 ms
mandatory-spdx (S) 49 ms 24 ms -25 ms
mandatory-spdx (XL) 1 ms 0 ms -1 ms
mandatory-spdx (XXL) 1 ms 1 ms +0 ms
mandatory-version (L) 0 ms 0 ms +0 ms
mandatory-version (M) 2 ms 0 ms -2 ms
mandatory-version (S) 42 ms 29 ms -13 ms
mandatory-version (XL) 1 ms 0 ms -1 ms
mandatory-version (XXL) 1 ms 1 ms +0 ms
many-void-attributes (L) 29 ms 9 ms -20 ms
many-void-attributes (M) 10 ms 6 ms -4 ms
many-void-attributes (S) 48 ms 46 ms -2 ms
many-void-attributes (XL) 21 ms 16 ms -5 ms
many-void-attributes (XXL) 90 ms 77 ms -13 ms
meta-line-out-of-listing (L) 1 ms 0 ms -1 ms
meta-line-out-of-listing (M) 1 ms 0 ms -1 ms
meta-line-out-of-listing (S) 46 ms 25 ms -21 ms
meta-line-out-of-listing (XL) 1 ms 1 ms +0 ms
meta-line-out-of-listing (XXL) 1 ms 1 ms +0 ms
missed-obfuscation (L) 14 ms 26 ms +12 ms
missed-obfuscation (M) 11 ms 5 ms -6 ms
missed-obfuscation (S) 40 ms 37 ms -3 ms
missed-obfuscation (XL) 28 ms 17 ms -11 ms
missed-obfuscation (XXL) 114 ms 136 ms +22 ms
mystery-object (L) - 1 ms new
mystery-object (M) - 1 ms new
mystery-object (S) - 1 ms new
mystery-object (XL) - 2 ms new
mystery-object (XXL) - 1 ms new
name-outside-of-abstract-object (L) 18 ms 9 ms -9 ms
name-outside-of-abstract-object (M) 10 ms 4 ms -6 ms
name-outside-of-abstract-object (S) 33 ms 29 ms -4 ms
name-outside-of-abstract-object (XL) 23 ms 14 ms -9 ms
name-outside-of-abstract-object (XXL) 90 ms 75 ms -15 ms
named-object-abstract-nested (L) 18 ms 9 ms -9 ms
named-object-abstract-nested (M) 10 ms 5 ms -5 ms
named-object-abstract-nested (S) 40 ms 39 ms -1 ms
named-object-abstract-nested (XL) 20 ms 15 ms -5 ms
named-object-abstract-nested (XXL) 91 ms 73 ms -18 ms
no-attribute-formation (L) 15 ms 11 ms -4 ms
no-attribute-formation (M) 9 ms 9 ms +0 ms
no-attribute-formation (S) 74 ms 42 ms -32 ms
no-attribute-formation (XL) 25 ms 17 ms -8 ms
no-attribute-formation (XXL) 115 ms 117 ms +2 ms
non-kebab-name (L) 13 ms 19 ms +6 ms
non-kebab-name (M) 6 ms 4 ms -2 ms
non-kebab-name (S) 50 ms 35 ms -15 ms
non-kebab-name (XL) 28 ms 23 ms -5 ms
non-kebab-name (XXL) 95 ms 75 ms -20 ms
not-empty-atom (L) 25 ms 23 ms -2 ms
not-empty-atom (M) 11 ms 13 ms +2 ms
not-empty-atom (S) 41 ms 47 ms +6 ms
not-empty-atom (XL) 41 ms 30 ms -11 ms
not-empty-atom (XXL) 203 ms 160 ms -43 ms
object-has-data (L) 172 ms 113 ms -59 ms
object-has-data (M) 189 ms 126 ms -63 ms
object-has-data (S) 133 ms 69 ms -64 ms
object-has-data (XL) 278 ms 188 ms -90 ms
object-has-data (XXL) 1413 ms 916 ms -497 ms
object-line-out-of-listing (L) 13 ms 9 ms -4 ms
object-line-out-of-listing (M) 9 ms 9 ms +0 ms
object-line-out-of-listing (S) 32 ms 156 ms +124 ms
object-line-out-of-listing (XL) 23 ms 15 ms -8 ms
object-line-out-of-listing (XXL) 106 ms 79 ms -27 ms
package-contains-multiple-parts (L) 1 ms 1 ms +0 ms
package-contains-multiple-parts (M) 2 ms 1 ms -1 ms
package-contains-multiple-parts (S) 39 ms 26 ms -13 ms
package-contains-multiple-parts (XL) 1 ms 0 ms -1 ms
package-contains-multiple-parts (XXL) 2 ms 1 ms -1 ms
package-member-without-void (L) - 1 ms new
package-member-without-void (M) - 1 ms new
package-member-without-void (S) - 34 ms new
package-member-without-void (XL) - 1 ms new
package-member-without-void (XXL) - 1 ms new
package-without-tail (L) 0 ms 0 ms +0 ms
package-without-tail (M) 1 ms 0 ms -1 ms
package-without-tail (S) 41 ms 29 ms -12 ms
package-without-tail (XL) 1 ms 0 ms -1 ms
package-without-tail (XXL) 1 ms 0 ms -1 ms
phi-is-not-first (L) 14 ms 10 ms -4 ms
phi-is-not-first (M) 6 ms 8 ms +2 ms
phi-is-not-first (S) 55 ms 32 ms -23 ms
phi-is-not-first (XL) 23 ms 15 ms -8 ms
phi-is-not-first (XXL) 102 ms 77 ms -25 ms
pos-without-line (L) 12 ms 8 ms -4 ms
pos-without-line (M) 5 ms 7 ms +2 ms
pos-without-line (S) 30 ms 31 ms +1 ms
pos-without-line (XL) 20 ms 16 ms -4 ms
pos-without-line (XXL) 90 ms 83 ms -7 ms
prohibited-package (L) 1 ms 1 ms +0 ms
prohibited-package (M) 1 ms 1 ms +0 ms
prohibited-package (S) 40 ms 38 ms -2 ms
prohibited-package (XL) 1 ms 1 ms +0 ms
prohibited-package (XXL) 1 ms 0 ms -1 ms
redundant-attachment (L) - 21 ms new
redundant-attachment (M) - 7 ms new
redundant-attachment (S) - 34 ms new
redundant-attachment (XL) - 15 ms new
redundant-attachment (XXL) - 77 ms new
redundant-object (L) 57 ms 74 ms +17 ms
redundant-object (M) 38 ms 18 ms -20 ms
redundant-object (S) 55 ms 48 ms -7 ms
redundant-object (XL) 111 ms 67 ms -44 ms
redundant-object (XXL) 686 ms 615 ms -71 ms
reserved-name (L) 82 ms 44 ms -38 ms
reserved-name (M) 89 ms 37 ms -52 ms
reserved-name (S) 30 ms 18 ms -12 ms
reserved-name (XL) 118 ms 91 ms -27 ms
reserved-name (XXL) 611 ms 586 ms -25 ms
rt-without-atoms (L) 27 ms 39 ms +12 ms
rt-without-atoms (M) 16 ms 8 ms -8 ms
rt-without-atoms (S) 41 ms 36 ms -5 ms
rt-without-atoms (XL) 41 ms 30 ms -11 ms
rt-without-atoms (XXL) 234 ms 190 ms -44 ms
schema-is-absent (L) 1 ms 1 ms +0 ms
schema-is-absent (M) 1 ms 2 ms +1 ms
schema-is-absent (S) 45 ms 26 ms -19 ms
schema-is-absent (XL) 1 ms 1 ms +0 ms
schema-is-absent (XXL) 1 ms 1 ms +0 ms
self-referencing (L) 13 ms 9 ms -4 ms
self-referencing (M) 5 ms 4 ms -1 ms
self-referencing (S) 30 ms 32 ms +2 ms
self-referencing (XL) 20 ms 15 ms -5 ms
self-referencing (XXL) 90 ms 74 ms -16 ms
sparse-decoration (L) 17 ms 15 ms -2 ms
sparse-decoration (M) 14 ms 7 ms -7 ms
sparse-decoration (S) 88 ms 45 ms -43 ms
sparse-decoration (XL) 38 ms 22 ms -16 ms
sparse-decoration (XXL) 140 ms 113 ms -27 ms
sparse-seq (L) 16 ms 11 ms -5 ms
sparse-seq (M) 7 ms 8 ms +1 ms
sparse-seq (S) 42 ms 46 ms +4 ms
sparse-seq (XL) 28 ms 19 ms -9 ms
sparse-seq (XXL) 136 ms 96 ms -40 ms
sprintf-without-formatters (L) 18 ms 11 ms -7 ms
sprintf-without-formatters (M) 8 ms 5 ms -3 ms
sprintf-without-formatters (S) 32 ms 29 ms -3 ms
sprintf-without-formatters (XL) 26 ms 18 ms -8 ms
sprintf-without-formatters (XXL) 150 ms 96 ms -54 ms
syntax-version (L) - 1 ms new
syntax-version (M) - 1 ms new
syntax-version (S) - 3 ms new
syntax-version (XL) - 1 ms new
syntax-version (XXL) - 1 ms new
unique-metas (L) 1 ms 0 ms -1 ms
unique-metas (M) 3 ms 0 ms -3 ms
unique-metas (S) 29 ms 38 ms +9 ms
unique-metas (XL) 1 ms 1 ms +0 ms
unique-metas (XXL) 1 ms 1 ms +0 ms
unit-test-missing (L) 40 ms 16 ms -24 ms
unit-test-missing (M) 8 ms 5 ms -3 ms
unit-test-missing (S) 59 ms 47 ms -12 ms
unit-test-missing (XL) 31 ms 39 ms +8 ms
unit-test-missing (XXL) 145 ms 122 ms -23 ms
unit-test-without-phi (L) 20 ms 18 ms -2 ms
unit-test-without-phi (M) 11 ms 10 ms -1 ms
unit-test-without-phi (S) 69 ms 38 ms -31 ms
unit-test-without-phi (XL) 32 ms 24 ms -8 ms
unit-test-without-phi (XXL) 149 ms 140 ms -9 ms
unknown-metas (L) 2 ms 1 ms -1 ms
unknown-metas (M) 1 ms 1 ms +0 ms
unknown-metas (S) 32 ms 28 ms -4 ms
unknown-metas (XL) 1 ms 0 ms -1 ms
unknown-metas (XXL) 1 ms 1 ms +0 ms
unknown-rt (L) 1 ms 1 ms +0 ms
unknown-rt (M) 2 ms 1 ms -1 ms
unknown-rt (S) 32 ms 33 ms +1 ms
unknown-rt (XL) 1 ms 1 ms +0 ms
unknown-rt (XXL) 1 ms 1 ms +0 ms
unlint-non-existing-defect (L) 1559 ms 1101 ms -458 ms
unlint-non-existing-defect (M) 1256 ms 800 ms -456 ms
unlint-non-existing-defect (S) 226 ms 202 ms -24 ms
unlint-non-existing-defect (XL) 2790 ms 2240 ms -550 ms
unlint-non-existing-defect (XXL) 14513 ms 11496 ms -3017 ms
unsorted-metas (L) 1 ms 1 ms +0 ms
unsorted-metas (M) 1 ms 1 ms +0 ms
unsorted-metas (S) 41 ms 31 ms -10 ms
unsorted-metas (XL) 1 ms 1 ms +0 ms
unsorted-metas (XXL) 1 ms 1 ms +0 ms
unsorted-named-attributes (L) 28 ms 17 ms -11 ms
unsorted-named-attributes (M) 21 ms 8 ms -13 ms
unsorted-named-attributes (S) 80 ms 35 ms -45 ms
unsorted-named-attributes (XL) 34 ms 29 ms -5 ms
unsorted-named-attributes (XXL) 177 ms 122 ms -55 ms
unused-alias (L) 1 ms 1 ms +0 ms
unused-alias (M) 2 ms 1 ms -1 ms
unused-alias (S) 32 ms 25 ms -7 ms
unused-alias (XL) 1 ms 1 ms +0 ms
unused-alias (XXL) 1 ms 1 ms +0 ms
void-attributes-not-higher-than-other (L) 17 ms 14 ms -3 ms
void-attributes-not-higher-than-other (M) 9 ms 5 ms -4 ms
void-attributes-not-higher-than-other (S) 38 ms 33 ms -5 ms
void-attributes-not-higher-than-other (XL) 28 ms 19 ms -9 ms
void-attributes-not-higher-than-other (XXL) 137 ms 150 ms +13 ms
wrong-sprintf-arguments (L) 16 ms 13 ms -3 ms
wrong-sprintf-arguments (M) 9 ms 9 ms +0 ms
wrong-sprintf-arguments (S) 41 ms 39 ms -2 ms
wrong-sprintf-arguments (XL) 38 ms 18 ms -20 ms
wrong-sprintf-arguments (XXL) 138 ms 95 ms -43 ms
wrong-test-order (L) 19 ms 13 ms -6 ms
wrong-test-order (M) 15 ms 6 ms -9 ms
wrong-test-order (S) 32 ms 33 ms +1 ms
wrong-test-order (XL) 31 ms 23 ms -8 ms
wrong-test-order (XXL) 145 ms 115 ms -30 ms

@volodya-lombrozo

Copy link
Copy Markdown
Member

@VasilevNStas Could u update this PR, please?

@VasilevNStas
VasilevNStas force-pushed the fix/issue-20-mystery-objects branch from 4745435 to 462765d Compare September 3, 2026 07:15
@VasilevNStas

Copy link
Copy Markdown
Contributor Author

@volodya-lombrozo Updated — the branch is rebased on the current master and the conflict is resolved.

What changed:

  1. Rebased on master (104 commits behind); the MonoLints conflict was resolved by keeping master’s javaLints() (which now includes LtTestNotVerb and the IOException handling) and adding LtMystery to that list — the diff against master is now exactly the 9 files of this PR.
  2. Dropped javadoc from private methods in LtMystery and LtMysteryTest (qulice 0.32.0 NoJavadocForPrivateMethodsCheck).

Verified locally: mvn clean install -Pqulice (1017 rules) and mvn clean test (663 tests, incl. 6 LtMysteryTest cases) pass.

@VasilevNStas
VasilevNStas force-pushed the fix/issue-20-mystery-objects branch from 462765d to d93d329 Compare September 5, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Mystery" objects must be prohibited

2 participants