lutaml 0.10.4 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +8 -0
- data/.rubocop.yml +10 -0
- data/.rubocop_todo.yml +218 -94
- data/TODO.cleanups/01-resolve-production-todos.md +65 -0
- data/TODO.cleanups/02-reduce-metrics-offenses.md +37 -0
- data/TODO.cleanups/03-reduce-rspec-multiple-expectations.md +54 -0
- data/TODO.cleanups/04-reduce-rspec-example-length.md +45 -0
- data/TODO.cleanups/05-replace-marshal-load.md +37 -0
- data/TODO.cleanups/06-replace-eval-in-tests.md +41 -0
- data/TODO.cleanups/07-fix-lint-offenses.md +74 -0
- data/TODO.cleanups/08-reduce-memoized-helpers-and-nesting.md +43 -0
- data/TODO.cleanups/09-reduce-verified-doubles-and-rspec-style.md +57 -0
- data/TODO.cleanups/10-split-large-files.md +47 -0
- data/bin/console +0 -1
- data/exe/lutaml +1 -0
- data/lib/lutaml/cli/element_identifier.rb +3 -6
- data/lib/lutaml/cli/interactive_shell/bookmark_commands.rb +88 -0
- data/lib/lutaml/cli/interactive_shell/command_base.rb +32 -0
- data/lib/lutaml/cli/interactive_shell/export_handler.rb +67 -0
- data/lib/lutaml/cli/interactive_shell/help_display.rb +114 -0
- data/lib/lutaml/cli/interactive_shell/navigation_commands.rb +135 -0
- data/lib/lutaml/cli/interactive_shell/query_commands.rb +185 -0
- data/lib/lutaml/cli/interactive_shell.rb +116 -802
- data/lib/lutaml/cli/uml/build_command.rb +5 -5
- data/lib/lutaml/cli/uml/verify_command.rb +0 -1
- data/lib/lutaml/converter/xmi_to_uml.rb +3 -153
- data/lib/lutaml/converter/xmi_to_uml_generalization.rb +193 -0
- data/lib/lutaml/formatter/graphviz.rb +1 -2
- data/lib/lutaml/qea/database.rb +1 -47
- data/lib/lutaml/qea/factory/association_builder.rb +188 -0
- data/lib/lutaml/qea/factory/base_transformer.rb +0 -1
- data/lib/lutaml/qea/factory/class_transformer.rb +40 -590
- data/lib/lutaml/qea/factory/diagram_transformer.rb +0 -3
- data/lib/lutaml/qea/factory/generalization_builder.rb +211 -0
- data/lib/lutaml/qea/factory/package_transformer.rb +1 -2
- data/lib/lutaml/qea/factory/stereotype_loader.rb +34 -0
- data/lib/lutaml/qea/lookup_indexes.rb +54 -0
- data/lib/lutaml/qea/models/ea_datatype.rb +0 -2
- data/lib/lutaml/qea/validation/validation_engine.rb +0 -2
- data/lib/lutaml/uml/has_members.rb +0 -1
- data/lib/lutaml/uml/inheritance_walker.rb +92 -0
- data/lib/lutaml/uml/model_helpers.rb +129 -0
- data/lib/lutaml/uml/node/attribute.rb +3 -1
- data/lib/lutaml/uml/node/class_node.rb +3 -3
- data/lib/lutaml/uml/operation.rb +2 -0
- data/lib/lutaml/uml_repository/class_lookup_index.rb +40 -0
- data/lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb +179 -0
- data/lib/lutaml/uml_repository/exporters/markdown/formatting.rb +36 -0
- data/lib/lutaml/uml_repository/exporters/markdown/index_page_builder.rb +73 -0
- data/lib/lutaml/uml_repository/exporters/markdown/link_resolver.rb +40 -0
- data/lib/lutaml/uml_repository/exporters/markdown/package_page_builder.rb +107 -0
- data/lib/lutaml/uml_repository/exporters/markdown_exporter.rb +26 -538
- data/lib/lutaml/uml_repository/index_builder.rb +3 -271
- data/lib/lutaml/uml_repository/index_builders/association_index.rb +141 -0
- data/lib/lutaml/uml_repository/index_builders/class_index.rb +94 -0
- data/lib/lutaml/uml_repository/index_builders/package_index.rb +57 -0
- data/lib/lutaml/uml_repository/package_exporter.rb +10 -20
- data/lib/lutaml/uml_repository/package_loader.rb +37 -17
- data/lib/lutaml/uml_repository/repository/deprecated.rb +39 -0
- data/lib/lutaml/uml_repository/repository/loader.rb +112 -0
- data/lib/lutaml/uml_repository/repository.rb +7 -57
- data/lib/lutaml/uml_repository/static_site/association_serialization.rb +142 -0
- data/lib/lutaml/uml_repository/static_site/configuration.rb +0 -2
- data/lib/lutaml/uml_repository/static_site/data_transformer.rb +52 -873
- data/lib/lutaml/uml_repository/static_site/generator.rb +29 -8
- data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +1 -4
- data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +78 -0
- data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +124 -0
- data/lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb +60 -0
- data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +258 -0
- data/lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb +48 -0
- data/lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb +57 -0
- data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +94 -0
- data/lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb +93 -0
- data/lib/lutaml/version.rb +1 -1
- data/lib/lutaml/xmi/liquid_drops/association_drop.rb +13 -35
- data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +12 -18
- data/lib/lutaml/xmi/liquid_drops/cardinality_drop.rb +14 -6
- data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +0 -3
- data/lib/lutaml/xmi/liquid_drops/constraint_drop.rb +1 -3
- data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +13 -70
- data/lib/lutaml/xmi/liquid_drops/dependency_drop.rb +2 -5
- data/lib/lutaml/xmi/liquid_drops/diagram_drop.rb +5 -11
- data/lib/lutaml/xmi/liquid_drops/enum_drop.rb +8 -16
- data/lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb +3 -9
- data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +11 -13
- data/lib/lutaml/xmi/liquid_drops/generalization_drop.rb +27 -85
- data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +39 -91
- data/lib/lutaml/xmi/liquid_drops/operation_drop.rb +3 -9
- data/lib/lutaml/xmi/liquid_drops/package_drop.rb +16 -44
- data/lib/lutaml/xmi/liquid_drops/root_drop.rb +3 -11
- data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +2 -5
- data/lib/lutaml/xmi/parsers/xmi_base.rb +2 -749
- data/lib/lutaml/xmi/parsers/xmi_class_members.rb +45 -0
- data/lib/lutaml/xmi/parsers/xmi_connector.rb +251 -0
- data/lib/lutaml/xmi/parsers/xml.rb +7 -120
- data/lib/lutaml/xmi/xmi_lookup_service.rb +42 -0
- data/lib/lutaml.rb +0 -1
- metadata +48 -21
- data/lib/lutaml/cli/commands/base_command.rb +0 -118
- data/lib/lutaml/command_line.rb +0 -272
- data/lib/lutaml/sysml/allocate.rb +0 -9
- data/lib/lutaml/sysml/allocated.rb +0 -9
- data/lib/lutaml/sysml/binding_connector.rb +0 -9
- data/lib/lutaml/sysml/block.rb +0 -32
- data/lib/lutaml/sysml/constraint_block.rb +0 -14
- data/lib/lutaml/sysml/copy.rb +0 -8
- data/lib/lutaml/sysml/derive_requirement.rb +0 -9
- data/lib/lutaml/sysml/nested_connector_end.rb +0 -13
- data/lib/lutaml/sysml/refine.rb +0 -9
- data/lib/lutaml/sysml/requirement.rb +0 -44
- data/lib/lutaml/sysml/requirement_related.rb +0 -9
- data/lib/lutaml/sysml/satisfy.rb +0 -9
- data/lib/lutaml/sysml/test_case.rb +0 -25
- data/lib/lutaml/sysml/trace.rb +0 -9
- data/lib/lutaml/sysml/verify.rb +0 -8
- data/lib/lutaml/sysml/xmi_file.rb +0 -486
- data/lib/lutaml/sysml.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7d14c7a5bae3898f5e06b776dd0ccd99585a31dc8e64b46399f5b72300723b74
|
|
4
|
+
data.tar.gz: 589966db805d8628b18553b40422d87897953733b39afcecbe575068f00328dd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e9d7775ce3d857dcc2aade2b031b290d25ed836a403b523144529504432b6c70329a7f1afcedbfbf8993456ede5503d2285e17faf43a5e56a85d7675a302ca92
|
|
7
|
+
data.tar.gz: 02aad1765ea02693cfe909e0bded8c0b39fe7590a8476ffd0afce505d3fd5757834b7fdf725bea739f7a8898a4f4d50560c3e5f7a84a241f2b0e532d4be18706
|
data/.gitignore
CHANGED
|
@@ -8,9 +8,17 @@ Gemfile.lock
|
|
|
8
8
|
# rspec failure tracking
|
|
9
9
|
.rspec_status
|
|
10
10
|
/spec/reports/
|
|
11
|
+
/spec/tmp/
|
|
11
12
|
/tmp/
|
|
12
13
|
/.yardoc
|
|
13
14
|
/_yardoc/
|
|
14
15
|
|
|
15
16
|
_site/
|
|
16
17
|
old-docs
|
|
18
|
+
|
|
19
|
+
# Editor / OS
|
|
20
|
+
.DS_Store
|
|
21
|
+
|
|
22
|
+
# Transient planning files
|
|
23
|
+
TODO.*/
|
|
24
|
+
.rubocop_todo.yml.tmp
|
data/.rubocop.yml
CHANGED
|
@@ -17,3 +17,13 @@ plugins:
|
|
|
17
17
|
|
|
18
18
|
AllCops:
|
|
19
19
|
TargetRubyVersion: 3.2
|
|
20
|
+
|
|
21
|
+
# VerifiedDoubles is disabled because many spec files use double() to mock
|
|
22
|
+
# UML model classes (Lutaml::Uml::Class, Package, etc.) that don't implement
|
|
23
|
+
# all stubbed methods as real Ruby methods (they use Lutaml::Model::Serializable
|
|
24
|
+
# attribute declarations). Converting to instance_double would cause test failures
|
|
25
|
+
# due to method verification.
|
|
26
|
+
RSpec/VerifiedDoubles:
|
|
27
|
+
Enabled: false
|
|
28
|
+
Exclude:
|
|
29
|
+
- 'spec/**/*'
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,32 +1,163 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2026-
|
|
3
|
+
# on 2026-05-06 18:53:03 UTC using RuboCop version 1.86.1.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
+
# Offense count: 8
|
|
10
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
11
|
+
# Configuration parameters: EnforcedStyle, IndentationWidth.
|
|
12
|
+
# SupportedStyles: with_first_argument, with_fixed_indentation
|
|
13
|
+
Layout/ArgumentAlignment:
|
|
14
|
+
Exclude:
|
|
15
|
+
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
16
|
+
- 'lib/lutaml/uml_repository/exporters/markdown_exporter.rb'
|
|
17
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
18
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
19
|
+
|
|
20
|
+
# Offense count: 11
|
|
21
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
22
|
+
# Configuration parameters: EnforcedStyleAlignWith.
|
|
23
|
+
# SupportedStylesAlignWith: either, start_of_block, start_of_line
|
|
24
|
+
Layout/BlockAlignment:
|
|
25
|
+
Exclude:
|
|
26
|
+
- 'lib/lutaml/qea/factory/class_transformer.rb'
|
|
27
|
+
- 'lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb'
|
|
28
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
29
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb'
|
|
30
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb'
|
|
31
|
+
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
32
|
+
- 'spec/lutaml/uml_repository/static_site/template_file_system_spec.rb'
|
|
33
|
+
|
|
34
|
+
# Offense count: 11
|
|
35
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
36
|
+
Layout/BlockEndNewline:
|
|
37
|
+
Exclude:
|
|
38
|
+
- 'lib/lutaml/qea/factory/class_transformer.rb'
|
|
39
|
+
- 'lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb'
|
|
40
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
41
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb'
|
|
42
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb'
|
|
43
|
+
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
44
|
+
- 'spec/lutaml/uml_repository/static_site/template_file_system_spec.rb'
|
|
45
|
+
|
|
46
|
+
# Offense count: 2
|
|
47
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
48
|
+
Layout/ClosingParenthesisIndentation:
|
|
49
|
+
Exclude:
|
|
50
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
51
|
+
|
|
9
52
|
# Offense count: 1
|
|
10
53
|
# This cop supports safe autocorrection (--autocorrect).
|
|
11
54
|
Layout/ElseAlignment:
|
|
12
55
|
Exclude:
|
|
13
|
-
- 'lib/lutaml/
|
|
56
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
57
|
+
|
|
58
|
+
# Offense count: 16
|
|
59
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
60
|
+
Layout/EmptyLineAfterGuardClause:
|
|
61
|
+
Exclude:
|
|
62
|
+
- 'lib/lutaml/qea/factory/association_builder.rb'
|
|
63
|
+
- 'lib/lutaml/uml/inheritance_walker.rb'
|
|
64
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
65
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
66
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb'
|
|
67
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
68
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb'
|
|
69
|
+
|
|
70
|
+
# Offense count: 4
|
|
71
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
72
|
+
# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, DefLikeMacros, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
|
|
73
|
+
Layout/EmptyLineBetweenDefs:
|
|
74
|
+
Exclude:
|
|
75
|
+
- 'lib/lutaml/cli/interactive_shell/command_base.rb'
|
|
76
|
+
|
|
77
|
+
# Offense count: 1
|
|
78
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
79
|
+
Layout/EmptyLinesAfterModuleInclusion:
|
|
80
|
+
Exclude:
|
|
81
|
+
- 'lib/lutaml/uml_repository/repository.rb'
|
|
14
82
|
|
|
15
83
|
# Offense count: 1
|
|
16
84
|
# This cop supports safe autocorrection (--autocorrect).
|
|
85
|
+
# Configuration parameters: EnforcedStyleAlignWith.
|
|
86
|
+
# SupportedStylesAlignWith: keyword, variable, start_of_line
|
|
87
|
+
Layout/EndAlignment:
|
|
88
|
+
Exclude:
|
|
89
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
90
|
+
|
|
91
|
+
# Offense count: 2
|
|
92
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
93
|
+
# Configuration parameters: EnforcedStyle, IndentationWidth.
|
|
94
|
+
# SupportedStyles: consistent, consistent_relative_to_receiver, special_for_inner_method_call, special_for_inner_method_call_in_parentheses
|
|
95
|
+
Layout/FirstArgumentIndentation:
|
|
96
|
+
Exclude:
|
|
97
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
98
|
+
|
|
99
|
+
# Offense count: 2
|
|
100
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
101
|
+
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
|
|
102
|
+
# SupportedHashRocketStyles: key, separator, table
|
|
103
|
+
# SupportedColonStyles: key, separator, table
|
|
104
|
+
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
|
|
105
|
+
Layout/HashAlignment:
|
|
106
|
+
Exclude:
|
|
107
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
108
|
+
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
109
|
+
|
|
110
|
+
# Offense count: 24
|
|
111
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
17
112
|
# Configuration parameters: Width, EnforcedStyleAlignWith, AllowedPatterns.
|
|
18
113
|
# SupportedStylesAlignWith: start_of_line, relative_to_receiver
|
|
19
114
|
Layout/IndentationWidth:
|
|
20
115
|
Exclude:
|
|
21
116
|
- 'lib/lutaml/qea/factory/class_transformer.rb'
|
|
117
|
+
- 'lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb'
|
|
118
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
119
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
120
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb'
|
|
121
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb'
|
|
122
|
+
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
123
|
+
- 'spec/lutaml/uml_repository/static_site/template_file_system_spec.rb'
|
|
22
124
|
|
|
23
|
-
# Offense count:
|
|
125
|
+
# Offense count: 192
|
|
24
126
|
# This cop supports safe autocorrection (--autocorrect).
|
|
25
127
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
|
|
26
128
|
# URISchemes: http, https
|
|
27
129
|
Layout/LineLength:
|
|
28
130
|
Enabled: false
|
|
29
131
|
|
|
132
|
+
# Offense count: 1
|
|
133
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
134
|
+
# Configuration parameters: EnforcedStyle.
|
|
135
|
+
# SupportedStyles: symmetrical, new_line, same_line
|
|
136
|
+
Layout/MultilineMethodCallBraceLayout:
|
|
137
|
+
Exclude:
|
|
138
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
139
|
+
|
|
140
|
+
# Offense count: 2
|
|
141
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
142
|
+
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
|
|
143
|
+
# SupportedStyles: space, no_space, compact
|
|
144
|
+
# SupportedStylesForEmptyBraces: space, no_space
|
|
145
|
+
Layout/SpaceInsideHashLiteralBraces:
|
|
146
|
+
Exclude:
|
|
147
|
+
- 'lib/lutaml/uml/model_helpers.rb'
|
|
148
|
+
|
|
149
|
+
# Offense count: 11
|
|
150
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
151
|
+
# Configuration parameters: AllowInHeredoc.
|
|
152
|
+
Layout/TrailingWhitespace:
|
|
153
|
+
Exclude:
|
|
154
|
+
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
155
|
+
- 'lib/lutaml/uml_repository/exporters/markdown_exporter.rb'
|
|
156
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
157
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
158
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
159
|
+
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
160
|
+
|
|
30
161
|
# Offense count: 1
|
|
31
162
|
Lint/BinaryOperatorWithIdenticalOperands:
|
|
32
163
|
Exclude:
|
|
@@ -43,23 +174,12 @@ Lint/ConstantDefinitionInBlock:
|
|
|
43
174
|
- 'spec/lutaml/model_transformations_spec.rb'
|
|
44
175
|
- 'spec/lutaml/uml_repository/presenters/presenter_factory_spec.rb'
|
|
45
176
|
|
|
46
|
-
# Offense count:
|
|
47
|
-
Lint/CopDirectiveSyntax:
|
|
48
|
-
Exclude:
|
|
49
|
-
- 'lib/lutaml/uml_repository/repository.rb'
|
|
50
|
-
|
|
51
|
-
# Offense count: 8
|
|
177
|
+
# Offense count: 2
|
|
52
178
|
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
|
|
53
179
|
Lint/DuplicateBranch:
|
|
54
180
|
Exclude:
|
|
55
|
-
- 'lib/lutaml/
|
|
56
|
-
- 'lib/lutaml/cli/uml/verify_command.rb'
|
|
57
|
-
- 'lib/lutaml/qea/factory/base_transformer.rb'
|
|
58
|
-
- 'lib/lutaml/qea/models/ea_datatype.rb'
|
|
59
|
-
- 'lib/lutaml/qea/validation/validation_engine.rb'
|
|
181
|
+
- 'lib/lutaml/uml/model_helpers.rb'
|
|
60
182
|
- 'lib/lutaml/uml_repository/queries/package_query.rb'
|
|
61
|
-
- 'lib/lutaml/uml_repository/static_site/configuration.rb'
|
|
62
|
-
- 'lib/lutaml/uml_repository/static_site/search_index_builder.rb'
|
|
63
183
|
|
|
64
184
|
# Offense count: 4
|
|
65
185
|
# Configuration parameters: AllowComments, AllowEmptyLambdas.
|
|
@@ -89,6 +209,13 @@ Lint/MissingSuper:
|
|
|
89
209
|
Exclude:
|
|
90
210
|
- 'lib/lutaml/uml_repository/lazy_repository.rb'
|
|
91
211
|
|
|
212
|
+
# Offense count: 2
|
|
213
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
214
|
+
Lint/RedundantRequireStatement:
|
|
215
|
+
Exclude:
|
|
216
|
+
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
217
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
218
|
+
|
|
92
219
|
# Offense count: 1
|
|
93
220
|
# This cop supports safe autocorrection (--autocorrect).
|
|
94
221
|
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
|
|
@@ -97,62 +224,45 @@ Lint/UnusedMethodArgument:
|
|
|
97
224
|
Exclude:
|
|
98
225
|
- 'lib/lutaml/cli/uml/export_command.rb'
|
|
99
226
|
|
|
100
|
-
# Offense count:
|
|
227
|
+
# Offense count: 2
|
|
228
|
+
Lint/UselessConstantScoping:
|
|
229
|
+
Exclude:
|
|
230
|
+
- 'lib/lutaml/cli/interactive_shell.rb'
|
|
231
|
+
|
|
232
|
+
# Offense count: 51
|
|
101
233
|
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
|
102
234
|
Metrics/AbcSize:
|
|
103
|
-
|
|
104
|
-
- 'lib/lutaml/converter/xmi_to_uml.rb'
|
|
105
|
-
- 'lib/lutaml/model_transformations/parsers/base_parser.rb'
|
|
106
|
-
- 'lib/lutaml/qea/database.rb'
|
|
107
|
-
- 'lib/lutaml/uml_repository/index_builder.rb'
|
|
108
|
-
- 'lib/lutaml/uml_repository/queries/class_query.rb'
|
|
109
|
-
- 'lib/lutaml/uml_repository/queries/inheritance_query.rb'
|
|
110
|
-
- 'lib/lutaml/xmi/parsers/xmi_base.rb'
|
|
235
|
+
Enabled: false
|
|
111
236
|
|
|
112
|
-
# Offense count:
|
|
237
|
+
# Offense count: 4
|
|
113
238
|
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
|
|
114
239
|
# AllowedMethods: refine
|
|
115
240
|
Metrics/BlockLength:
|
|
116
|
-
Max:
|
|
241
|
+
Max: 53
|
|
117
242
|
|
|
118
|
-
# Offense count:
|
|
243
|
+
# Offense count: 37
|
|
119
244
|
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
|
|
120
245
|
Metrics/CyclomaticComplexity:
|
|
121
|
-
|
|
122
|
-
- 'lib/lutaml/cli/tree_view_formatter.rb'
|
|
123
|
-
- 'lib/lutaml/converter/xmi_to_uml.rb'
|
|
124
|
-
- 'lib/lutaml/qea/database.rb'
|
|
125
|
-
- 'lib/lutaml/qea/factory/enum_transformer.rb'
|
|
126
|
-
- 'lib/lutaml/uml_repository/index_builder.rb'
|
|
127
|
-
- 'lib/lutaml/uml_repository/queries/class_query.rb'
|
|
128
|
-
- 'lib/lutaml/uml_repository/queries/inheritance_query.rb'
|
|
129
|
-
- 'lib/lutaml/uml_repository/queries/search_query.rb'
|
|
130
|
-
- 'lib/lutaml/xmi/parsers/xmi_base.rb'
|
|
246
|
+
Enabled: false
|
|
131
247
|
|
|
132
|
-
# Offense count:
|
|
248
|
+
# Offense count: 66
|
|
133
249
|
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
|
134
250
|
Metrics/MethodLength:
|
|
135
|
-
Max:
|
|
251
|
+
Max: 62
|
|
136
252
|
|
|
137
|
-
# Offense count:
|
|
253
|
+
# Offense count: 29
|
|
138
254
|
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
|
|
139
255
|
Metrics/PerceivedComplexity:
|
|
140
|
-
|
|
141
|
-
- 'lib/lutaml/converter/xmi_to_uml.rb'
|
|
142
|
-
- 'lib/lutaml/qea/database.rb'
|
|
143
|
-
- 'lib/lutaml/qea/factory/enum_transformer.rb'
|
|
144
|
-
- 'lib/lutaml/uml_repository/index_builder.rb'
|
|
145
|
-
- 'lib/lutaml/uml_repository/queries/class_query.rb'
|
|
146
|
-
- 'lib/lutaml/uml_repository/queries/inheritance_query.rb'
|
|
147
|
-
- 'lib/lutaml/xmi/parsers/xmi_base.rb'
|
|
256
|
+
Enabled: false
|
|
148
257
|
|
|
149
|
-
# Offense count:
|
|
258
|
+
# Offense count: 3
|
|
150
259
|
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
|
|
151
260
|
# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
|
|
152
261
|
Naming/MethodParameterName:
|
|
153
262
|
Exclude:
|
|
154
263
|
- 'lib/lutaml/cli/tree_view_formatter.rb'
|
|
155
264
|
- 'lib/lutaml/uml_repository/static_site/generator.rb'
|
|
265
|
+
- 'spec/lutaml/parsers/serialize_xmi_to_liquid_spec.rb'
|
|
156
266
|
|
|
157
267
|
# Offense count: 1
|
|
158
268
|
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
|
|
@@ -162,14 +272,13 @@ Naming/PredicateMethod:
|
|
|
162
272
|
Exclude:
|
|
163
273
|
- 'lib/lutaml/qea/factory/document_builder.rb'
|
|
164
274
|
|
|
165
|
-
# Offense count:
|
|
275
|
+
# Offense count: 3
|
|
166
276
|
# Configuration parameters: MinSize.
|
|
167
277
|
Performance/CollectionLiteralInLoop:
|
|
168
278
|
Exclude:
|
|
169
|
-
- 'lib/lutaml/xmi/parsers/
|
|
279
|
+
- 'lib/lutaml/xmi/parsers/xmi_connector.rb'
|
|
170
280
|
- 'spec/lutaml/qea/infrastructure/table_reader_spec.rb'
|
|
171
281
|
- 'spec/lutaml/uml_repository/index_builder_spec.rb'
|
|
172
|
-
- 'spec/lutaml/uml_repository/queries/inheritance_query_spec.rb'
|
|
173
282
|
|
|
174
283
|
# Offense count: 2
|
|
175
284
|
Performance/MapMethodChain:
|
|
@@ -211,10 +320,10 @@ RSpec/ContextWording:
|
|
|
211
320
|
RSpec/DescribeClass:
|
|
212
321
|
Enabled: false
|
|
213
322
|
|
|
214
|
-
# Offense count:
|
|
323
|
+
# Offense count: 651
|
|
215
324
|
# Configuration parameters: CountAsOne.
|
|
216
325
|
RSpec/ExampleLength:
|
|
217
|
-
Max:
|
|
326
|
+
Max: 30
|
|
218
327
|
|
|
219
328
|
# Offense count: 7
|
|
220
329
|
# This cop supports safe autocorrection (--autocorrect).
|
|
@@ -241,20 +350,6 @@ RSpec/IndexedLet:
|
|
|
241
350
|
- 'spec/lutaml/qea/repositories/base_repository_spec.rb'
|
|
242
351
|
- 'spec/lutaml/qea/repositories/object_repository_spec.rb'
|
|
243
352
|
|
|
244
|
-
# Offense count: 48
|
|
245
|
-
# Configuration parameters: AssignmentOnly.
|
|
246
|
-
RSpec/InstanceVariable:
|
|
247
|
-
Exclude:
|
|
248
|
-
- 'spec/lutaml/parsers/parse_xmi_spec.rb'
|
|
249
|
-
- 'spec/lutaml/qea/verification/comprehensive_equivalence_spec.rb'
|
|
250
|
-
|
|
251
|
-
# Offense count: 2
|
|
252
|
-
# This cop supports safe autocorrection (--autocorrect).
|
|
253
|
-
RSpec/IteratedExpectation:
|
|
254
|
-
Exclude:
|
|
255
|
-
- 'spec/lutaml/ea/diagram/layout_engine_spec.rb'
|
|
256
|
-
- 'spec/lutaml/uml_repository/queries/inheritance_query_spec.rb'
|
|
257
|
-
|
|
258
353
|
# Offense count: 15
|
|
259
354
|
RSpec/LeakyConstantDeclaration:
|
|
260
355
|
Exclude:
|
|
@@ -279,19 +374,19 @@ RSpec/MessageSpies:
|
|
|
279
374
|
- 'spec/lutaml/uml_repository/presenters/diagram_presenter_spec.rb'
|
|
280
375
|
- 'spec/lutaml/uml_repository/repository_spec.rb'
|
|
281
376
|
|
|
282
|
-
# Offense count:
|
|
377
|
+
# Offense count: 37
|
|
283
378
|
RSpec/MultipleExpectations:
|
|
284
|
-
Max:
|
|
379
|
+
Max: 6
|
|
285
380
|
|
|
286
|
-
# Offense count:
|
|
381
|
+
# Offense count: 151
|
|
287
382
|
# Configuration parameters: AllowSubject.
|
|
288
383
|
RSpec/MultipleMemoizedHelpers:
|
|
289
384
|
Max: 11
|
|
290
385
|
|
|
291
|
-
# Offense count:
|
|
386
|
+
# Offense count: 35
|
|
292
387
|
# Configuration parameters: AllowedGroups.
|
|
293
388
|
RSpec/NestedGroups:
|
|
294
|
-
Max:
|
|
389
|
+
Max: 4
|
|
295
390
|
|
|
296
391
|
# Offense count: 2
|
|
297
392
|
# Configuration parameters: AllowedPatterns.
|
|
@@ -301,13 +396,12 @@ RSpec/NoExpectationExample:
|
|
|
301
396
|
- 'spec/lutaml/qea/verification/comprehensive_equivalence_spec.rb'
|
|
302
397
|
- 'spec/lutaml/uml_repository/static_site/generator_spec.rb'
|
|
303
398
|
|
|
304
|
-
# Offense count:
|
|
399
|
+
# Offense count: 12
|
|
305
400
|
RSpec/RepeatedExample:
|
|
306
401
|
Exclude:
|
|
307
402
|
- 'spec/lutaml/cli/package_commands_spec.rb'
|
|
308
403
|
- 'spec/lutaml/ea/diagram/svg_renderer_spec.rb'
|
|
309
404
|
- 'spec/lutaml/qea/validation/validation_engine_spec.rb'
|
|
310
|
-
- 'spec/lutaml/uml_repository/presenters/diagram_presenter_spec.rb'
|
|
311
405
|
- 'spec/lutaml/uml_repository/static_site/data_transformer_spec.rb'
|
|
312
406
|
|
|
313
407
|
# Offense count: 2
|
|
@@ -315,7 +409,7 @@ RSpec/RepeatedExampleGroupDescription:
|
|
|
315
409
|
Exclude:
|
|
316
410
|
- 'spec/lutaml/uml/parsers/dsl_spec.rb'
|
|
317
411
|
|
|
318
|
-
# Offense count:
|
|
412
|
+
# Offense count: 5
|
|
319
413
|
# Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
|
|
320
414
|
# SupportedInflectors: default, active_support
|
|
321
415
|
RSpec/SpecFilePathFormat:
|
|
@@ -323,34 +417,35 @@ RSpec/SpecFilePathFormat:
|
|
|
323
417
|
- 'spec/express/parsers/exp_spec.rb'
|
|
324
418
|
- 'spec/lutaml/parser_qea_spec.rb'
|
|
325
419
|
- 'spec/lutaml/parsers/parse_xmi_spec.rb'
|
|
326
|
-
- 'spec/lutaml/parsers/serialize_generalization_by_name_spec.rb'
|
|
327
420
|
- 'spec/lutaml/parsers/serialize_xmi_to_liquid_spec.rb'
|
|
328
421
|
- 'spec/lutaml/uml_repository/web_ui/app_spec.rb'
|
|
329
422
|
|
|
330
|
-
# Offense count: 6
|
|
331
|
-
RSpec/UnspecifiedException:
|
|
332
|
-
Exclude:
|
|
333
|
-
- 'spec/lutaml/model_transformations/parsers/qea_parser_spec.rb'
|
|
334
|
-
- 'spec/lutaml/model_transformations/parsers/xmi_parser_spec.rb'
|
|
335
|
-
- 'spec/lutaml/model_transformations_spec.rb'
|
|
336
|
-
- 'spec/lutaml/parser_qea_spec.rb'
|
|
337
|
-
- 'spec/lutaml/qea/integration/full_parsing_spec.rb'
|
|
338
|
-
|
|
339
|
-
# Offense count: 212
|
|
340
|
-
# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
|
|
341
|
-
RSpec/VerifiedDoubles:
|
|
342
|
-
Enabled: false
|
|
343
|
-
|
|
344
423
|
# Offense count: 3
|
|
345
424
|
Security/Eval:
|
|
346
425
|
Exclude:
|
|
347
426
|
- 'spec/lutaml/cli/uml/search_command_spec.rb'
|
|
348
427
|
|
|
349
|
-
# Offense count:
|
|
428
|
+
# Offense count: 2
|
|
350
429
|
Security/MarshalLoad:
|
|
351
430
|
Exclude:
|
|
352
431
|
- 'lib/lutaml/uml_repository/package_loader.rb'
|
|
432
|
+
|
|
433
|
+
# Offense count: 15
|
|
434
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
435
|
+
# Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, AllowedMethods, AllowedPatterns, AllowBracesOnProceduralOneLiners, BracesRequiredMethods.
|
|
436
|
+
# SupportedStyles: line_count_based, semantic, braces_for_chaining, always_braces
|
|
437
|
+
# ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
|
|
438
|
+
# FunctionalMethods: let, let!, subject, watch
|
|
439
|
+
# AllowedMethods: lambda, proc, it
|
|
440
|
+
Style/BlockDelimiters:
|
|
441
|
+
Exclude:
|
|
442
|
+
- 'lib/lutaml/qea/factory/class_transformer.rb'
|
|
443
|
+
- 'lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb'
|
|
444
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
445
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb'
|
|
446
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb'
|
|
353
447
|
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
448
|
+
- 'spec/lutaml/uml_repository/static_site/template_file_system_spec.rb'
|
|
354
449
|
|
|
355
450
|
# Offense count: 2
|
|
356
451
|
# This cop supports safe autocorrection (--autocorrect).
|
|
@@ -369,11 +464,24 @@ Style/EvalWithLocation:
|
|
|
369
464
|
Exclude:
|
|
370
465
|
- 'spec/lutaml/cli/uml/search_command_spec.rb'
|
|
371
466
|
|
|
467
|
+
# Offense count: 1
|
|
468
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
469
|
+
Style/MultilineTernaryOperator:
|
|
470
|
+
Exclude:
|
|
471
|
+
- 'lib/lutaml/uml_repository/static_site/data_transformer.rb'
|
|
472
|
+
|
|
473
|
+
# Offense count: 1
|
|
474
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
475
|
+
# Configuration parameters: AllowMethodComparison, ComparisonsThreshold.
|
|
476
|
+
Style/MultipleComparison:
|
|
477
|
+
Exclude:
|
|
478
|
+
- 'lib/lutaml/cli/interactive_shell.rb'
|
|
479
|
+
|
|
372
480
|
# Offense count: 1
|
|
373
481
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
374
482
|
Style/PartitionInsteadOfDoubleSelect:
|
|
375
483
|
Exclude:
|
|
376
|
-
- 'lib/lutaml/qea/factory/
|
|
484
|
+
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
377
485
|
|
|
378
486
|
# Offense count: 3
|
|
379
487
|
# Configuration parameters: Max.
|
|
@@ -381,3 +489,19 @@ Style/SafeNavigationChainLength:
|
|
|
381
489
|
Exclude:
|
|
382
490
|
- 'lib/lutaml/qea/validation/attribute_validator.rb'
|
|
383
491
|
- 'lib/lutaml/qea/validation/operation_validator.rb'
|
|
492
|
+
|
|
493
|
+
# Offense count: 1
|
|
494
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
495
|
+
# Configuration parameters: EnforcedStyleForMultiline.
|
|
496
|
+
# SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
|
|
497
|
+
Style/TrailingCommaInArguments:
|
|
498
|
+
Exclude:
|
|
499
|
+
- 'lib/lutaml/qea/factory/class_transformer.rb'
|
|
500
|
+
|
|
501
|
+
# Offense count: 2
|
|
502
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
503
|
+
# Configuration parameters: EnforcedStyleForMultiline.
|
|
504
|
+
# SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
|
|
505
|
+
Style/TrailingCommaInHashLiteral:
|
|
506
|
+
Exclude:
|
|
507
|
+
- 'lib/lutaml/cli/interactive_shell.rb'
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# 01 — Resolve 7 production TODOs
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
Seven `TODO`/`FIXME` comments in `lib/` represent incomplete features, missing validation, or known tech debt. They risk silent data loss or incorrect behavior.
|
|
6
|
+
|
|
7
|
+
## Items
|
|
8
|
+
|
|
9
|
+
### 1. `lib/lutaml/qea/factory/diagram_transformer.rb:28`
|
|
10
|
+
```ruby
|
|
11
|
+
# TODO: Fix diagram_type assignment -
|
|
12
|
+
# lutaml-model compatibility issue
|
|
13
|
+
# diagram.diagram_type = ea_diagram.diagram_type
|
|
14
|
+
```
|
|
15
|
+
**Impact**: Diagram type is silently dropped during QEA→UML transformation. The `diagram_type` attribute exists on `Lutaml::Uml::Diagram` but is never populated from QEA.
|
|
16
|
+
**Fix**: Investigate lutaml-model compatibility (likely a type mismatch or missing attribute). Either fix the assignment or document why it's intentionally omitted.
|
|
17
|
+
|
|
18
|
+
### 2. `lib/lutaml/qea/factory/package_transformer.rb:32`
|
|
19
|
+
```ruby
|
|
20
|
+
# TODO: Fix tagged_values assignment - temporarily commented out
|
|
21
|
+
# pkg.tagged_values = load_tagged_values(ea_package.ea_guid)
|
|
22
|
+
```
|
|
23
|
+
**Impact**: Tagged values (metadata/annotations) are silently dropped from packages during QEA→UML transformation. This causes XMI/QEA equivalence mismatches.
|
|
24
|
+
**Fix**: Check if `load_tagged_values` returns correct type. Likely needs the same serialization pattern used in class_transformer.
|
|
25
|
+
|
|
26
|
+
### 3. `lib/lutaml/formatter/graphviz.rb:56`
|
|
27
|
+
```ruby
|
|
28
|
+
# TODO: set rankdir
|
|
29
|
+
# @graph['rankdir'] = 'BT'
|
|
30
|
+
```
|
|
31
|
+
**Impact**: Graph direction can't be configured. The value is commented out.
|
|
32
|
+
**Fix**: Either expose as configurable option or remove dead code.
|
|
33
|
+
|
|
34
|
+
### 4. `lib/lutaml/uml/node/class_node.rb:19`
|
|
35
|
+
```ruby
|
|
36
|
+
@modifier = value.to_s # TODO: Validate?
|
|
37
|
+
```
|
|
38
|
+
**Impact**: No validation on modifier values — invalid strings accepted silently.
|
|
39
|
+
**Fix**: Add enum validation for known modifiers (`public`, `private`, `protected`, etc.) or remove the TODO if validation isn't needed.
|
|
40
|
+
|
|
41
|
+
### 5. `lib/lutaml/uml/node/attribute.rb:27`
|
|
42
|
+
```ruby
|
|
43
|
+
@access = value.to_s # TODO: Validate?
|
|
44
|
+
```
|
|
45
|
+
**Impact**: Same as #4 but for access modifiers on attributes.
|
|
46
|
+
**Fix**: Same as #4 — validate or remove TODO.
|
|
47
|
+
|
|
48
|
+
### 6. `lib/lutaml/uml/node/class_node.rb:24`
|
|
49
|
+
```ruby
|
|
50
|
+
type = member.to_a[0][0] # TODO: This is dumb
|
|
51
|
+
```
|
|
52
|
+
**Impact**: Fragile parsing of member data structure. The `TODO: This is dumb` indicates the developer knew it was wrong but shipped it.
|
|
53
|
+
**Fix**: Replace with structured member parsing using named access.
|
|
54
|
+
|
|
55
|
+
### 7. `lib/lutaml/uml/has_members.rb:8`
|
|
56
|
+
```ruby
|
|
57
|
+
# TODO: move to Parslet::Transform
|
|
58
|
+
```
|
|
59
|
+
**Impact**: Member type logic is in the model instead of the parser layer.
|
|
60
|
+
**Fix**: Evaluate whether moving to Parslet::Transform is still desirable. If not, remove the TODO.
|
|
61
|
+
|
|
62
|
+
## Verification
|
|
63
|
+
|
|
64
|
+
- `grep -rn "TODO\|FIXME" lib/ --include="*.rb"` should return 0 results (or only intentional ones)
|
|
65
|
+
- Full test suite passes: `bundle exec rspec`
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 02 — Reduce Metrics/AbcSize and method complexity (212 + 130 + 11 + 11 + 8 offenses)
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
5 Metrics cops account for **372 offenses** across production code. The worst offenders are large methods that do too much, making them hard to test, debug, and maintain.
|
|
6
|
+
|
|
7
|
+
## Top targets by file
|
|
8
|
+
|
|
9
|
+
| File | AbcSize | MethodLength | Cyclomatic | Perceived | Lines |
|
|
10
|
+
|------|---------|-------------|------------|-----------|-------|
|
|
11
|
+
| `lib/lutaml/xmi/parsers/xmi_base.rb` | Yes | — | Yes | Yes | 1047 |
|
|
12
|
+
| `lib/lutaml/converter/xmi_to_uml.rb` | Yes | — | Yes | Yes | 474 |
|
|
13
|
+
| `lib/lutaml/uml_repository/index_builder.rb` | Yes | — | Yes | Yes | 480 |
|
|
14
|
+
| `lib/lutaml/qea/database.rb` | Yes | — | Yes | Yes | 477 |
|
|
15
|
+
| `lib/lutaml/uml_repository/queries/class_query.rb` | Yes | — | Yes | Yes | 151 |
|
|
16
|
+
| `lib/lutaml/uml_repository/queries/inheritance_query.rb` | Yes | — | Yes | Yes | — |
|
|
17
|
+
| `lib/lutaml/model_transformations/parsers/base_parser.rb` | Yes | — | — | — | — |
|
|
18
|
+
| `lib/lutaml/qea/factory/enum_transformer.rb` | — | — | Yes | Yes | — |
|
|
19
|
+
| `lib/lutaml/uml_repository/queries/search_query.rb` | — | — | Yes | — | — |
|
|
20
|
+
| `lib/lutaml/cli/tree_view_formatter.rb` | — | — | Yes | — | — |
|
|
21
|
+
|
|
22
|
+
## Approach
|
|
23
|
+
|
|
24
|
+
Extract helper methods from god methods. Common patterns:
|
|
25
|
+
|
|
26
|
+
1. **xmi_base.rb** — The 1047-line file has massive parsing methods. Extract per-element-type parsing into separate methods (already partially done).
|
|
27
|
+
2. **converter/xmi_to_uml.rb** — The `build_*` methods handle too many concerns. Extract mapping logic per element type.
|
|
28
|
+
3. **index_builder.rb** — The single-pass `build_all` is better than before but individual index builders can be further split.
|
|
29
|
+
4. **database.rb** — The `build_lookup_indexes` method builds all indexes at once; split into per-index methods.
|
|
30
|
+
|
|
31
|
+
**Do NOT**: Increase Max thresholds in `.rubocop_todo.yml`. Instead, refactor to reduce actual complexity.
|
|
32
|
+
|
|
33
|
+
## Verification
|
|
34
|
+
|
|
35
|
+
- `bundle exec rubocop --only Metrics` shows reduced offense counts
|
|
36
|
+
- `bundle exec rspec` passes
|
|
37
|
+
- No functional changes — pure refactoring
|