Skip to content

[bugfix] Require ! flag for empty-matching regex in XQ4 fn:replace an…

17a7067
Select commit
Loading
Failed to load commit list.
Open

Implement XQuery 4.0 core functions (fn:, array:, map:, math:) #6218

[bugfix] Require ! flag for empty-matching regex in XQ4 fn:replace an…
17a7067
Select commit
Loading
Failed to load commit list.
Codacy Production / Codacy Static Code Analysis required action Apr 13, 2026 in 0s

90 new issues (0 max.) of at least severity.

Codacy Here is an overview of what got changed by this pull request:

Issues
======
- Added 90
           

Complexity increasing per file
==============================
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInvisibleXml.java  33
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnPartialApply.java  17
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHighestLowest.java  28
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java  33
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnReplicate.java  6
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSortBy.java  46
- exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java  49
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInsertSeparator.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnMessage.java  6
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnEverySome.java  26
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnBuildUri.java  98
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnGraphemes.java  5
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortWith.java  15
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseHtml.java  22
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnCollation.java  7
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnTypeAnnotation.java  109
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInScopeNamespaces.java  27
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnUnparsedBinary.java  13
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHtmlDoc.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnIsNaN.java  4
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySplit.java  3
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDistinctOrderedNodes.java  3
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexOf.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseUri.java  100
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayOfMembers.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnIdentityVoid.java  3
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayBuild.java  6
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDateTimeParts.java  16
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseQName.java  35
- exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java  38
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnItemsAt.java  7
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSchemaType.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSubsequenceMatching.java  22
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnFunctionIdentity.java  10
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnGet.java  10
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDuplicateValues.java  13
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnFunctionAnnotations.java  9
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnChar.java  44
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDecodeFromUri.java  33
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnElementToMapPlan.java  70
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHigherOrderFun40.java  46
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnUnixDateTime.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHash.java  25
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnElementToMap.java  109
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnPartition.java  13
- exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java  226
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnOp.java  150
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDeepEqualOptions.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSlice.java  20
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSeconds.java  6
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDivideDecimals.java  8
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSubsequenceWhere.java  27
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnExpandedQName.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnCivilTimezone.java  16
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnAtomicEqual.java  51
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnTransitiveClosure.java  17
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSiblings.java  10
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnTypeOf.java  22
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySlice.java  19
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnCharacters.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnAllEqualDifferent.java  23
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseInteger.java  19
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexWhere.java  8
         

Clones added
============
- exist-core/src/main/java/org/exist/xquery/util/DocUtils.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunDocAvailable.java  1
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayFunction.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunReplace.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunCompare.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunUnparsedText.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunDeepEqual.java  8
- exist-core/src/main/java/org/exist/xquery/functions/map/MapFunction.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunDoc.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FunMatches.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnFormatDates.java  3
- exist-core/src/main/java/org/exist/util/Collations.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/JSON.java  3
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInvisibleXml.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnPartialApply.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHighestLowest.java  10
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java  8
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnReplicate.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSortBy.java  12
- exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInsertSeparator.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnMessage.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnEverySome.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnBuildUri.java  10
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnGraphemes.java  2
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortWith.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseHtml.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnCollation.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnTypeAnnotation.java  7
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnInScopeNamespaces.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnUnparsedBinary.java  3
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHtmlDoc.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnIsNaN.java  1
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySplit.java  3
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDistinctOrderedNodes.java  1
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexOf.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseUri.java  5
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnIdentityVoid.java  1
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayBuild.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDateTimeParts.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseQName.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java  7
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnItemsAt.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSubsequenceMatching.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnFunctionIdentity.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDuplicateValues.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnFunctionAnnotations.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnChar.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDecodeFromUri.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnElementToMapPlan.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHigherOrderFun40.java  12
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnHash.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnElementToMap.java  13
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnPartition.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java  9
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnOp.java  10
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnDeepEqualOptions.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSlice.java  12
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSeconds.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnSubsequenceWhere.java  3
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnExpandedQName.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnAtomicEqual.java  2
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnTransitiveClosure.java  12
- exist-core/src/main/java/org/exist/xquery/functions/array/ArraySlice.java  8
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnCharacters.java  1
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnAllEqualDifferent.java  4
- exist-core/src/main/java/org/exist/xquery/functions/fn/FnParseInteger.java  1
- exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexWhere.java  1
         

Clones removed
==============
+ exist-core/src/main/java/org/exist/xquery/functions/fn/FunMin.java  -5
+ exist-core/src/main/java/org/exist/xquery/functions/fn/FunMax.java  -5
+ exist-core/src/main/java/org/exist/xquery/functions/fn/FnFormatNumbers.java  -10
         

See the complete overview on Codacy

Annotations

Check notice on line 355 in exist-core/src/main/java/org/exist/util/Collations.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/util/Collations.java#L355

Use one line for each declaration, it enhances code readability.

Check notice on line 922 in exist-core/src/main/java/org/exist/util/Collations.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/util/Collations.java#L922

Document empty method body

Check notice on line 97 in exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexWhere.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/array/ArrayIndexWhere.java#L97

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check warning on line 91 in exist-core/src/main/java/org/exist/xquery/functions/array/ArraySlice.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/array/ArraySlice.java#L91

The method 'eval(Sequence, Sequence)' has an NPath complexity of 1500, current threshold is 200

Check warning on line 86 in exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java#L86

The method 'eval(Sequence, Sequence)' has an NPath complexity of 840, current threshold is 200

Check warning on line 146 in exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortBy.java#L146

Avoid throwing raw exception types.

Check warning on line 116 in exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortWith.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/array/ArraySortWith.java#L116

Avoid throwing raw exception types.

Check notice on line 183 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java#L183

Document empty method body

Check warning on line 221 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java#L221

Avoid unused method parameters such as 'options'.

Check warning on line 402 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java#L402

The method 'parseOptions(Sequence)' has an NPath complexity of 972000, current threshold is 200

Check warning on line 553 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvFunctions.java#L553

The method 'eval(Sequence, Item)' has an NPath complexity of 351, current threshold is 200

Check notice on line 55 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L55

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 56 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L56

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 57 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L57

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 58 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L58

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 59 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L59

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 60 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L60

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 61 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L61

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check notice on line 62 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L62

Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.

Check warning on line 78 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L78

The method 'parse(String, CsvConverter)' has an NPath complexity of 25600, current threshold is 200

Check warning on line 92 in exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/CsvParser.java#L92

Switch statements should be exhaustive, add a default case (or missing enum branches)

Check warning on line 194 in exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java#L194

Switch statements should be exhaustive, add a default case (or missing enum branches)

Check notice on line 220 in exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java#L220

These nested if statements could be combined

Check warning on line 333 in exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java#L333

The method 'deepCompare(Item, Item)' has an NPath complexity of 249602, current threshold is 200

Check notice on line 464 in exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

exist-core/src/main/java/org/exist/xquery/functions/fn/DeepEqualOptions.java#L464

These nested if statements could be combined