canon 0.1.6 → 0.1.8

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.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +67 -81
  3. data/README.adoc +401 -8
  4. data/docs/.lycheeignore +69 -0
  5. data/docs/Gemfile +9 -0
  6. data/docs/INDEX.adoc +99 -182
  7. data/docs/_config.yml +100 -0
  8. data/docs/advanced/diff-classification.adoc +547 -0
  9. data/docs/advanced/diff-pipeline.adoc +358 -0
  10. data/docs/advanced/extending-canon.adoc +193 -0
  11. data/docs/advanced/index.adoc +214 -0
  12. data/docs/advanced/semantic-diff-report.adoc +390 -0
  13. data/docs/advanced/verbose-mode-architecture.adoc +480 -0
  14. data/docs/features/diff-formatting/algorithm-specific-output.adoc +533 -0
  15. data/docs/features/diff-formatting/character-visualization.adoc +528 -0
  16. data/docs/features/diff-formatting/colors-and-symbols.adoc +606 -0
  17. data/docs/features/diff-formatting/context-and-grouping.adoc +490 -0
  18. data/docs/features/diff-formatting/display-filtering.adoc +472 -0
  19. data/docs/features/diff-formatting/index.adoc +140 -0
  20. data/docs/features/environment-configuration/index.adoc +327 -0
  21. data/docs/features/environment-configuration/override-system.adoc +436 -0
  22. data/docs/features/environment-configuration/size-limits.adoc +273 -0
  23. data/docs/features/index.adoc +173 -0
  24. data/docs/features/input-validation/index.adoc +521 -0
  25. data/docs/features/match-options/algorithm-specific-behavior.adoc +365 -0
  26. data/docs/features/match-options/html-policies.adoc +312 -0
  27. data/docs/features/match-options/index.adoc +621 -0
  28. data/docs/getting-started/index.adoc +83 -0
  29. data/docs/getting-started/quick-start.adoc +76 -0
  30. data/docs/guides/choosing-configuration.adoc +689 -0
  31. data/docs/guides/index.adoc +181 -0
  32. data/docs/interfaces/cli/index.adoc +498 -0
  33. data/docs/interfaces/index.adoc +101 -0
  34. data/docs/interfaces/rspec/index.adoc +816 -0
  35. data/docs/interfaces/ruby-api/index.adoc +580 -0
  36. data/docs/internals/diffnode-enrichment.adoc +611 -0
  37. data/docs/internals/index.adoc +251 -0
  38. data/docs/lychee.toml +72 -0
  39. data/docs/plans/2025-01-17-html-parser-selection-fix.adoc +250 -0
  40. data/docs/reference/cli-options.adoc +418 -0
  41. data/docs/reference/environment-variables.adoc +375 -0
  42. data/docs/reference/index.adoc +204 -0
  43. data/docs/reference/options-across-interfaces.adoc +417 -0
  44. data/docs/understanding/algorithms/dom-diff.adoc +389 -0
  45. data/docs/understanding/algorithms/index.adoc +314 -0
  46. data/docs/understanding/algorithms/semantic-tree-diff.adoc +533 -0
  47. data/docs/understanding/architecture.adoc +1163 -0
  48. data/docs/understanding/comparison-pipeline.adoc +439 -0
  49. data/docs/understanding/formats/html.adoc +380 -0
  50. data/docs/understanding/formats/index.adoc +261 -0
  51. data/docs/understanding/formats/json.adoc +390 -0
  52. data/docs/understanding/formats/xml.adoc +366 -0
  53. data/docs/understanding/formats/yaml.adoc +504 -0
  54. data/docs/understanding/index.adoc +130 -0
  55. data/false_positive_analysis.txt +0 -0
  56. data/file1.html +1 -0
  57. data/file2.html +1 -0
  58. data/lib/canon/cache.rb +129 -0
  59. data/lib/canon/cli.rb +42 -1
  60. data/lib/canon/commands/diff_command.rb +108 -23
  61. data/lib/canon/comparison/compare_profile.rb +101 -0
  62. data/lib/canon/comparison/comparison_result.rb +41 -2
  63. data/lib/canon/comparison/dimensions/attribute_order_dimension.rb +68 -0
  64. data/lib/canon/comparison/dimensions/attribute_presence_dimension.rb +68 -0
  65. data/lib/canon/comparison/dimensions/attribute_values_dimension.rb +171 -0
  66. data/lib/canon/comparison/dimensions/base_dimension.rb +107 -0
  67. data/lib/canon/comparison/dimensions/comments_dimension.rb +121 -0
  68. data/lib/canon/comparison/dimensions/element_position_dimension.rb +90 -0
  69. data/lib/canon/comparison/dimensions/registry.rb +77 -0
  70. data/lib/canon/comparison/dimensions/structural_whitespace_dimension.rb +119 -0
  71. data/lib/canon/comparison/dimensions/text_content_dimension.rb +96 -0
  72. data/lib/canon/comparison/dimensions.rb +54 -0
  73. data/lib/canon/comparison/format_detector.rb +86 -0
  74. data/lib/canon/comparison/html_comparator.rb +330 -76
  75. data/lib/canon/comparison/html_compare_profile.rb +117 -0
  76. data/lib/canon/comparison/html_parser.rb +80 -0
  77. data/lib/canon/comparison/json_comparator.rb +12 -0
  78. data/lib/canon/comparison/json_parser.rb +19 -0
  79. data/lib/canon/comparison/markup_comparator.rb +293 -0
  80. data/lib/canon/comparison/match_options/base_resolver.rb +143 -0
  81. data/lib/canon/comparison/match_options/json_resolver.rb +82 -0
  82. data/lib/canon/comparison/match_options/xml_resolver.rb +151 -0
  83. data/lib/canon/comparison/match_options/yaml_resolver.rb +87 -0
  84. data/lib/canon/comparison/match_options.rb +79 -436
  85. data/lib/canon/comparison/profile_definition.rb +149 -0
  86. data/lib/canon/comparison/ruby_object_comparator.rb +180 -0
  87. data/lib/canon/comparison/strategies/base_match_strategy.rb +99 -0
  88. data/lib/canon/comparison/strategies/match_strategy_factory.rb +74 -0
  89. data/lib/canon/comparison/strategies/semantic_tree_match_strategy.rb +217 -0
  90. data/lib/canon/comparison/xml_comparator/attribute_comparator.rb +177 -0
  91. data/lib/canon/comparison/xml_comparator/attribute_filter.rb +136 -0
  92. data/lib/canon/comparison/xml_comparator/child_comparison.rb +189 -0
  93. data/lib/canon/comparison/xml_comparator/diff_node_builder.rb +115 -0
  94. data/lib/canon/comparison/xml_comparator/namespace_comparator.rb +186 -0
  95. data/lib/canon/comparison/xml_comparator/node_parser.rb +74 -0
  96. data/lib/canon/comparison/xml_comparator/node_type_comparator.rb +95 -0
  97. data/lib/canon/comparison/xml_comparator.rb +242 -250
  98. data/lib/canon/comparison/xml_node_comparison.rb +297 -0
  99. data/lib/canon/comparison/xml_parser.rb +19 -0
  100. data/lib/canon/comparison/yaml_comparator.rb +3 -3
  101. data/lib/canon/comparison.rb +446 -86
  102. data/lib/canon/config/env_provider.rb +71 -0
  103. data/lib/canon/config/env_schema.rb +58 -0
  104. data/lib/canon/config/override_resolver.rb +55 -0
  105. data/lib/canon/config/type_converter.rb +59 -0
  106. data/lib/canon/config.rb +158 -29
  107. data/lib/canon/data_model.rb +29 -0
  108. data/lib/canon/diff/diff_classifier.rb +74 -14
  109. data/lib/canon/diff/diff_context_builder.rb +41 -0
  110. data/lib/canon/diff/diff_line.rb +18 -2
  111. data/lib/canon/diff/diff_node.rb +49 -4
  112. data/lib/canon/diff/diff_node_mapper.rb +71 -12
  113. data/lib/canon/diff/formatting_detector.rb +53 -0
  114. data/lib/canon/diff/node_serializer.rb +191 -0
  115. data/lib/canon/diff/path_builder.rb +143 -0
  116. data/lib/canon/diff_formatter/by_line/base_formatter.rb +311 -5
  117. data/lib/canon/diff_formatter/by_line/html_formatter.rb +74 -264
  118. data/lib/canon/diff_formatter/by_line/json_formatter.rb +0 -37
  119. data/lib/canon/diff_formatter/by_line/simple_formatter.rb +0 -42
  120. data/lib/canon/diff_formatter/by_line/xml_formatter.rb +153 -259
  121. data/lib/canon/diff_formatter/by_line/yaml_formatter.rb +0 -37
  122. data/lib/canon/diff_formatter/by_object/base_formatter.rb +126 -19
  123. data/lib/canon/diff_formatter/by_object/xml_formatter.rb +30 -1
  124. data/lib/canon/diff_formatter/debug_output.rb +7 -1
  125. data/lib/canon/diff_formatter/diff_detail_formatter/color_helper.rb +30 -0
  126. data/lib/canon/diff_formatter/diff_detail_formatter/dimension_formatter.rb +579 -0
  127. data/lib/canon/diff_formatter/diff_detail_formatter/location_extractor.rb +121 -0
  128. data/lib/canon/diff_formatter/diff_detail_formatter/node_utils.rb +253 -0
  129. data/lib/canon/diff_formatter/diff_detail_formatter/text_utils.rb +61 -0
  130. data/lib/canon/diff_formatter/diff_detail_formatter.rb +72 -452
  131. data/lib/canon/diff_formatter/legend.rb +42 -0
  132. data/lib/canon/diff_formatter.rb +79 -10
  133. data/lib/canon/errors.rb +56 -0
  134. data/lib/canon/formatters/html_formatter_base.rb +35 -1
  135. data/lib/canon/formatters/json_formatter.rb +3 -0
  136. data/lib/canon/formatters/yaml_formatter.rb +3 -0
  137. data/lib/canon/html/data_model.rb +229 -0
  138. data/lib/canon/html.rb +9 -0
  139. data/lib/canon/options/cli_generator.rb +70 -0
  140. data/lib/canon/options/registry.rb +234 -0
  141. data/lib/canon/rspec_matchers.rb +35 -14
  142. data/lib/canon/tree_diff/adapters/html_adapter.rb +316 -0
  143. data/lib/canon/tree_diff/adapters/json_adapter.rb +204 -0
  144. data/lib/canon/tree_diff/adapters/xml_adapter.rb +285 -0
  145. data/lib/canon/tree_diff/adapters/yaml_adapter.rb +213 -0
  146. data/lib/canon/tree_diff/core/attribute_comparator.rb +84 -0
  147. data/lib/canon/tree_diff/core/matching.rb +241 -0
  148. data/lib/canon/tree_diff/core/node_signature.rb +164 -0
  149. data/lib/canon/tree_diff/core/node_weight.rb +135 -0
  150. data/lib/canon/tree_diff/core/tree_node.rb +450 -0
  151. data/lib/canon/tree_diff/matchers/hash_matcher.rb +258 -0
  152. data/lib/canon/tree_diff/matchers/similarity_matcher.rb +168 -0
  153. data/lib/canon/tree_diff/matchers/structural_propagator.rb +242 -0
  154. data/lib/canon/tree_diff/matchers/universal_matcher.rb +220 -0
  155. data/lib/canon/tree_diff/operation_converter.rb +385 -0
  156. data/lib/canon/tree_diff/operation_converter_helpers/metadata_enricher.rb +71 -0
  157. data/lib/canon/tree_diff/operation_converter_helpers/post_processor.rb +103 -0
  158. data/lib/canon/tree_diff/operation_converter_helpers/reason_builder.rb +168 -0
  159. data/lib/canon/tree_diff/operation_converter_helpers/update_change_handler.rb +188 -0
  160. data/lib/canon/tree_diff/operations/operation.rb +92 -0
  161. data/lib/canon/tree_diff/operations/operation_detector.rb +626 -0
  162. data/lib/canon/tree_diff/tree_diff_integrator.rb +140 -0
  163. data/lib/canon/tree_diff.rb +33 -0
  164. data/lib/canon/validators/json_validator.rb +3 -1
  165. data/lib/canon/validators/yaml_validator.rb +3 -1
  166. data/lib/canon/version.rb +1 -1
  167. data/lib/canon/xml/data_model.rb +22 -23
  168. data/lib/canon/xml/element_matcher.rb +128 -20
  169. data/lib/canon/xml/namespace_helper.rb +110 -0
  170. data/lib/canon.rb +3 -0
  171. data/{docs → old-docs}/CLI.adoc +4 -0
  172. data/old-docs/DIFF_PARAMETERS.adoc +261 -0
  173. data/old-docs/DOM_DIFF.adoc +1017 -0
  174. data/old-docs/ENV_CONFIG.adoc +876 -0
  175. data/old-docs/FORMATS.adoc +867 -0
  176. data/old-docs/MATCHER_BEHAVIOR.adoc +90 -0
  177. data/{docs → old-docs}/MATCH_OPTIONS.adoc +198 -5
  178. data/old-docs/README.old.adoc +2831 -0
  179. data/{docs → old-docs}/RSPEC.adoc +209 -0
  180. data/{docs → old-docs}/RUBY_API.adoc +8 -1
  181. data/{docs → old-docs}/SEMANTIC_DIFF_REPORT.adoc +118 -0
  182. data/old-docs/SEMANTIC_TREE_DIFF.adoc +765 -0
  183. data/old-docs/STRING_COMPARE.adoc +345 -0
  184. data/old-docs/TMP.adoc +3384 -0
  185. data/old-docs/TREE_DIFF.adoc +1080 -0
  186. data/old-docs/VISUALIZATION_MAP.adoc +625 -0
  187. data/old-docs/WHITESPACE_TREATMENT.adoc +1155 -0
  188. data/scripts/analyze_current_state.rb +85 -0
  189. data/scripts/analyze_false_positives.rb +114 -0
  190. data/scripts/analyze_remaining_failures.rb +105 -0
  191. data/scripts/compare_current_failures.rb +95 -0
  192. data/scripts/compare_dom_tree_diff.rb +158 -0
  193. data/scripts/compare_failures.rb +151 -0
  194. data/scripts/debug_attribute_extraction.rb +66 -0
  195. data/scripts/debug_blocks_839.rb +115 -0
  196. data/scripts/debug_meta_matching.rb +52 -0
  197. data/scripts/debug_p_matching.rb +192 -0
  198. data/scripts/debug_signature_matching.rb +118 -0
  199. data/scripts/debug_sourcecode_124.rb +32 -0
  200. data/scripts/debug_whitespace_sensitive.rb +192 -0
  201. data/scripts/extract_false_positives.rb +138 -0
  202. data/scripts/find_actual_false_positives.rb +125 -0
  203. data/scripts/investigate_all_false_positives.rb +161 -0
  204. data/scripts/investigate_batch1.rb +127 -0
  205. data/scripts/investigate_classification.rb +150 -0
  206. data/scripts/investigate_classification_detailed.rb +190 -0
  207. data/scripts/investigate_common_failures.rb +342 -0
  208. data/scripts/investigate_false_negative.rb +80 -0
  209. data/scripts/investigate_false_positive.rb +83 -0
  210. data/scripts/investigate_false_positives.rb +227 -0
  211. data/scripts/investigate_false_positives_batch.rb +163 -0
  212. data/scripts/investigate_mixed_content.rb +125 -0
  213. data/scripts/investigate_remaining_16.rb +214 -0
  214. data/scripts/run_single_test.rb +29 -0
  215. data/scripts/test_all_false_positives.rb +95 -0
  216. data/scripts/test_attribute_details.rb +61 -0
  217. data/scripts/test_both_algorithms.rb +49 -0
  218. data/scripts/test_both_simple.rb +49 -0
  219. data/scripts/test_enhanced_semantic_output.rb +125 -0
  220. data/scripts/test_readme_examples.rb +131 -0
  221. data/scripts/test_semantic_tree_diff.rb +99 -0
  222. data/scripts/test_semantic_ux_improvements.rb +135 -0
  223. data/scripts/test_single_false_positive.rb +119 -0
  224. data/scripts/test_size_limits.rb +99 -0
  225. data/test_html_1.html +21 -0
  226. data/test_html_2.html +21 -0
  227. data/test_nokogiri.rb +33 -0
  228. data/test_normalize.rb +45 -0
  229. metadata +202 -23
  230. data/_config.yml +0 -116
  231. data/docs/FORMATS.adoc +0 -447
  232. /data/{docs → old-docs}/ADVANCED_TOPICS.adoc +0 -0
  233. /data/{docs → old-docs}/BASIC_USAGE.adoc +0 -0
  234. /data/{docs → old-docs}/CHARACTER_VISUALIZATION.adoc +0 -0
  235. /data/{docs → old-docs}/CUSTOMIZING_BEHAVIOR.adoc +0 -0
  236. /data/{docs → old-docs}/DIFF_ARCHITECTURE.adoc +0 -0
  237. /data/{docs → old-docs}/DIFF_FORMATTING.adoc +0 -0
  238. /data/{docs → old-docs}/INPUT_VALIDATION.adoc +0 -0
  239. /data/{docs → old-docs}/MATCH_ARCHITECTURE.adoc +0 -0
  240. /data/{docs → old-docs}/MODES.adoc +0 -0
  241. /data/{docs → old-docs}/NORMATIVE_INFORMATIVE_DIFFS.adoc +0 -0
  242. /data/{docs → old-docs}/OPTIONS.adoc +0 -0
  243. /data/{docs → old-docs}/PREPROCESSING.adoc +0 -0
  244. /data/{docs → old-docs}/UNDERSTANDING_CANON.adoc +0 -0
  245. /data/{docs → old-docs}/VERBOSE.adoc +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 175896a75aaf4adeb48d309754bc3bca0c7052eb4188b99f9a57527b602545fd
4
- data.tar.gz: d1a7ed67ff1a20ee1e3b8ef471676b30031c2ec2d150ca6f345a63c42895333b
3
+ metadata.gz: 1d94be550a90d23eb695f46579b13fa327434993b89a995b3c95ba658a143fb9
4
+ data.tar.gz: 2ac083712aa9d0153aa2e0898186a7cbf669e775368378c9de8de6c42c52a257
5
5
  SHA512:
6
- metadata.gz: '08b750d3bf0274e60629a3e7f6417a9ba05e2f547b0f15ba3dc8554ab9590b8878f11046760038e221aed198a0a125f6ffcc989560123455bee3a092f27d09f3'
7
- data.tar.gz: 808fed5ef85285c929e9cbc8e6400f436614d61db944ea16887a077ae5ba6d89ac8bfb62b982913596482b70b578691298ab489b71bb59072281b76fa4b4da84
6
+ metadata.gz: 45b4502c83bfd367c5933e66f610de529b87f27d5cfef18c0fe808bcbc91e20c1c3c0e32ba36ed6163a70de37c5ae3a1023c67fed586491e7eea5f7c621e2769
7
+ data.tar.gz: 3713856d8dfdfb4164cfd9e8bdcd4dcbdce7b303619d703b7defe58d09c5468eb3acc5f32435f3184d35f20b3a6f7470c2960d8e5cef21ba720ebd7dc44ccfbf
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2025-10-22 14:03:51 UTC using RuboCop version 1.81.6.
3
+ # on 2026-01-17 14:46:16 UTC using RuboCop version 1.81.7.
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
@@ -14,40 +14,30 @@ Gemspec/RequiredRubyVersion:
14
14
 
15
15
  # Offense count: 1
16
16
  # This cop supports safe autocorrection (--autocorrect).
17
- # Configuration parameters: EnforcedStyleAlignWith.
18
- # SupportedStylesAlignWith: either, start_of_block, start_of_line
19
- Layout/BlockAlignment:
17
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
18
+ # SupportedStyles: with_first_argument, with_fixed_indentation
19
+ Layout/ArgumentAlignment:
20
20
  Exclude:
21
- - 'lib/canon/diff_formatter/by_line/html_formatter.rb'
21
+ - 'lib/canon/comparison.rb'
22
22
 
23
- # Offense count: 314
23
+ # Offense count: 697
24
24
  # This cop supports safe autocorrection (--autocorrect).
25
25
  # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
26
26
  # URISchemes: http, https
27
27
  Layout/LineLength:
28
28
  Enabled: false
29
29
 
30
- # Offense count: 29
31
- # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
32
- Lint/DuplicateBranch:
30
+ # Offense count: 1
31
+ # This cop supports safe autocorrection (--autocorrect).
32
+ # Configuration parameters: AllowInHeredoc.
33
+ Layout/TrailingWhitespace:
33
34
  Exclude:
34
- - 'lib/canon/commands/diff_command.rb'
35
35
  - 'lib/canon/comparison.rb'
36
- - 'lib/canon/comparison/html_comparator.rb'
37
- - 'lib/canon/comparison/xml_comparator.rb'
38
- - 'lib/canon/diff_formatter/by_line/base_formatter.rb'
39
- - 'lib/canon/diff_formatter/by_line/json_formatter.rb'
40
- - 'lib/canon/diff_formatter/by_line/xml_formatter.rb'
41
- - 'lib/canon/diff_formatter/by_line/yaml_formatter.rb'
42
- - 'lib/canon/diff_formatter/by_object/json_formatter.rb'
43
- - 'lib/canon/diff_formatter/debug_output.rb'
44
- - 'lib/canon/diff_formatter/legend.rb'
45
- - 'spec/canon/diff/diff_report_builder_spec.rb'
46
36
 
47
- # Offense count: 2
48
- Lint/DuplicateMethods:
49
- Exclude:
50
- - 'lib/canon/diff_formatter/by_line/html_formatter.rb'
37
+ # Offense count: 48
38
+ # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
39
+ Lint/DuplicateBranch:
40
+ Enabled: false
51
41
 
52
42
  # Offense count: 2
53
43
  # This cop supports safe autocorrection (--autocorrect).
@@ -73,54 +63,57 @@ Lint/UnreachableCode:
73
63
  Exclude:
74
64
  - 'lib/canon/diff_formatter/debug_output.rb'
75
65
 
76
- # Offense count: 4
66
+ # Offense count: 6
77
67
  # This cop supports safe autocorrection (--autocorrect).
78
68
  # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
79
69
  # NotImplementedExceptions: NotImplementedError
80
70
  Lint/UnusedMethodArgument:
81
71
  Exclude:
82
- - 'lib/canon/comparison/match_options.rb'
72
+ - 'lib/canon/diff/path_builder.rb'
73
+ - 'lib/canon/diff_formatter/by_line/base_formatter.rb'
83
74
  - 'lib/canon/diff_formatter/by_line/xml_formatter.rb'
84
75
  - 'lib/canon/diff_formatter/by_object/base_formatter.rb'
85
76
 
86
- # Offense count: 114
77
+ # Offense count: 225
87
78
  # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
88
79
  Metrics/AbcSize:
89
80
  Enabled: false
90
81
 
91
- # Offense count: 14
82
+ # Offense count: 27
92
83
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
93
84
  # AllowedMethods: refine
94
85
  Metrics/BlockLength:
95
- Max: 38
86
+ Max: 84
96
87
 
97
- # Offense count: 96
88
+ # Offense count: 178
98
89
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
99
90
  Metrics/CyclomaticComplexity:
100
91
  Enabled: false
101
92
 
102
- # Offense count: 184
93
+ # Offense count: 376
103
94
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
104
95
  Metrics/MethodLength:
105
- Max: 81
96
+ Max: 110
106
97
 
107
- # Offense count: 17
98
+ # Offense count: 39
108
99
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
109
100
  Metrics/ParameterLists:
110
101
  Max: 9
111
102
 
112
- # Offense count: 77
103
+ # Offense count: 143
113
104
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
114
105
  Metrics/PerceivedComplexity:
115
106
  Enabled: false
116
107
 
117
- # Offense count: 24
108
+ # Offense count: 29
118
109
  # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
119
110
  # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
120
111
  Naming/MethodParameterName:
121
112
  Exclude:
122
113
  - 'lib/canon/comparison/xml_comparator.rb'
114
+ - 'lib/canon/comparison/xml_comparator/attribute_comparator.rb'
123
115
  - 'lib/canon/xml/namespace_handler.rb'
116
+ - 'scripts/investigate_all_false_positives.rb'
124
117
 
125
118
  # Offense count: 1
126
119
  # Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros, UseSorbetSigs.
@@ -144,49 +137,27 @@ Naming/VariableNumber:
144
137
  # Configuration parameters: MinSize.
145
138
  Performance/CollectionLiteralInLoop:
146
139
  Exclude:
147
- - 'lib/canon/diff_formatter/diff_detail_formatter.rb'
140
+ - 'lib/canon/comparison/html_comparator.rb'
148
141
  - 'lib/canon/xml/xml_base_handler.rb'
149
142
 
150
- # Offense count: 29
143
+ # Offense count: 62
151
144
  # Configuration parameters: Prefixes, AllowedPatterns.
152
145
  # Prefixes: when, with, without
153
146
  RSpec/ContextWording:
154
- Exclude:
155
- - 'spec/canon/comparison/match_options_spec.rb'
156
- - 'spec/canon/comparison/yaml_comparator_spec.rb'
157
- - 'spec/canon/comparison_spec.rb'
158
- - 'spec/canon/diff/diff_context_builder_spec.rb'
159
- - 'spec/canon/diff/diff_report_builder_spec.rb'
160
- - 'spec/canon/fixtures_integrity_spec.rb'
161
- - 'spec/canon/informative_diffs_debug_spec.rb'
162
- - 'spec/canon/match_profiles_integration_spec.rb'
163
- - 'spec/canon/rspec_matchers_spec.rb'
164
- - 'spec/canon/xml/c14n_spec.rb'
165
- - 'spec/canon/xml/c14n_w3c_examples_spec.rb'
147
+ Enabled: false
166
148
 
167
- # Offense count: 12
149
+ # Offense count: 25
168
150
  # Configuration parameters: IgnoredMetadata.
169
151
  RSpec/DescribeClass:
170
- Exclude:
171
- - 'spec/canon/compressed_multiline_bug_spec.rb'
172
- - 'spec/canon/context_grouping_spec.rb'
173
- - 'spec/canon/fixtures_integrity_spec.rb'
174
- - 'spec/canon/html/matcher_spec.rb'
175
- - 'spec/canon/html/rendered_whitespace_spec.rb'
176
- - 'spec/canon/informative_diffs_debug_spec.rb'
177
- - 'spec/canon/isodoc_attribute_order_spec.rb'
178
- - 'spec/canon/isodoc_blockquotes_spec.rb'
179
- - 'spec/canon/match_profiles_integration_spec.rb'
180
- - 'spec/canon/match_scenarios_spec.rb'
181
- - 'spec/canon/string_matcher_spec.rb'
182
- - 'spec/canon/xml_isodoc_spec.rb'
152
+ Enabled: false
183
153
 
184
- # Offense count: 1
154
+ # Offense count: 2
185
155
  RSpec/DescribeMethod:
186
156
  Exclude:
157
+ - 'spec/canon/comparison/multiple_differences_spec.rb'
187
158
  - 'spec/canon/diff_formatter/character_map_customization_spec.rb'
188
159
 
189
- # Offense count: 306
160
+ # Offense count: 624
190
161
  # Configuration parameters: CountAsOne.
191
162
  RSpec/ExampleLength:
192
163
  Max: 67
@@ -200,14 +171,22 @@ RSpec/ExpectActual:
200
171
  - 'spec/canon/rspec_matchers_spec.rb'
201
172
  - 'spec/canon/string_matcher_spec.rb'
202
173
 
203
- # Offense count: 97
174
+ # Offense count: 171
204
175
  # Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
205
176
  RSpec/IndexedLet:
206
177
  Exclude:
178
+ - 'spec/canon/comparison/multiple_differences_spec.rb'
179
+ - 'spec/canon/comparison/namespace_equivalence_spec.rb'
207
180
  - 'spec/canon/diff/diff_context_spec.rb'
208
181
  - 'spec/canon/diff/diff_report_spec.rb'
209
182
  - 'spec/canon/diff_formatter/character_map_customization_spec.rb'
183
+ - 'spec/canon/diff_formatter/informative_diff_visualization_spec.rb'
184
+ - 'spec/canon/diff_formatter/namespace_rendering_spec.rb'
185
+ - 'spec/canon/diff_formatter/show_diffs_filtering_spec.rb'
210
186
  - 'spec/canon/rspec_matchers_spec.rb'
187
+ - 'spec/canon/semantic_diff_integration_spec.rb'
188
+ - 'spec/canon/tree_diff/matchers/universal_matcher_spec.rb'
189
+ - 'spec/canon/tree_diff/operations/operation_detector_spec.rb'
211
190
 
212
191
  # Offense count: 4
213
192
  # Configuration parameters: AssignmentOnly.
@@ -216,21 +195,24 @@ RSpec/InstanceVariable:
216
195
  - 'spec/canon/rspec_matchers_spec.rb'
217
196
 
218
197
  # Offense count: 15
219
- # Configuration parameters: .
198
+ # Configuration parameters: EnforcedStyle.
220
199
  # SupportedStyles: have_received, receive
221
200
  RSpec/MessageSpies:
222
- EnforcedStyle: receive
201
+ Exclude:
202
+ - 'spec/canon/diff/diff_classifier_spec.rb'
203
+ - 'spec/canon_spec.rb'
204
+ - 'spec/xml_c14n_spec.rb'
223
205
 
224
206
  # Offense count: 1
225
207
  RSpec/MultipleDescribes:
226
208
  Exclude:
227
209
  - 'spec/canon/comparison/match_options_spec.rb'
228
210
 
229
- # Offense count: 251
211
+ # Offense count: 515
230
212
  RSpec/MultipleExpectations:
231
213
  Max: 15
232
214
 
233
- # Offense count: 61
215
+ # Offense count: 66
234
216
  # Configuration parameters: AllowSubject.
235
217
  RSpec/MultipleMemoizedHelpers:
236
218
  Max: 13
@@ -244,7 +226,7 @@ RSpec/NamedSubject:
244
226
  - 'spec/canon/pretty_printer/json_spec.rb'
245
227
  - 'spec/canon/pretty_printer/xml_spec.rb'
246
228
 
247
- # Offense count: 24
229
+ # Offense count: 30
248
230
  # Configuration parameters: AllowedGroups.
249
231
  RSpec/NestedGroups:
250
232
  Max: 4
@@ -259,10 +241,12 @@ RSpec/NoExpectationExample:
259
241
  - 'spec/canon/isodoc_blockquotes_spec.rb'
260
242
  - 'spec/canon/match_scenarios_spec.rb'
261
243
 
262
- # Offense count: 6
263
- # Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata.
244
+ # Offense count: 7
245
+ # Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
246
+ # SupportedInflectors: default, active_support
264
247
  RSpec/SpecFilePathFormat:
265
248
  Exclude:
249
+ - 'spec/canon/comparison/multiple_differences_spec.rb'
266
250
  - 'spec/canon/html/formatter_spec.rb'
267
251
  - 'spec/canon/json/formatter_spec.rb'
268
252
  - 'spec/canon/rspec_matchers_spec.rb'
@@ -270,6 +254,14 @@ RSpec/SpecFilePathFormat:
270
254
  - 'spec/canon/yaml/formatter_spec.rb'
271
255
  - 'spec/xml_c14n_spec.rb'
272
256
 
257
+ # Offense count: 94
258
+ # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
259
+ RSpec/VerifiedDoubles:
260
+ Exclude:
261
+ - 'spec/canon/diff/diff_classifier_spec.rb'
262
+ - 'spec/canon/diff/path_builder_spec.rb'
263
+ - 'spec/canon/tree_diff/operation_converter_spec.rb'
264
+
273
265
  # Offense count: 3
274
266
  # Configuration parameters: MinBranchesCount.
275
267
  Style/HashLikeCase:
@@ -277,10 +269,11 @@ Style/HashLikeCase:
277
269
  - 'lib/canon/diff/diff_block_builder.rb'
278
270
  - 'lib/canon/xml/character_encoder.rb'
279
271
 
280
- # Offense count: 2
272
+ # Offense count: 4
281
273
  # This cop supports unsafe autocorrection (--autocorrect-all).
282
274
  Style/IdenticalConditionalBranches:
283
275
  Exclude:
276
+ - 'lib/canon/diff_formatter/by_object/base_formatter.rb'
284
277
  - 'lib/canon/diff_formatter/legend.rb'
285
278
 
286
279
  # Offense count: 1
@@ -289,10 +282,3 @@ Style/IdenticalConditionalBranches:
289
282
  Style/OptionalBooleanParameter:
290
283
  Exclude:
291
284
  - 'lib/canon/diff_formatter/debug_output.rb'
292
-
293
- # Offense count: 1
294
- # This cop supports unsafe autocorrection (--autocorrect-all).
295
- # Configuration parameters: Mode.
296
- Style/StringConcatenation:
297
- Exclude:
298
- - 'lib/canon/diff_formatter/diff_detail_formatter.rb'