From 7c1fcb812c0ef4eab46cdc6cdeef5a70f237c29c Mon Sep 17 00:00:00 2001 From: Rob van der Leek <5324924+robvanderleek@users.noreply.github.com> Date: Fri, 11 Jul 2025 14:10:51 +0200 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 2 +- codelimit/common/gsm/Pattern.py | 12 ++--- codelimit/common/gsm/matcher.py | 17 +++--- codelimit/common/gsm/utils.py | 19 +++++++ codelimit/common/scope/scope_utils.py | 4 +- codelimit/common/utils.py | 1 - codelimit/languages/Java.py | 2 +- main.py | 5 -- tests/common/gsm/test_utils.py | 52 +++++++++++++++++++ .../token_matching/test_TokenMatching.py | 25 ++++++--- 10 files changed, 108 insertions(+), 31 deletions(-) delete mode 100755 main.py create mode 100644 tests/common/gsm/test_utils.py diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b1e356b..b3a80eb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Install uv + - name: Set up uv uses: astral-sh/setup-uv@v5 - name: Install dependencies diff --git a/codelimit/common/gsm/Pattern.py b/codelimit/common/gsm/Pattern.py index e502dd1..ce37e85 100644 --- a/codelimit/common/gsm/Pattern.py +++ b/codelimit/common/gsm/Pattern.py @@ -1,14 +1,14 @@ from copy import deepcopy +from codelimit.common.TokenRange import TokenRange from codelimit.common.gsm.automata.DFA import DFA from codelimit.common.gsm.automata.State import State from codelimit.common.gsm.predicate.Predicate import Predicate -class Pattern: - def __init__(self, start: int, automata: DFA): - self.start = start - self.end = start +class Pattern(TokenRange): + def __init__(self, automata: DFA, start: int = 0): + super().__init__(start, start) self.automata = automata self.state = automata.start self.tokens: list = [] @@ -32,5 +32,5 @@ def consume(self, item) -> State | None: def is_accepting(self): return self.automata.is_accepting(self.state) - def token_string(self): - return " ".join([t.value for t in self.tokens]) + def __str__(self): + return f'Pattern(start={self.start}, end={self.end}, tokens=[{self.token_string(self.tokens)}])' diff --git a/codelimit/common/gsm/matcher.py b/codelimit/common/gsm/matcher.py index 5d63aec..8c8e9b7 100644 --- a/codelimit/common/gsm/matcher.py +++ b/codelimit/common/gsm/matcher.py @@ -9,7 +9,7 @@ ) from codelimit.common.gsm.Pattern import Pattern from codelimit.common.gsm.operator.Operator import Operator -from codelimit.common.gsm.utils import render_automata +from codelimit.common.gsm.utils import render_automata, prune_nested T = TypeVar("T") @@ -17,7 +17,7 @@ def match(expression: Expression, sequence: list) -> Pattern | None: nfa = expression_to_nfa(expression) dfa = nfa_to_dfa(nfa) - pattern = Pattern(0, dfa) + pattern = Pattern(dfa) for item in sequence: next_state = pattern.consume(item) if not next_state: @@ -32,7 +32,7 @@ def match(expression: Expression, sequence: list) -> Pattern | None: def starts_with(expression: Expression, sequence: list) -> Pattern | None: nfa = expression_to_nfa(expression) dfa = nfa_to_dfa(nfa) - pattern = Pattern(0, dfa) + pattern = Pattern(dfa) for item in sequence: next_state = pattern.consume(item) if not next_state: @@ -50,15 +50,13 @@ class FindState: next_state_patterns: list[Pattern] -def find_all(expression: Expression, sequence: list) -> list[Pattern]: +def find_all(expression: Expression, sequence: list, nested: bool = False) -> list[Pattern]: dfa = nfa_to_dfa(expression_to_nfa(expression)) fs = FindState([], [], []) for idx, item in enumerate(sequence): - fs.active_patterns.append(Pattern(idx, dfa)) + fs.active_patterns.append(Pattern(dfa, idx)) fs.next_state_patterns = [] for pattern in fs.active_patterns: - if fs.matches and pattern.start < fs.matches[-1].end: - continue if len(pattern.state.transition) == 0 and pattern.is_accepting(): pattern.end = idx fs.matches.append(pattern) @@ -74,7 +72,10 @@ def find_all(expression: Expression, sequence: list) -> list[Pattern]: if pattern.is_accepting(): pattern.end = len(sequence) fs.matches.append(pattern) - return fs.matches + if nested: + return fs.matches + else: + return prune_nested(fs.matches) def nfa_match(expression: Expression, sequence: list): diff --git a/codelimit/common/gsm/utils.py b/codelimit/common/gsm/utils.py index 5856c64..b2f2cc0 100644 --- a/codelimit/common/gsm/utils.py +++ b/codelimit/common/gsm/utils.py @@ -1,6 +1,8 @@ import subprocess import tempfile +from typing import TypeVar +from codelimit.common.TokenRange import TokenRange from codelimit.common.gsm.automata.Automata import Automata from codelimit.common.gsm.automata.State import State @@ -58,3 +60,20 @@ def to_dot(automata: Automata): result += state_transitions_to_dot(automata, automata.start) result += "}" return result + + +T = TypeVar("T", bound=TokenRange) + + +def prune_nested(ranges: list[T]) -> list[T]: + sorted_ranges = sorted(ranges, key=lambda x: (x.start, -(x.end - x.start))) + result: list[T] = [] + for r in sorted_ranges: + if not result: + result.append(r) + else: + last = result[-1] + if last.start <= r.start and last.end >= r.end: + continue + result.append(r) + return result diff --git a/codelimit/common/scope/scope_utils.py b/codelimit/common/scope/scope_utils.py index f57ff65..0ce5fc3 100644 --- a/codelimit/common/scope/scope_utils.py +++ b/codelimit/common/scope/scope_utils.py @@ -120,10 +120,10 @@ def has_curly_suffix(tokens: list[Token], index): def get_headers( - tokens: list[Token], expression: Expression, followed_by: Expression = None + tokens: list[Token], expression: Expression, followed_by: Expression = None, nested: bool = False ) -> list[Header]: # expression = replace_string_literal_with_predicate(expression) - patterns = find_all(expression, tokens) + patterns = find_all(expression, tokens, nested=nested) if followed_by: patterns = [p for p in patterns if starts_with(followed_by, tokens[p.end:])] result = [] diff --git a/codelimit/common/utils.py b/codelimit/common/utils.py index f26992d..4d99b92 100644 --- a/codelimit/common/utils.py +++ b/codelimit/common/utils.py @@ -214,7 +214,6 @@ def _get_git_branch(path: Path) -> str | None: return ref try: out = sh.git('-c', f'safe.directory={path.resolve()}', 'rev-parse', '--abbrev-ref', 'HEAD', _cwd=path) - print(out) return out.strip() except (sh.ErrorReturnCode, sh.CommandNotFound): return None diff --git a/codelimit/languages/Java.py b/codelimit/languages/Java.py index 74a3fc1..cd10842 100644 --- a/codelimit/languages/Java.py +++ b/codelimit/languages/Java.py @@ -30,7 +30,7 @@ def extract_headers(self, tokens: list) -> list: [Keyword('throws'), ZeroOrMore(And(Not(';'), Not('{'))), Symbol("{")] ) ] - ) + , nested=True) return filter_headers(headers, tokens) def extract_blocks(self, tokens: list, headers: list) -> list: diff --git a/main.py b/main.py deleted file mode 100755 index 0c8a3d7..0000000 --- a/main.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python3 -from codelimit import __main__ - -if __name__ == "__main__": - __main__.cli() diff --git a/tests/common/gsm/test_utils.py b/tests/common/gsm/test_utils.py new file mode 100644 index 0000000..7f59393 --- /dev/null +++ b/tests/common/gsm/test_utils.py @@ -0,0 +1,52 @@ +from codelimit.common.TokenRange import TokenRange +from codelimit.common.gsm.utils import prune_nested + + +def test_prune_nested_simple(): + tr1 = TokenRange(0, 5) + tr2 = TokenRange(6, 10) + tr3 = TokenRange(11, 15) + ranges = [tr1, tr2, tr3] + + result = prune_nested(ranges) + + assert len(result) == 3 + + +def test_prune_nested_with_contains(): + tr1 = TokenRange(2, 5) + tr2 = TokenRange(1, 10) + tr3 = TokenRange(11, 15) + ranges = [tr1, tr2, tr3] + + result = prune_nested(ranges) + + assert len(result) == 2 + assert result[0] == tr2 + assert result[1] == tr3 + + +def test_prune_nested_with_overlap(): + tr1 = TokenRange(1, 5) + tr2 = TokenRange(1, 10) + tr3 = TokenRange(11, 15) + ranges = [tr1, tr2, tr3] + + result = prune_nested(ranges) + + assert len(result) == 2 + assert result[0] == tr2 + assert result[1] == tr3 + + +def test_prune_nested_unsorted(): + tr1 = TokenRange(1, 10) + tr2 = TokenRange(2, 5) + tr3 = TokenRange(11, 15) + ranges = [tr1, tr2, tr3] + + result = prune_nested(ranges) + + assert len(result) == 2 + assert result[0] == tr1 + assert result[1] == tr3 diff --git a/tests/common/token_matching/test_TokenMatching.py b/tests/common/token_matching/test_TokenMatching.py index ae09406..e0828b3 100644 --- a/tests/common/token_matching/test_TokenMatching.py +++ b/tests/common/token_matching/test_TokenMatching.py @@ -1,6 +1,7 @@ import pytest -from pygments.lexers import PythonLexer from pygments.lexers import CSharpLexer +from pygments.lexers import CppLexer +from pygments.lexers import PythonLexer from codelimit.common.gsm.matcher import find_all from codelimit.common.gsm.operator.OneOrMore import OneOrMore @@ -19,8 +20,8 @@ def test_match_keyword(): result = find_all(Keyword("def"), tokens) assert len(result) == 2 - assert result[0].token_string() == "def" - assert result[1].token_string() == "def" + assert result[0].token_string(tokens) == "def" + assert result[1].token_string(tokens) == "def" def test_match_name(): @@ -30,8 +31,8 @@ def test_match_name(): result = find_all(Name(), tokens) assert len(result) == 2 - assert result[0].token_string() == "foo" - assert result[1].token_string() == "bar" + assert result[0].token_string(tokens) == "foo" + assert result[1].token_string(tokens) == "bar" def test_match_function_header(): @@ -41,8 +42,8 @@ def test_match_function_header(): result = find_all([Keyword("def"), Name()], tokens) assert len(result) == 2 - assert result[0].token_string() == "def foo" - assert result[1].token_string() == "def bar" + assert result[0].token_string(tokens) == "def foo" + assert result[1].token_string(tokens) == "def bar" def test_reset_pattern(): @@ -75,6 +76,16 @@ def test_ignore_incomplete_match(): assert len(result) == 1 +def test_nested_pattern(): + code = "void foo(Bar () bar) {" + tokens = lex(CppLexer(), code) + + result = find_all([Name(), OneOrMore(Balanced("(", ")"))], tokens) + + assert len(result) == 1 + assert result[0].token_string(tokens) == "foo ( Bar ( ) bar )" + + @pytest.mark.skip def test_predicate_follows_operator(): code = "Split(new[] {' '})" From 8cfdf82fddeef99529e1c9491f6ebf0d9a2426b3 Mon Sep 17 00:00:00 2001 From: Rob van der Leek <5324924+robvanderleek@users.noreply.github.com> Date: Mon, 14 Jul 2025 16:07:11 +0200 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fixed=20matcher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codelimit/common/TokenRange.py | 3 -- codelimit/common/gsm/Pattern.py | 9 +++- codelimit/common/gsm/matcher.py | 13 +++--- codelimit/common/token_utils.py | 4 ++ codelimit/languages/JavaScript.py | 6 +-- tests/common/gsm/test_matcher.py | 14 ++++++ tests/common/test_TokenRange.py | 3 +- tests/common/test_token_utils.py | 6 +-- .../token_matching/test_TokenMatching.py | 43 +++++++++++++------ tests/languages/test_JavaScript.py | 14 ++++++ 10 files changed, 83 insertions(+), 32 deletions(-) diff --git a/codelimit/common/TokenRange.py b/codelimit/common/TokenRange.py index 7820ce2..7e8a249 100644 --- a/codelimit/common/TokenRange.py +++ b/codelimit/common/TokenRange.py @@ -14,9 +14,6 @@ def __str__(self): def __repr__(self): return self.__str__() - def token_string(self, tokens: list[Token]): - return " ".join([t.value for t in tokens[self.start:self.end]]) - def lt(self, other: TokenRange): return self.start < other.start diff --git a/codelimit/common/gsm/Pattern.py b/codelimit/common/gsm/Pattern.py index ce37e85..022ba4d 100644 --- a/codelimit/common/gsm/Pattern.py +++ b/codelimit/common/gsm/Pattern.py @@ -4,6 +4,7 @@ from codelimit.common.gsm.automata.DFA import DFA from codelimit.common.gsm.automata.State import State from codelimit.common.gsm.predicate.Predicate import Predicate +from codelimit.common.token_matching.predicate.Balanced import Balanced class Pattern(TokenRange): @@ -30,7 +31,13 @@ def consume(self, item) -> State | None: return self.state if found_transition else None def is_accepting(self): + for p in self.predicate_map.values(): + if isinstance(p, Balanced) and not p.depth == 0: + return False return self.automata.is_accepting(self.state) + def token_string(self): + return " ".join([t.value for t in self.tokens]) + def __str__(self): - return f'Pattern(start={self.start}, end={self.end}, tokens=[{self.token_string(self.tokens)}])' + return f'Pattern(start={self.start}, end={self.end}, tokens=[{self.token_string()}])' diff --git a/codelimit/common/gsm/matcher.py b/codelimit/common/gsm/matcher.py index 8c8e9b7..3c73d62 100644 --- a/codelimit/common/gsm/matcher.py +++ b/codelimit/common/gsm/matcher.py @@ -57,21 +57,18 @@ def find_all(expression: Expression, sequence: list, nested: bool = False) -> li fs.active_patterns.append(Pattern(dfa, idx)) fs.next_state_patterns = [] for pattern in fs.active_patterns: - if len(pattern.state.transition) == 0 and pattern.is_accepting(): - pattern.end = idx - fs.matches.append(pattern) - continue if pattern.consume(item): fs.next_state_patterns.append(pattern) - else: - if pattern.is_accepting(): - pattern.end = idx + elif pattern.is_accepting(): + pattern.end = idx + if not fs.matches or fs.matches[-1].end < pattern.end: fs.matches.append(pattern) fs.active_patterns = fs.next_state_patterns for pattern in fs.active_patterns: if pattern.is_accepting(): pattern.end = len(sequence) - fs.matches.append(pattern) + if not fs.matches or fs.matches[-1].end < pattern.end: + fs.matches.append(pattern) if nested: return fs.matches else: diff --git a/codelimit/common/token_utils.py b/codelimit/common/token_utils.py index 642d5ba..56e9223 100644 --- a/codelimit/common/token_utils.py +++ b/codelimit/common/token_utils.py @@ -39,3 +39,7 @@ def sort_tokens(tokens: list[Token]) -> list[Token]: result = sorted(tokens, key=lambda t: t.location.column) result = sorted(result, key=lambda t: t.location.line) return result + + +def token_string(tokens: list[Token], token_range: TokenRange) -> str: + return " ".join([t.value for t in tokens[token_range.start:token_range.end]]) diff --git a/codelimit/languages/JavaScript.py b/codelimit/languages/JavaScript.py index dda1f4b..ebdff65 100644 --- a/codelimit/languages/JavaScript.py +++ b/codelimit/languages/JavaScript.py @@ -23,7 +23,7 @@ def extract_headers(self, tokens: list[Token]) -> list[Header]: functions = get_headers( tokens, [Optional(Keyword("function")), Name(), OneOrMore(Balanced("(", ")"))], - Symbol("{"), + Symbol("{"), nested=True ) arrow_functions = get_headers( tokens, @@ -35,11 +35,11 @@ def extract_headers(self, tokens: list[Token]) -> list[Header]: OneOrMore(Balanced("(", ")")), Symbol("=>"), ], - Symbol("{"), + Symbol("{"), nested=True, ) return functions + arrow_functions def extract_blocks( - self, tokens: list[Token], headers: list[Header] + self, tokens: list[Token], headers: list[Header] ) -> list[TokenRange]: return get_blocks(tokens, "{", "}") diff --git a/tests/common/gsm/test_matcher.py b/tests/common/gsm/test_matcher.py index 508431a..c27ca4e 100644 --- a/tests/common/gsm/test_matcher.py +++ b/tests/common/gsm/test_matcher.py @@ -150,6 +150,20 @@ def test_find_all(): assert matches[1].end == 5 +def test_find_all_nested_should_prioritize_longest_match(): + expr = [OneOrMore("a")] + text = ["a", "a", "b", "b", "a", "b", "b", "a", "a"] + + matches = find_all(expr, text, nested=True) + + assert len(matches) == 3 + assert matches[0].start == 0 + assert matches[0].end == 2 + assert matches[1].start == 4 + assert matches[1].end == 5 + assert matches[2].start == 7 + assert matches[2].end == 9 + def test_single_item(): expr = ["a"] text = ["a", "a", "b", "a"] diff --git a/tests/common/test_TokenRange.py b/tests/common/test_TokenRange.py index e1b4836..f89ae91 100644 --- a/tests/common/test_TokenRange.py +++ b/tests/common/test_TokenRange.py @@ -2,13 +2,14 @@ from codelimit.common.TokenRange import TokenRange from codelimit.common.lexer_utils import lex +from codelimit.common.token_utils import token_string def test_token_string(): tokens = lex(CLexer(), "int main() { { return 0; } }") token_range = TokenRange(5, 10) - assert token_range.token_string(tokens) == "{ return 0 ; }" + assert token_string(tokens, token_range) == "{ return 0 ; }" def test_contains(): diff --git a/tests/common/test_token_utils.py b/tests/common/test_token_utils.py index 4b5c491..04c0d89 100644 --- a/tests/common/test_token_utils.py +++ b/tests/common/test_token_utils.py @@ -5,7 +5,7 @@ from codelimit.common.source_utils import get_token_range from codelimit.common.token_utils import ( get_balanced_symbol_token_indices, - get_balanced_symbol_token_ranges, + get_balanced_symbol_token_ranges, token_string, ) @@ -41,8 +41,8 @@ def test_get_balanced_symbol_token_ranges(): result = get_balanced_symbol_token_ranges(tokens, "{", "}") assert len(result) == 2 - assert result[0].token_string(tokens) == "{ }" - assert result[1].token_string(tokens) == "{ while ( 1 ) { } }" + assert token_string(tokens, result[0]) == "{ }" + assert token_string(tokens, result[1]) == "{ while ( 1 ) { } }" def test_get_token_range(): diff --git a/tests/common/token_matching/test_TokenMatching.py b/tests/common/token_matching/test_TokenMatching.py index e0828b3..7f297b6 100644 --- a/tests/common/token_matching/test_TokenMatching.py +++ b/tests/common/token_matching/test_TokenMatching.py @@ -20,8 +20,8 @@ def test_match_keyword(): result = find_all(Keyword("def"), tokens) assert len(result) == 2 - assert result[0].token_string(tokens) == "def" - assert result[1].token_string(tokens) == "def" + assert result[0].token_string() == "def" + assert result[1].token_string() == "def" def test_match_name(): @@ -31,8 +31,8 @@ def test_match_name(): result = find_all(Name(), tokens) assert len(result) == 2 - assert result[0].token_string(tokens) == "foo" - assert result[1].token_string(tokens) == "bar" + assert result[0].token_string() == "foo" + assert result[1].token_string() == "bar" def test_match_function_header(): @@ -42,8 +42,8 @@ def test_match_function_header(): result = find_all([Keyword("def"), Name()], tokens) assert len(result) == 2 - assert result[0].token_string(tokens) == "def foo" - assert result[1].token_string(tokens) == "def bar" + assert result[0].token_string() == "def foo" + assert result[1].token_string() == "def bar" def test_reset_pattern(): @@ -52,7 +52,7 @@ def test_reset_pattern(): result = find_all([Name(), Balanced("(", ")")], tokens) - assert len(result) == 1 + assert len(result) == 0 def test_string_pattern(): @@ -83,14 +83,31 @@ def test_nested_pattern(): result = find_all([Name(), OneOrMore(Balanced("(", ")"))], tokens) assert len(result) == 1 - assert result[0].token_string(tokens) == "foo ( Bar ( ) bar )" + assert result[0].token_string() == "foo ( Bar ( ) bar )" -@pytest.mark.skip -def test_predicate_follows_operator(): - code = "Split(new[] {' '})" - tokens = lex(CSharpLexer(), code) +def test_incomplete_pattern(): + code = "void foo(Bar bar" + tokens = lex(CppLexer(), code) + + result = find_all([Name(), OneOrMore(Balanced("(", ")"))], tokens) + + assert len(result) == 0 + - result = find_all([Name(), OneOrMore(Balanced("(", ")")), Symbol('{')], tokens) +def test_incomplete_outer_pattern(): + code = "void foo(Bar () bar" + tokens = lex(CppLexer(), code) + + result = find_all([Name(), OneOrMore(Balanced("(", ")"))], tokens) assert len(result) == 1 + assert result[0].token_string() == "Bar ( )" + + +def test_predicate_follows_operator(): + code = "Split(new[] {' '}) {" + tokens = lex(CSharpLexer(), code) + + with pytest.raises(ValueError): + find_all([Name(), OneOrMore(Balanced("(", ")")), Symbol('{')], tokens) diff --git a/tests/languages/test_JavaScript.py b/tests/languages/test_JavaScript.py index 63ec4ab..dd1f1f8 100644 --- a/tests/languages/test_JavaScript.py +++ b/tests/languages/test_JavaScript.py @@ -73,3 +73,17 @@ def test_nested_anonymous_functions_are_skipped(): """ assert_functions(code, Languages.JavaScript, {"say": 5, "helloWorld": 3}) + + +def test_nested_in_anonymous_function(): + code = """ + return this.each(function() { + function stopQueue( elem, data, index ) { + var hooks = data[ index ]; + jQuery.removeData( elem, index, true ); + hooks.stop( gotoEnd ); + } + }); + """ + + assert_functions(code, Languages.JavaScript, {"stopQueue": 5}) From 7b4b1e439277a291f54cc7ca603598f4c290919d Mon Sep 17 00:00:00 2001 From: Rob van der Leek <5324924+robvanderleek@users.noreply.github.com> Date: Mon, 14 Jul 2025 16:33:03 +0200 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=F0=9F=9A=A7=20Update=20reports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../junit-team_junit5_r5.11.4/codelimit.json | 60 ++- .../codelimit.json | 501 ++++++++++-------- 2 files changed, 302 insertions(+), 259 deletions(-) diff --git a/examples/junit-team_junit5_r5.11.4/codelimit.json b/examples/junit-team_junit5_r5.11.4/codelimit.json index 77a9833..d626b74 100644 --- a/examples/junit-team_junit5_r5.11.4/codelimit.json +++ b/examples/junit-team_junit5_r5.11.4/codelimit.json @@ -1,14 +1,14 @@ { - "version": "0.17.0", - "uuid": "b64ed88a-e4c8-42e8-baf6-99aaf1f2f771", - "timestamp": "2025-01-03T10:31:10+00:00", - "root": "/private/var/folders/t2/s_70szzn7qn22cp4d2nmrjbc0000gn/T/tmpmhwzv2tc/junit5", + "version": "0.19.8", + "uuid": "efb6b54e-152d-4083-8f03-5d14de75bead", + "timestamp": "2025-07-14T14:11:31+00:00", + "root": "/private/var/folders/t2/s_70szzn7qn22cp4d2nmrjbc0000gn/T/tmph0w58zcm/junit5", "codebase": { "totals": { "Java": { "files": 852, - "lines_of_code": 24614, - "functions": 4573, + "lines_of_code": 24630, + "functions": 4577, "hard_to_maintain": 24, "unmaintainable": 1 }, @@ -46,7 +46,7 @@ "junit-platform-launcher/", "junit-jupiter-engine/" ], - "profile": [20576, 3073, 937, 63] + "profile": [20592, 3073, 937, 63] }, "junit-platform-engine/src/module/org.junit.platform.engine/": { "entries": [ @@ -2556,13 +2556,13 @@ "testFixtures/", "main/" ], - "profile": [2624, 373, 102, 0] + "profile": [2628, 373, 102, 0] }, "junit-platform-launcher/": { "entries": [ "src/" ], - "profile": [2624, 373, 102, 0] + "profile": [2628, 373, 102, 0] }, "junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/": { "entries": [ @@ -2628,37 +2628,37 @@ "tagexpression/", "listeners/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/java/org/junit/platform/": { "entries": [ "launcher/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/java/org/junit/": { "entries": [ "platform/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/java/org/": { "entries": [ "junit/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/java/": { "entries": [ "org/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/": { "entries": [ "java/" ], - "profile": [2603, 373, 102, 0] + "profile": [2607, 373, 102, 0] }, "junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/": { "entries": [ @@ -2770,13 +2770,13 @@ "testFixtures/", "main/" ], - "profile": [3022, 708, 121, 0] + "profile": [3034, 708, 121, 0] }, "junit-jupiter-engine/": { "entries": [ "src/" ], - "profile": [3022, 708, 121, 0] + "profile": [3034, 708, 121, 0] }, "junit-jupiter-engine/src/testFixtures/java/org/junit/jupiter/engine/discovery/": { "entries": [ @@ -2832,37 +2832,37 @@ "execution/", "descriptor/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/java/org/junit/jupiter/": { "entries": [ "engine/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/java/org/junit/": { "entries": [ "jupiter/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/java/org/": { "entries": [ "junit/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/java/": { "entries": [ "org/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/": { "entries": [ "java/" ], - "profile": [2996, 708, 121, 0] + "profile": [3008, 708, 121, 0] }, "junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/": { "entries": [ @@ -2919,7 +2919,7 @@ "ClassSelectorResolver.java", "predicates/" ], - "profile": [370, 115, 47, 0] + "profile": [382, 115, 47, 0] }, "junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/predicates/": { "entries": [ @@ -11777,11 +11777,12 @@ "junit-platform-launcher/src/main/java/org/junit/platform/launcher/TestPlan.java": { "checksum": "fff261500a9edad8af2796e1556aefca", "language": "Java", - "loc": 96, - "profile": [80, 16, 0, 0], + "loc": 100, + "profile": [84, 16, 0, 0], "measurements": [ {"unit_name": "from", "start": {"line": 88, "column": 25}, "end": {"line": 97, "column": 3}, "value": 10}, {"unit_name": "TestPlan", "start": {"line": 100, "column": 12}, "end": {"line": 103, "column": 3}, "value": 4}, + {"unit_name": "add", "start": {"line": 115, "column": 14}, "end": {"line": 118, "column": 3}, "value": 4}, {"unit_name": "addInternal", "start": {"line": 121, "column": 14}, "end": {"line": 142, "column": 3}, "value": 16}, {"unit_name": "getRoots", "start": {"line": 149, "column": 29}, "end": {"line": 151, "column": 3}, "value": 3}, {"unit_name": "getParent", "start": {"line": 159, "column": 34}, "end": {"line": 162, "column": 3}, "value": 4}, @@ -13456,8 +13457,8 @@ "junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/MethodSelectorResolver.java": { "checksum": "4aeab93d52046a78f2694bc8e419bf50", "language": "Java", - "loc": 134, - "profile": [70, 64, 0, 0], + "loc": 146, + "profile": [82, 64, 0, 0], "measurements": [ {"unit_name": "MethodSelectorResolver", "start": {"line": 69, "column": 2}, "end": {"line": 71, "column": 3}, "value": 3}, {"unit_name": "resolve", "start": {"line": 74, "column": 20}, "end": {"line": 76, "column": 3}, "value": 3}, @@ -13466,8 +13467,11 @@ {"unit_name": "resolve", "start": {"line": 113, "column": 20}, "end": {"line": 136, "column": 3}, "value": 22}, {"unit_name": "resolve", "start": {"line": 139, "column": 20}, "end": {"line": 152, "column": 3}, "value": 14}, {"unit_name": "expansionCallback", "start": {"line": 154, "column": 53}, "end": {"line": 162, "column": 3}, "value": 9}, + {"unit_name": "TEST", "start": {"line": 166, "column": 3}, "end": {"line": 172, "column": 4}, "value": 3}, {"unit_name": "createTestDescriptor", "start": {"line": 168, "column": 29}, "end": {"line": 171, "column": 5}, "value": 4}, + {"unit_name": "TEST_FACTORY", "start": {"line": 174, "column": 3}, "end": {"line": 182, "column": 4}, "value": 5}, {"unit_name": "createTestDescriptor", "start": {"line": 178, "column": 29}, "end": {"line": 181, "column": 5}, "value": 4}, + {"unit_name": "TEST_TEMPLATE", "start": {"line": 184, "column": 3}, "end": {"line": 191, "column": 4}, "value": 4}, {"unit_name": "createTestDescriptor", "start": {"line": 187, "column": 29}, "end": {"line": 190, "column": 5}, "value": 4}, {"unit_name": "MethodType", "start": {"line": 197, "column": 3}, "end": {"line": 201, "column": 4}, "value": 5}, {"unit_name": "resolve", "start": {"line": 203, "column": 36}, "end": {"line": 211, "column": 4}, "value": 9}, diff --git a/examples/spring-projects_spring-boot_v3.4.0/codelimit.json b/examples/spring-projects_spring-boot_v3.4.0/codelimit.json index 3eadd5a..8486539 100644 --- a/examples/spring-projects_spring-boot_v3.4.0/codelimit.json +++ b/examples/spring-projects_spring-boot_v3.4.0/codelimit.json @@ -1,14 +1,14 @@ { - "version": "0.17.0", - "uuid": "f2ba5f9f-cc15-43d5-a684-14519fba6c1b", - "timestamp": "2025-01-01T22:09:03+00:00", - "root": "/private/var/folders/t2/s_70szzn7qn22cp4d2nmrjbc0000gn/T/tmp2gug7a2e/spring-boot", + "version": "0.19.8", + "uuid": "c53b6c8b-665c-424c-b9f9-f7514b0043ef", + "timestamp": "2025-07-14T14:13:01+00:00", + "root": "/private/var/folders/t2/s_70szzn7qn22cp4d2nmrjbc0000gn/T/tmpjoxe1vk6/spring-boot", "codebase": { "totals": { "Java": { "files": 4399, - "lines_of_code": 134010, - "functions": 23552, + "lines_of_code": 134182, + "functions": 23591, "hard_to_maintain": 105, "unmaintainable": 2 }, @@ -28,7 +28,7 @@ "spring-boot-system-tests/", "buildSrc/" ], - "profile": [111086, 19267, 4183, 386] + "profile": [111236, 19289, 4183, 386] }, "spring-boot-tests/spring-boot-integration-tests/spring-boot-configuration-processor-tests/src/main/java/sample/": { "entries": [ @@ -77,7 +77,7 @@ "spring-boot-integration-tests/", "spring-boot-smoke-tests/" ], - "profile": [4863, 535, 211, 156] + "profile": [4894, 535, 211, 156] }, "spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/": { "entries": [ @@ -879,7 +879,7 @@ "spring-boot-smoke-test-session-jdbc/", "spring-boot-smoke-test-data-r2dbc/" ], - "profile": [3793, 340, 211, 156] + "profile": [3824, 340, 211, 156] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-websocket-tomcat/src/main/java/smoketest/websocket/tomcat/": { "entries": [ @@ -1970,13 +1970,13 @@ "dockerTest/", "main/" ], - "profile": [44, 0, 0, 0] + "profile": [48, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/": { "entries": [ "src/" ], - "profile": [44, 0, 0, 0] + "profile": [48, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/java/smoketest/kafka/": { "entries": [ @@ -1986,25 +1986,25 @@ "Producer.java", "ssl/" ], - "profile": [35, 0, 0, 0] + "profile": [39, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/java/smoketest/": { "entries": [ "kafka/" ], - "profile": [35, 0, 0, 0] + "profile": [39, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [35, 0, 0, 0] + "profile": [39, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/": { "entries": [ "java/" ], - "profile": [35, 0, 0, 0] + "profile": [39, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/java/smoketest/kafka/ssl/": { "entries": [ @@ -2344,37 +2344,37 @@ "Endpoint.java", "SampleJerseyApplication.java" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/main/java/smoketest/": { "entries": [ "jersey/" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/main/": { "entries": [ "java/" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/": { "entries": [ "main/" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/": { "entries": [ "src/" ], - "profile": [19, 0, 0, 0] + "profile": [22, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-static/src/main/java/smoketest/web/staticcontent/": { "entries": [ @@ -2876,19 +2876,19 @@ "resources/", "java/" ], - "profile": [277, 204, 211, 156] + "profile": [280, 204, 211, 156] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/": { "entries": [ "main/" ], - "profile": [277, 204, 211, 156] + "profile": [280, 204, 211, 156] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/": { "entries": [ "src/" ], - "profile": [277, 204, 211, 156] + "profile": [280, 204, 211, 156] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/main/java/smoketest/groovytemplates/": { "entries": [ @@ -2898,25 +2898,25 @@ "InMemoryMessageRepository.java", "mvc/" ], - "profile": [85, 0, 0, 0] + "profile": [88, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/main/java/smoketest/": { "entries": [ "groovytemplates/" ], - "profile": [85, 0, 0, 0] + "profile": [88, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [85, 0, 0, 0] + "profile": [88, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/main/java/smoketest/groovytemplates/mvc/": { "entries": [ "MessageController.java" ], - "profile": [31, 0, 0, 0] + "profile": [34, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-undertow/src/main/java/smoketest/undertow/": { "entries": [ @@ -3184,43 +3184,43 @@ "SecurityConfiguration.java", "SampleActuatorCustomSecurityApplication.java" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/java/smoketest/actuator/": { "entries": [ "customsecurity/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/java/smoketest/": { "entries": [ "actuator/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/": { "entries": [ "java/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/": { "entries": [ "main/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/": { "entries": [ "src/" ], - "profile": [34, 17, 0, 0] + "profile": [37, 17, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-redis/src/dockerTest/java/smoketest/session/": { "entries": [ @@ -3599,49 +3599,49 @@ "InMemoryMessageRepository.java", "mvc/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/java/smoketest/web/": { "entries": [ "thymeleaf/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/java/smoketest/": { "entries": [ "web/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/": { "entries": [ "java/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/": { "entries": [ "main/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/": { "entries": [ "src/" ], - "profile": [78, 0, 0, 0] + "profile": [89, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/java/smoketest/web/thymeleaf/mvc/": { "entries": [ "MessageController.java" ], - "profile": [21, 0, 0, 0] + "profile": [32, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/src/main/java/smoketest/jetty/ssl/": { "entries": [ @@ -4928,44 +4928,44 @@ "MySubversionClient.java", "Printer.java" ], - "profile": [11, 0, 0, 0] + "profile": [15, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/smoketest/bootstrapregistry/": { "entries": [ "app/", "external/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/smoketest/": { "entries": [ "bootstrapregistry/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/": { "entries": [ "java/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/": { "entries": [ "main/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/": { "entries": [ "src/" ], - "profile": [94, 0, 0, 0] + "profile": [98, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/smoketest/bootstrapregistry/external/svn/": { "entries": [ @@ -4994,43 +4994,43 @@ "SecurityConfiguration.java", "SampleSecureJerseyApplication.java" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/java/smoketest/secure/": { "entries": [ "jersey/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/java/smoketest/": { "entries": [ "secure/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/java/": { "entries": [ "smoketest/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/": { "entries": [ "java/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/": { "entries": [ "main/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/": { "entries": [ "src/" ], - "profile": [47, 0, 0, 0] + "profile": [50, 0, 0, 0] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-activemq-embedded/src/main/java/smoketest/activemq/embedded/": { "entries": [ @@ -5562,7 +5562,7 @@ "spring-boot-devtools/", "spring-boot/" ], - "profile": [99798, 16615, 3251, 230] + "profile": [99917, 16637, 3251, 230] }, "spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/": { "entries": [ @@ -6065,50 +6065,50 @@ "couchbase/", "session/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/boot/": { "entries": [ "autoconfigure/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/": { "entries": [ "springframework/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/": { "entries": [ "org/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/": { "entries": [ "java/" ], - "profile": [667, 109, 0, 0] + "profile": [671, 109, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/": { "entries": [ "dockerTest/", "main/" ], - "profile": [22510, 3068, 412, 161] + "profile": [22530, 3068, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/": { "entries": [ "src/" ], - "profile": [22510, 3068, 412, 161] + "profile": [22530, 3068, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/boot/autoconfigure/mail/": { "entries": [ @@ -6127,7 +6127,7 @@ "entries": [ "PulsarAutoConfigurationIntegrationTests.java" ], - "profile": [17, 0, 0, 0] + "profile": [21, 0, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/boot/autoconfigure/data/neo4j/": { "entries": [ @@ -6278,37 +6278,37 @@ "jackson/", "sql/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/": { "entries": [ "autoconfigure/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/": { "entries": [ "org/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/": { "entries": [ "java/" ], - "profile": [21843, 2959, 412, 161] + "profile": [21859, 2959, 412, 161] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/": { "entries": [ @@ -7130,7 +7130,7 @@ "KafkaAutoConfiguration.java", "package-info.java" ], - "profile": [963, 203, 0, 0] + "profile": [969, 203, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cassandra/": { "entries": [ @@ -7158,7 +7158,7 @@ "rsocket/", "data/" ], - "profile": [401, 92, 0, 0] + "profile": [411, 92, 0, 0] }, "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/graphql/servlet/": { "entries": [ @@ -7802,49 +7802,49 @@ "data/", "messaging/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/": { "entries": [ "docs/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/": { "entries": [ "org/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/": { "entries": [ "java/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/": { "entries": [ "main/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/": { "entries": [ "src/" ], - "profile": [1744, 0, 0, 0] + "profile": [1780, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/packaging/nativeimage/advanced/customhints/": { "entries": [ @@ -8171,7 +8171,7 @@ "entries": [ "MyBean.java" ], - "profile": [0, 0, 0, 0] + "profile": [2, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/": { "entries": [ @@ -8179,13 +8179,13 @@ "nonxa/", "primary/" ], - "profile": [2, 0, 0, 0] + "profile": [6, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/": { "entries": [ "mixingxaandnonxaconnections/" ], - "profile": [2, 0, 0, 0] + "profile": [6, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/": { "entries": [ @@ -8196,13 +8196,13 @@ "caching/", "validation/" ], - "profile": [120, 0, 0, 0] + "profile": [127, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/nonxa/": { "entries": [ "MyBean.java" ], - "profile": [0, 0, 0, 0] + "profile": [2, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/primary/": { "entries": [ @@ -8353,7 +8353,7 @@ "MyBean.java", "Archive.java" ], - "profile": [0, 0, 0, 0] + "profile": [3, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/ssl/bundles/": { "entries": [ @@ -8379,7 +8379,7 @@ "logging/", "developingautoconfiguration/" ], - "profile": [345, 0, 0, 0] + "profile": [365, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/launch/": { "entries": [ @@ -8529,7 +8529,7 @@ "MyBean.java", "typesafeconfigurationproperties/" ], - "profile": [168, 0, 0, 0] + "profile": [188, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/thirdpartyconfiguration/": { "entries": [ @@ -8550,7 +8550,7 @@ "validation/", "enablingannotatedtypes/" ], - "profile": [168, 0, 0, 0] + "profile": [188, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/javabeanbinding/": { "entries": [ @@ -8576,13 +8576,13 @@ "MyProperties.java", "nonnull/" ], - "profile": [46, 0, 0, 0] + "profile": [56, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/constructorbinding/nonnull/": { "entries": [ "MyProperties.java" ], - "profile": [23, 0, 0, 0] + "profile": [28, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/usingannotatedtypes/": { "entries": [ @@ -8603,20 +8603,20 @@ "javabeanbinding/", "constructorbinding/" ], - "profile": [18, 0, 0, 0] + "profile": [23, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/": { "entries": [ "durations/", "datasizes/" ], - "profile": [36, 0, 0, 0] + "profile": [46, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/durations/constructorbinding/": { "entries": [ "MyProperties.java" ], - "profile": [6, 0, 0, 0] + "profile": [11, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/datasizes/javabeanbinding/": { "entries": [ @@ -8629,13 +8629,13 @@ "javabeanbinding/", "constructorbinding/" ], - "profile": [18, 0, 0, 0] + "profile": [23, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/datasizes/constructorbinding/": { "entries": [ "MyProperties.java" ], - "profile": [6, 0, 0, 0] + "profile": [11, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/mergingcomplextypes/map/": { "entries": [ @@ -9556,7 +9556,7 @@ "nativeimage/", "springmvc/" ], - "profile": [200, 0, 0, 0] + "profile": [209, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/traditionaldeployment/convertexistingapplication/": { "entries": [ @@ -9652,7 +9652,7 @@ "MyCompleteAdditionalDataSourceConfiguration.java", "MyAdditionalDataSourceConfiguration.java" ], - "profile": [6, 0, 0, 0] + "profile": [10, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/": { "entries": [ @@ -9665,7 +9665,7 @@ "configurehibernatenamingstrategy/", "configurehibernatesecondlevelcaching/" ], - "profile": [52, 0, 0, 0] + "profile": [61, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/configureacomponentthatisusedbyjpa/": { "entries": [ @@ -9687,7 +9687,7 @@ "OrderConfiguration.java", "MyAdditionalEntityManagerFactoryConfiguration.java" ], - "profile": [10, 0, 0, 0] + "profile": [15, 0, 0, 0] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/separateentitydefinitionsfromspringconfiguration/": { "entries": [ @@ -10893,7 +10893,7 @@ "spring-boot-antlib/", "spring-boot-loader/" ], - "profile": [25891, 6817, 1519, 0] + "profile": [25903, 6817, 1519, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/": { "entries": [ @@ -11697,13 +11697,13 @@ "dockerTest/", "main/" ], - "profile": [5842, 1671, 177, 0] + "profile": [5854, 1671, 177, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/": { "entries": [ "src/" ], - "profile": [5842, 1671, 177, 0] + "profile": [5854, 1671, 177, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/dockerTest/java/org/springframework/boot/buildpack/platform/docker/": { "entries": [ @@ -11776,7 +11776,7 @@ "transport/", "type/" ], - "profile": [2222, 471, 33, 0] + "profile": [2234, 471, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/": { "entries": [ @@ -11787,43 +11787,43 @@ "build/", "socket/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/": { "entries": [ "platform/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/": { "entries": [ "buildpack/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/": { "entries": [ "org/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/": { "entries": [ "java/" ], - "profile": [4344, 858, 33, 0] + "profile": [4356, 858, 33, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/configuration/": { "entries": [ @@ -11861,7 +11861,7 @@ "package-info.java", "HttpClientTransport.java" ], - "profile": [261, 35, 0, 0] + "profile": [267, 35, 0, 0] }, "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/": { "entries": [ @@ -13120,55 +13120,55 @@ "flyway/", "session/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/": { "entries": [ "autoconfigure/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/": { "entries": [ "actuate/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/": { "entries": [ "org/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/": { "entries": [ "java/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/": { "entries": [ "main/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/": { "entries": [ "src/" ], - "profile": [7991, 460, 65, 0] + "profile": [7999, 460, 65, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/neo4j/": { "entries": [ @@ -13800,7 +13800,7 @@ "servlet/", "reactive/" ], - "profile": [778, 119, 0, 0] + "profile": [786, 119, 0, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/": { "entries": [ @@ -13814,7 +13814,7 @@ "TokenValidator.java", "package-info.java" ], - "profile": [287, 86, 0, 0] + "profile": [291, 86, 0, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/": { "entries": [ @@ -13826,7 +13826,7 @@ "ReactiveCloudFoundrySecurityService.java", "package-info.java" ], - "profile": [359, 17, 0, 0] + "profile": [363, 17, 0, 0] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/ldap/": { "entries": [ @@ -14295,13 +14295,13 @@ "dockerTest/", "main/" ], - "profile": [8341, 716, 31, 0] + "profile": [8369, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/": { "entries": [ "src/" ], - "profile": [8341, 716, 31, 0] + "profile": [8369, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/dockerTest/java/org/springframework/boot/actuate/metrics/cache/": { "entries": [ @@ -14371,37 +14371,37 @@ "flyway/", "session/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/": { "entries": [ "actuate/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/": { "entries": [ "org/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/": { "entries": [ "java/" ], - "profile": [8226, 716, 31, 0] + "profile": [8254, 738, 31, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/": { "entries": [ @@ -14614,7 +14614,7 @@ "SbomEndpointWebExtension.java", "package-info.java" ], - "profile": [149, 17, 0, 0] + "profile": [158, 17, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/mail/": { "entries": [ @@ -14760,7 +14760,7 @@ "HealthEndpointWebExtension.java", "ContributorRegistry.java" ], - "profile": [798, 54, 0, 0] + "profile": [810, 54, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/": { "entries": [ @@ -14887,7 +14887,7 @@ "invoker/", "jackson/" ], - "profile": [2785, 273, 0, 0] + "profile": [2792, 295, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/": { "entries": [ @@ -14915,7 +14915,7 @@ "reactive/", "annotation/" ], - "profile": [1464, 142, 0, 0] + "profile": [1471, 164, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/servlet/": { "entries": [ @@ -14926,7 +14926,7 @@ "SkipPathExtensionContentNegotiation.java", "package-info.java" ], - "profile": [311, 17, 0, 0] + "profile": [314, 39, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/jersey/": { "entries": [ @@ -14945,7 +14945,7 @@ "WebFluxEndpointHandlerMapping.java", "package-info.java" ], - "profile": [348, 36, 0, 0] + "profile": [352, 36, 0, 0] }, "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/annotation/": { "entries": [ @@ -15232,13 +15232,13 @@ "intTest/", "main/" ], - "profile": [2662, 493, 116, 69] + "profile": [2673, 493, 116, 69] }, "spring-boot-project/spring-boot-devtools/": { "entries": [ "src/" ], - "profile": [2662, 493, 116, 69] + "profile": [2673, 493, 116, 69] }, "spring-boot-project/spring-boot-devtools/src/main/resources/org/springframework/boot/devtools/livereload/": { "entries": [ @@ -15281,7 +15281,7 @@ "resources/", "java/" ], - "profile": [2655, 493, 116, 69] + "profile": [2666, 493, 116, 69] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/": { "entries": [ @@ -15299,31 +15299,31 @@ "autoconfigure/", "remote/" ], - "profile": [2616, 493, 75, 0] + "profile": [2627, 493, 75, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/": { "entries": [ "devtools/" ], - "profile": [2616, 493, 75, 0] + "profile": [2627, 493, 75, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [2616, 493, 75, 0] + "profile": [2627, 493, 75, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [2616, 493, 75, 0] + "profile": [2627, 493, 75, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/": { "entries": [ "org/" ], - "profile": [2616, 493, 75, 0] + "profile": [2627, 493, 75, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/settings/": { "entries": [ @@ -15476,7 +15476,7 @@ "server/", "client/" ], - "profile": [256, 48, 0, 0] + "profile": [267, 48, 0, 0] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/": { "entries": [ @@ -15486,7 +15486,7 @@ "RemoteClientConfiguration.java", "package-info.java" ], - "profile": [175, 48, 0, 0] + "profile": [186, 48, 0, 0] }, "spring-boot-project/spring-boot/src/main/java/org/springframework/boot/": { "entries": [ @@ -15570,44 +15570,44 @@ "jackson/", "sql/" ], - "profile": [26344, 4682, 942, 0] + "profile": [26348, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/main/java/org/springframework/": { "entries": [ "boot/" ], - "profile": [26344, 4682, 942, 0] + "profile": [26348, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/main/java/org/": { "entries": [ "springframework/" ], - "profile": [26344, 4682, 942, 0] + "profile": [26348, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/main/java/": { "entries": [ "org/" ], - "profile": [26344, 4682, 942, 0] + "profile": [26348, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/main/": { "entries": [ "java/", "javaTemplates/" ], - "profile": [26349, 4682, 942, 0] + "profile": [26353, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/": { "entries": [ "main/" ], - "profile": [26349, 4682, 942, 0] + "profile": [26353, 4682, 942, 0] }, "spring-boot-project/spring-boot/": { "entries": [ "src/" ], - "profile": [26349, 4682, 942, 0] + "profile": [26353, 4682, 942, 0] }, "spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/": { "entries": [ @@ -15687,7 +15687,7 @@ "event/", "logging/" ], - "profile": [6497, 1370, 269, 0] + "profile": [6501, 1370, 269, 0] }, "spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/metrics/buffering/": { "entries": [ @@ -15749,7 +15749,7 @@ "package-info.java", "ConfigDataEnvironmentContributor.java" ], - "profile": [1598, 403, 129, 0] + "profile": [1602, 403, 129, 0] }, "spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/annotation/": { "entries": [ @@ -19009,9 +19009,10 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/main/java/smoketest/kafka/SampleMessage.java": { "checksum": "727e26e0298eff1cfd40f3300f388c27", "language": "Java", - "loc": 9, - "profile": [9, 0, 0, 0], + "loc": 13, + "profile": [13, 0, 0, 0], "measurements": [ + {"unit_name": "SampleMessage", "start": {"line": 29, "column": 9}, "end": {"line": 32, "column": 3}, "value": 4}, {"unit_name": "getId", "start": {"line": 34, "column": 17}, "end": {"line": 36, "column": 3}, "value": 3}, {"unit_name": "getMessage", "start": {"line": 38, "column": 16}, "end": {"line": 40, "column": 3}, "value": 3}, {"unit_name": "toString", "start": {"line": 43, "column": 16}, "end": {"line": 45, "column": 3}, "value": 3} @@ -19275,9 +19276,10 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/main/java/smoketest/jersey/ReverseEndpoint.java": { "checksum": "442e0ea01d466731d37e7269657bb4a4", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 3, + "profile": [3, 0, 0, 0], "measurements": [ + {"unit_name": "reverse", "start": {"line": 31, "column": 16}, "end": {"line": 33, "column": 3}, "value": 3} ] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jersey/src/main/java/smoketest/jersey/Endpoint.java": { @@ -19896,11 +19898,12 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-groovy-templates/src/main/java/smoketest/groovytemplates/mvc/MessageController.java": { "checksum": "f70b868bc502bd22912767ceb4d40e29", "language": "Java", - "loc": 31, - "profile": [31, 0, 0, 0], + "loc": 34, + "profile": [34, 0, 0, 0], "measurements": [ {"unit_name": "MessageController", "start": {"line": 44, "column": 9}, "end": {"line": 46, "column": 3}, "value": 3}, {"unit_name": "list", "start": {"line": 49, "column": 22}, "end": {"line": 52, "column": 3}, "value": 4}, + {"unit_name": "view", "start": {"line": 55, "column": 22}, "end": {"line": 57, "column": 3}, "value": 3}, {"unit_name": "createForm", "start": {"line": 60, "column": 16}, "end": {"line": 62, "column": 3}, "value": 3}, {"unit_name": "create", "start": {"line": 65, "column": 22}, "end": {"line": 75, "column": 3}, "value": 11}, {"unit_name": "getFieldErrors", "start": {"line": 77, "column": 35}, "end": {"line": 83, "column": 3}, "value": 7}, @@ -20234,9 +20237,10 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/java/smoketest/actuator/customsecurity/ExampleRestControllerEndpoint.java": { "checksum": "2079dcd6dd7bca15d8f9a9f53766e8e8", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 3, + "profile": [3, 0, 0, 0], "measurements": [ + {"unit_name": "echo", "start": {"line": 31, "column": 32}, "end": {"line": 33, "column": 3}, "value": 3} ] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/main/java/smoketest/actuator/customsecurity/SecurityConfiguration.java": { @@ -20546,14 +20550,17 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-thymeleaf/src/main/java/smoketest/web/thymeleaf/mvc/MessageController.java": { "checksum": "752c3cb8d0e6bc6454a92a8cda7f18f8", "language": "Java", - "loc": 21, - "profile": [21, 0, 0, 0], + "loc": 32, + "profile": [32, 0, 0, 0], "measurements": [ {"unit_name": "MessageController", "start": {"line": 39, "column": 9}, "end": {"line": 41, "column": 3}, "value": 3}, {"unit_name": "list", "start": {"line": 44, "column": 22}, "end": {"line": 47, "column": 3}, "value": 4}, + {"unit_name": "view", "start": {"line": 50, "column": 22}, "end": {"line": 52, "column": 3}, "value": 3}, {"unit_name": "createForm", "start": {"line": 55, "column": 16}, "end": {"line": 57, "column": 3}, "value": 3}, {"unit_name": "create", "start": {"line": 60, "column": 22}, "end": {"line": 67, "column": 3}, "value": 8}, - {"unit_name": "foo", "start": {"line": 70, "column": 16}, "end": {"line": 72, "column": 3}, "value": 3} + {"unit_name": "foo", "start": {"line": 70, "column": 16}, "end": {"line": 72, "column": 3}, "value": 3}, + {"unit_name": "delete", "start": {"line": 75, "column": 22}, "end": {"line": 79, "column": 3}, "value": 5}, + {"unit_name": "modifyForm", "start": {"line": 82, "column": 22}, "end": {"line": 84, "column": 3}, "value": 3} ] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/src/main/java/smoketest/jetty/ssl/SampleJettySslApplication.java": { @@ -21641,9 +21648,10 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/smoketest/bootstrapregistry/app/Printer.java": { "checksum": "540ddde5619c3df9dfd0cd660ed554cc", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 4, + "profile": [4, 0, 0, 0], "measurements": [ + {"unit_name": "Printer", "start": {"line": 27, "column": 2}, "end": {"line": 30, "column": 3}, "value": 4} ] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-bootstrap-registry/src/main/java/smoketest/bootstrapregistry/external/svn/SubversionConfigDataLocationResolver.java": { @@ -21743,9 +21751,10 @@ "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/java/smoketest/secure/jersey/ReverseEndpoint.java": { "checksum": "eb95275ca06d09375acc1c1b0142bded", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 3, + "profile": [3, 0, 0, 0], "measurements": [ + {"unit_name": "reverse", "start": {"line": 31, "column": 16}, "end": {"line": 33, "column": 3}, "value": 3} ] }, "spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-jersey/src/main/java/smoketest/secure/jersey/Endpoint.java": { @@ -23943,10 +23952,11 @@ "spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java": { "checksum": "5044ca9896e5e766b8a54a2c45ac45ee", "language": "Java", - "loc": 17, - "profile": [17, 0, 0, 0], + "loc": 21, + "profile": [21, 0, 0, 0], "measurements": [ {"unit_name": "pulsarProperties", "start": {"line": 67, "column": 14}, "end": {"line": 70, "column": 3}, "value": 4}, + {"unit_name": "appStartsWithAutoConfiguredSpringPulsarComponents", "start": {"line": 73, "column": 7}, "end": {"line": 76, "column": 3}, "value": 4}, {"unit_name": "templateCanBeAccessedDuringWebRequest", "start": {"line": 79, "column": 7}, "end": {"line": 82, "column": 3}, "value": 4}, {"unit_name": "listen", "start": {"line": 92, "column": 8}, "end": {"line": 94, "column": 4}, "value": 3}, {"unit_name": "TestWebController", "start": {"line": 103, "column": 3}, "end": {"line": 105, "column": 4}, "value": 3}, @@ -31157,11 +31167,12 @@ "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaStreamsAnnotationDrivenConfiguration.java": { "checksum": "31f15130d80d04d686fea60cbf36e3d9", "language": "Java", - "loc": 34, - "profile": [34, 0, 0, 0], + "loc": 40, + "profile": [40, 0, 0, 0], "measurements": [ {"unit_name": "KafkaStreamsAnnotationDrivenConfiguration", "start": {"line": 59, "column": 2}, "end": {"line": 61, "column": 3}, "value": 3}, {"unit_name": "defaultKafkaStreamsConfig", "start": {"line": 65, "column": 28}, "end": {"line": 78, "column": 3}, "value": 14}, + {"unit_name": "kafkaStreamsFactoryBeanConfigurer", "start": {"line": 81, "column": 36}, "end": {"line": 86, "column": 3}, "value": 6}, {"unit_name": "applyKafkaConnectionDetailsForStreams", "start": {"line": 88, "column": 15}, "end": {"line": 94, "column": 3}, "value": 7}, {"unit_name": "KafkaStreamsFactoryBeanConfigurer", "start": {"line": 103, "column": 3}, "end": {"line": 106, "column": 4}, "value": 4}, {"unit_name": "afterPropertiesSet", "start": {"line": 109, "column": 15}, "end": {"line": 114, "column": 4}, "value": 6} @@ -31365,8 +31376,8 @@ "spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/graphql/GraphQlAutoConfiguration.java": { "checksum": "acc951a06c19f6d270000f5aa3271b4a", "language": "Java", - "loc": 76, - "profile": [52, 24, 0, 0], + "loc": 86, + "profile": [62, 24, 0, 0], "measurements": [ {"unit_name": "GraphQlAutoConfiguration", "start": {"line": 88, "column": 9}, "end": {"line": 90, "column": 3}, "value": 3}, {"unit_name": "graphQlSource", "start": {"line": 94, "column": 23}, "end": {"line": 117, "column": 3}, "value": 24}, @@ -31374,6 +31385,7 @@ {"unit_name": "resolveSchemaResources", "start": {"line": 130, "column": 25}, "end": {"line": 138, "column": 3}, "value": 9}, {"unit_name": "batchLoaderRegistry", "start": {"line": 142, "column": 29}, "end": {"line": 144, "column": 3}, "value": 3}, {"unit_name": "executionGraphQlService", "start": {"line": 148, "column": 33}, "end": {"line": 153, "column": 3}, "value": 6}, + {"unit_name": "annotatedControllerConfigurer", "start": {"line": 157, "column": 39}, "end": {"line": 166, "column": 3}, "value": 10}, {"unit_name": "annotatedControllerConfigurerDataFetcherExceptionResolver", "start": {"line": 169, "column": 31}, "end": {"line": 172, "column": 3}, "value": 4}, {"unit_name": "cursorStrategy", "start": {"line": 180, "column": 42}, "end": {"line": 182, "column": 4}, "value": 3}, {"unit_name": "cursorStrategyCustomizer", "start": {"line": 186, "column": 34}, "end": {"line": 196, "column": 4}, "value": 11}, @@ -36388,17 +36400,19 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/xa/MyBean.java": { "checksum": "7887861cbf8b565dbf98dedbbe9b7c94", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 2, + "profile": [2, 0, 0, 0], "measurements": [ + {"unit_name": "MyBean", "start": {"line": 25, "column": 9}, "end": {"line": 27, "column": 3}, "value": 2} ] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/nonxa/MyBean.java": { "checksum": "b4f5e425bd8bea75313be5313ef74370", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 2, + "profile": [2, 0, 0, 0], "measurements": [ + {"unit_name": "MyBean", "start": {"line": 25, "column": 9}, "end": {"line": 27, "column": 3}, "value": 2} ] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/jta/mixingxaandnonxaconnections/primary/MyBean.java": { @@ -36668,9 +36682,10 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/validation/MyBean.java": { "checksum": "3b8fc7d02f1233f5608c01095b68b9db", "language": "Java", - "loc": 0, - "profile": [0, 0, 0, 0], + "loc": 3, + "profile": [3, 0, 0, 0], "measurements": [ + {"unit_name": "findByCodeAndAuthor", "start": {"line": 28, "column": 17}, "end": {"line": 30, "column": 3}, "value": 3} ] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/validation/Archive.java": { @@ -36951,13 +36966,14 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/constructorbinding/MyProperties.java": { "checksum": "e6b139f0c18a710309eb98f56b14e3bb", "language": "Java", - "loc": 23, - "profile": [23, 0, 0, 0], + "loc": 28, + "profile": [28, 0, 0, 0], "measurements": [ {"unit_name": "MyProperties", "start": {"line": 37, "column": 9}, "end": {"line": 41, "column": 3}, "value": 5}, {"unit_name": "isEnabled", "start": {"line": 44, "column": 17}, "end": {"line": 46, "column": 3}, "value": 3}, {"unit_name": "getRemoteAddress", "start": {"line": 48, "column": 21}, "end": {"line": 50, "column": 3}, "value": 3}, {"unit_name": "getSecurity", "start": {"line": 52, "column": 18}, "end": {"line": 54, "column": 3}, "value": 3}, + {"unit_name": "Security", "start": {"line": 68, "column": 10}, "end": {"line": 72, "column": 4}, "value": 5}, {"unit_name": "getUsername", "start": {"line": 75, "column": 17}, "end": {"line": 77, "column": 4}, "value": 3}, {"unit_name": "getPassword", "start": {"line": 79, "column": 17}, "end": {"line": 81, "column": 4}, "value": 3}, {"unit_name": "getRoles", "start": {"line": 83, "column": 23}, "end": {"line": 85, "column": 4}, "value": 3} @@ -36966,13 +36982,14 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/constructorbinding/nonnull/MyProperties.java": { "checksum": "35e17cef21280e42bdfb4f7e5ccd5ec2", "language": "Java", - "loc": 23, - "profile": [23, 0, 0, 0], + "loc": 28, + "profile": [28, 0, 0, 0], "measurements": [ {"unit_name": "MyProperties", "start": {"line": 35, "column": 9}, "end": {"line": 39, "column": 3}, "value": 5}, {"unit_name": "isEnabled", "start": {"line": 42, "column": 17}, "end": {"line": 44, "column": 3}, "value": 3}, {"unit_name": "getRemoteAddress", "start": {"line": 46, "column": 21}, "end": {"line": 48, "column": 3}, "value": 3}, {"unit_name": "getSecurity", "start": {"line": 50, "column": 18}, "end": {"line": 52, "column": 3}, "value": 3}, + {"unit_name": "Security", "start": {"line": 62, "column": 10}, "end": {"line": 66, "column": 4}, "value": 5}, {"unit_name": "getUsername", "start": {"line": 68, "column": 17}, "end": {"line": 70, "column": 4}, "value": 3}, {"unit_name": "getPassword", "start": {"line": 72, "column": 17}, "end": {"line": 74, "column": 4}, "value": 3}, {"unit_name": "getRoles", "start": {"line": 76, "column": 23}, "end": {"line": 78, "column": 4}, "value": 3} @@ -37022,9 +37039,10 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/durations/constructorbinding/MyProperties.java": { "checksum": "726432665380fcef3b9e6dc278c6a758", "language": "Java", - "loc": 6, - "profile": [6, 0, 0, 0], + "loc": 11, + "profile": [11, 0, 0, 0], "measurements": [ + {"unit_name": "MyProperties", "start": {"line": 35, "column": 9}, "end": {"line": 39, "column": 3}, "value": 5}, {"unit_name": "getSessionTimeout", "start": {"line": 42, "column": 18}, "end": {"line": 44, "column": 3}, "value": 3}, {"unit_name": "getReadTimeout", "start": {"line": 46, "column": 18}, "end": {"line": 48, "column": 3}, "value": 3} ] @@ -37044,9 +37062,10 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/externalconfig/typesafeconfigurationproperties/conversion/datasizes/constructorbinding/MyProperties.java": { "checksum": "47ee8049f61614426aadc393b0e3ef97", "language": "Java", - "loc": 6, - "profile": [6, 0, 0, 0], + "loc": 11, + "profile": [11, 0, 0, 0], "measurements": [ + {"unit_name": "MyProperties", "start": {"line": 34, "column": 9}, "end": {"line": 38, "column": 3}, "value": 5}, {"unit_name": "getBufferSize", "start": {"line": 41, "column": 18}, "end": {"line": 43, "column": 3}, "value": 3}, {"unit_name": "getSizeThreshold", "start": {"line": 45, "column": 18}, "end": {"line": 47, "column": 3}, "value": 3} ] @@ -38503,10 +38522,11 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/configuretwodatasources/MyCompleteAdditionalDataSourceConfiguration.java": { "checksum": "5e2575182cb02220e1d9f5847afe3ae9", "language": "Java", - "loc": 3, - "profile": [3, 0, 0, 0], + "loc": 7, + "profile": [7, 0, 0, 0], "measurements": [ - {"unit_name": "secondDataSourceProperties", "start": {"line": 33, "column": 30}, "end": {"line": 35, "column": 3}, "value": 3} + {"unit_name": "secondDataSourceProperties", "start": {"line": 33, "column": 30}, "end": {"line": 35, "column": 3}, "value": 3}, + {"unit_name": "secondDataSource", "start": {"line": 40, "column": 26}, "end": {"line": 43, "column": 3}, "value": 4} ] }, "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/configuretwodatasources/MyAdditionalDataSourceConfiguration.java": { @@ -38571,10 +38591,11 @@ "spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/dataaccess/usemultipleentitymanagers/MyAdditionalEntityManagerFactoryConfiguration.java": { "checksum": "95ceb66b38667500b0b7acd4f4a24b30", "language": "Java", - "loc": 10, - "profile": [10, 0, 0, 0], + "loc": 15, + "profile": [15, 0, 0, 0], "measurements": [ {"unit_name": "secondJpaProperties", "start": {"line": 37, "column": 23}, "end": {"line": 39, "column": 3}, "value": 3}, + {"unit_name": "secondEntityManagerFactory", "start": {"line": 43, "column": 48}, "end": {"line": 47, "column": 3}, "value": 5}, {"unit_name": "createEntityManagerFactoryBuilder", "start": {"line": 49, "column": 38}, "end": {"line": 52, "column": 3}, "value": 4}, {"unit_name": "createJpaVendorAdapter", "start": {"line": 54, "column": 27}, "end": {"line": 57, "column": 3}, "value": 3} ] @@ -44312,12 +44333,13 @@ "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/LoadImageUpdateEvent.java": { "checksum": "4a5daacc25c0b5cb2897877af24abe2f", "language": "Java", - "loc": 18, - "profile": [18, 0, 0, 0], + "loc": 21, + "profile": [21, 0, 0, 0], "measurements": [ {"unit_name": "LoadImageUpdateEvent", "start": {"line": 35, "column": 9}, "end": {"line": 40, "column": 3}, "value": 6}, {"unit_name": "getStream", "start": {"line": 46, "column": 16}, "end": {"line": 48, "column": 3}, "value": 3}, {"unit_name": "getErrorDetail", "start": {"line": 55, "column": 21}, "end": {"line": 57, "column": 3}, "value": 3}, + {"unit_name": "ErrorDetail", "start": {"line": 69, "column": 10}, "end": {"line": 71, "column": 4}, "value": 3}, {"unit_name": "getMessage", "start": {"line": 77, "column": 17}, "end": {"line": 79, "column": 4}, "value": 3}, {"unit_name": "toString", "start": {"line": 82, "column": 17}, "end": {"line": 84, "column": 4}, "value": 3} ] @@ -44325,11 +44347,12 @@ "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/PushImageUpdateEvent.java": { "checksum": "aa4db5d7b2a05e14531f817973204bb6", "language": "Java", - "loc": 14, - "profile": [14, 0, 0, 0], + "loc": 17, + "profile": [17, 0, 0, 0], "measurements": [ {"unit_name": "PushImageUpdateEvent", "start": {"line": 33, "column": 9}, "end": {"line": 37, "column": 3}, "value": 5}, {"unit_name": "getErrorDetail", "start": {"line": 43, "column": 21}, "end": {"line": 45, "column": 3}, "value": 3}, + {"unit_name": "ErrorDetail", "start": {"line": 55, "column": 10}, "end": {"line": 57, "column": 4}, "value": 3}, {"unit_name": "getMessage", "start": {"line": 63, "column": 17}, "end": {"line": 65, "column": 4}, "value": 3}, {"unit_name": "toString", "start": {"line": 68, "column": 17}, "end": {"line": 70, "column": 4}, "value": 3} ] @@ -44791,9 +44814,10 @@ "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/transport/Message.java": { "checksum": "5fffe15da2fc78507aa28ff7ff93a256", "language": "Java", - "loc": 6, - "profile": [6, 0, 0, 0], + "loc": 9, + "profile": [9, 0, 0, 0], "measurements": [ + {"unit_name": "Message", "start": {"line": 33, "column": 2}, "end": {"line": 35, "column": 3}, "value": 3}, {"unit_name": "getMessage", "start": {"line": 41, "column": 16}, "end": {"line": 43, "column": 3}, "value": 3}, {"unit_name": "toString", "start": {"line": 46, "column": 16}, "end": {"line": 48, "column": 3}, "value": 3} ] @@ -44866,9 +44890,10 @@ "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/transport/Errors.java": { "checksum": "24070b5c55f6b5a0c4ee1522001033a4", "language": "Java", - "loc": 25, - "profile": [25, 0, 0, 0], + "loc": 28, + "profile": [28, 0, 0, 0], "measurements": [ + {"unit_name": "Errors", "start": {"line": 38, "column": 2}, "end": {"line": 40, "column": 3}, "value": 3}, {"unit_name": "iterator", "start": {"line": 43, "column": 32}, "end": {"line": 45, "column": 3}, "value": 3}, {"unit_name": "stream", "start": {"line": 51, "column": 23}, "end": {"line": 53, "column": 3}, "value": 3}, {"unit_name": "isEmpty", "start": {"line": 59, "column": 17}, "end": {"line": 61, "column": 3}, "value": 3}, @@ -54181,11 +54206,12 @@ "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtension.java": { "checksum": "05751b09a17c61f22764b1551aeb5a2c", "language": "Java", - "loc": 6, - "profile": [6, 0, 0, 0], + "loc": 10, + "profile": [10, 0, 0, 0], "measurements": [ {"unit_name": "CloudFoundryHealthEndpointWebExtension", "start": {"line": 43, "column": 9}, "end": {"line": 45, "column": 3}, "value": 3}, - {"unit_name": "health", "start": {"line": 48, "column": 46}, "end": {"line": 50, "column": 3}, "value": 3} + {"unit_name": "health", "start": {"line": 48, "column": 46}, "end": {"line": 50, "column": 3}, "value": 3}, + {"unit_name": "health", "start": {"line": 53, "column": 46}, "end": {"line": 56, "column": 3}, "value": 4} ] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryWebEndpointServletHandlerMapping.java": { @@ -54308,11 +54334,12 @@ "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtension.java": { "checksum": "342921e25f3482dd55d00366c4917dfb", "language": "Java", - "loc": 6, - "profile": [6, 0, 0, 0], + "loc": 10, + "profile": [10, 0, 0, 0], "measurements": [ {"unit_name": "CloudFoundryReactiveHealthEndpointWebExtension", "start": {"line": 45, "column": 9}, "end": {"line": 47, "column": 3}, "value": 3}, - {"unit_name": "health", "start": {"line": 50, "column": 62}, "end": {"line": 52, "column": 3}, "value": 3} + {"unit_name": "health", "start": {"line": 50, "column": 62}, "end": {"line": 52, "column": 3}, "value": 3}, + {"unit_name": "health", "start": {"line": 55, "column": 62}, "end": {"line": 58, "column": 3}, "value": 4} ] }, "spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveTokenValidator.java": { @@ -57197,15 +57224,18 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/sbom/SbomEndpointWebExtension.java": { "checksum": "9360d3715e1a0d719396bd0858210981", "language": "Java", - "loc": 59, - "profile": [42, 17, 0, 0], + "loc": 68, + "profile": [51, 17, 0, 0], "measurements": [ {"unit_name": "SbomEndpointWebExtension", "start": {"line": 48, "column": 9}, "end": {"line": 51, "column": 3}, "value": 4}, {"unit_name": "sbom", "start": {"line": 54, "column": 32}, "end": {"line": 61, "column": 3}, "value": 8}, {"unit_name": "getMediaType", "start": {"line": 63, "column": 19}, "end": {"line": 79, "column": 3}, "value": 17}, {"unit_name": "detectSbomType", "start": {"line": 81, "column": 19}, "end": {"line": 89, "column": 3}, "value": 9}, + {"unit_name": "CYCLONE_DX", "start": {"line": 93, "column": 3}, "end": {"line": 98, "column": 4}, "value": 3}, {"unit_name": "matches", "start": {"line": 95, "column": 12}, "end": {"line": 97, "column": 5}, "value": 3}, + {"unit_name": "SPDX", "start": {"line": 99, "column": 3}, "end": {"line": 104, "column": 4}, "value": 3}, {"unit_name": "matches", "start": {"line": 101, "column": 12}, "end": {"line": 103, "column": 5}, "value": 3}, + {"unit_name": "SYFT", "start": {"line": 105, "column": 3}, "end": {"line": 110, "column": 4}, "value": 3}, {"unit_name": "matches", "start": {"line": 107, "column": 12}, "end": {"line": 109, "column": 5}, "value": 3}, {"unit_name": "UNKNOWN", "start": {"line": 111, "column": 3}, "end": {"line": 116, "column": 4}, "value": 3}, {"unit_name": "matches", "start": {"line": 113, "column": 12}, "end": {"line": 115, "column": 5}, "value": 3}, @@ -57797,11 +57827,12 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpoint.java": { "checksum": "5bed0f5a7380fb86c44b5d8a6e2917a5", "language": "Java", - "loc": 19, - "profile": [19, 0, 0, 0], + "loc": 22, + "profile": [22, 0, 0, 0], "measurements": [ {"unit_name": "HealthEndpoint", "start": {"line": 59, "column": 9}, "end": {"line": 62, "column": 3}, "value": 4}, {"unit_name": "health", "start": {"line": 65, "column": 25}, "end": {"line": 68, "column": 3}, "value": 4}, + {"unit_name": "healthForPath", "start": {"line": 71, "column": 25}, "end": {"line": 73, "column": 3}, "value": 3}, {"unit_name": "health", "start": {"line": 75, "column": 26}, "end": {"line": 78, "column": 3}, "value": 4}, {"unit_name": "getHealth", "start": {"line": 81, "column": 28}, "end": {"line": 83, "column": 3}, "value": 3}, {"unit_name": "aggregateContributions", "start": {"line": 86, "column": 28}, "end": {"line": 89, "column": 3}, "value": 4} @@ -57810,11 +57841,12 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/ReactiveHealthEndpointWebExtension.java": { "checksum": "354c488be01066dabaae728c958f6293", "language": "Java", - "loc": 50, - "profile": [50, 0, 0, 0], + "loc": 55, + "profile": [55, 0, 0, 0], "measurements": [ {"unit_name": "ReactiveHealthEndpointWebExtension", "start": {"line": 61, "column": 9}, "end": {"line": 64, "column": 3}, "value": 4}, {"unit_name": "health", "start": {"line": 67, "column": 62}, "end": {"line": 70, "column": 3}, "value": 4}, + {"unit_name": "health", "start": {"line": 73, "column": 62}, "end": {"line": 77, "column": 3}, "value": 5}, {"unit_name": "health", "start": {"line": 79, "column": 62}, "end": {"line": 93, "column": 3}, "value": 15}, {"unit_name": "getHealth", "start": {"line": 96, "column": 44}, "end": {"line": 98, "column": 3}, "value": 3}, {"unit_name": "aggregateContributions", "start": {"line": 101, "column": 44}, "end": {"line": 109, "column": 3}, "value": 9}, @@ -58263,11 +58295,12 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpointWebExtension.java": { "checksum": "df1a3d49339138825c5bee657f60a3ab", "language": "Java", - "loc": 28, - "profile": [28, 0, 0, 0], + "loc": 32, + "profile": [32, 0, 0, 0], "measurements": [ {"unit_name": "HealthEndpointWebExtension", "start": {"line": 61, "column": 9}, "end": {"line": 64, "column": 3}, "value": 4}, {"unit_name": "health", "start": {"line": 67, "column": 46}, "end": {"line": 70, "column": 3}, "value": 4}, + {"unit_name": "health", "start": {"line": 73, "column": 46}, "end": {"line": 76, "column": 3}, "value": 4}, {"unit_name": "health", "start": {"line": 78, "column": 46}, "end": {"line": 90, "column": 3}, "value": 13}, {"unit_name": "getHealth", "start": {"line": 93, "column": 28}, "end": {"line": 95, "column": 3}, "value": 3}, {"unit_name": "aggregateContributions", "start": {"line": 98, "column": 28}, "end": {"line": 101, "column": 3}, "value": 4} @@ -59328,8 +59361,8 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/servlet/AbstractWebMvcEndpointHandlerMapping.java": { "checksum": "d33b75412805829c8001a6c2103a4dce", "language": "Java", - "loc": 200, - "profile": [200, 0, 0, 0], + "loc": 225, + "profile": [203, 22, 0, 0], "measurements": [ {"unit_name": "AbstractWebMvcEndpointHandlerMapping", "start": {"line": 116, "column": 9}, "end": {"line": 120, "column": 3}, "value": 5}, {"unit_name": "AbstractWebMvcEndpointHandlerMapping", "start": {"line": 131, "column": 9}, "end": {"line": 140, "column": 3}, "value": 10}, @@ -59348,6 +59381,7 @@ {"unit_name": "extendInterceptors", "start": {"line": 247, "column": 17}, "end": {"line": 249, "column": 3}, "value": 3}, {"unit_name": "getEndpoints", "start": {"line": 261, "column": 42}, "end": {"line": 263, "column": 3}, "value": 3}, {"unit_name": "ServletWebOperationAdapter", "start": {"line": 306, "column": 3}, "end": {"line": 308, "column": 4}, "value": 3}, + {"unit_name": "handle", "start": {"line": 311, "column": 17}, "end": {"line": 332, "column": 4}, "value": 22}, {"unit_name": "toString", "start": {"line": 335, "column": 17}, "end": {"line": 337, "column": 4}, "value": 3}, {"unit_name": "getArguments", "start": {"line": 339, "column": 31}, "end": {"line": 353, "column": 4}, "value": 15}, {"unit_name": "getRemainingPathSegments", "start": {"line": 355, "column": 18}, "end": {"line": 364, "column": 4}, "value": 10}, @@ -59357,6 +59391,7 @@ {"unit_name": "convertIfNecessary", "start": {"line": 399, "column": 18}, "end": {"line": 404, "column": 4}, "value": 6}, {"unit_name": "apply", "start": {"line": 409, "column": 18}, "end": {"line": 414, "column": 5}, "value": 6}, {"unit_name": "OperationHandler", "start": {"line": 427, "column": 3}, "end": {"line": 429, "column": 4}, "value": 3}, + {"unit_name": "handle", "start": {"line": 433, "column": 10}, "end": {"line": 435, "column": 4}, "value": 3}, {"unit_name": "toString", "start": {"line": 438, "column": 17}, "end": {"line": 440, "column": 4}, "value": 3}, {"unit_name": "WebMvcEndpointHandlerMethod", "start": {"line": 449, "column": 3}, "end": {"line": 451, "column": 4}, "value": 3}, {"unit_name": "toString", "start": {"line": 454, "column": 17}, "end": {"line": 456, "column": 4}, "value": 3}, @@ -59476,8 +59511,8 @@ "spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/reactive/AbstractWebFluxEndpointHandlerMapping.java": { "checksum": "a443d1507583c85164979e1f818e4406", "language": "Java", - "loc": 252, - "profile": [235, 17, 0, 0], + "loc": 256, + "profile": [239, 17, 0, 0], "measurements": [ {"unit_name": "AbstractWebFluxEndpointHandlerMapping", "start": {"line": 118, "column": 9}, "end": {"line": 127, "column": 3}, "value": 10}, {"unit_name": "initHandlerMethods", "start": {"line": 130, "column": 17}, "end": {"line": 139, "column": 3}, "value": 10}, @@ -59510,6 +59545,7 @@ {"unit_name": "toResponseEntity", "start": {"line": 419, "column": 34}, "end": {"line": 428, "column": 4}, "value": 10}, {"unit_name": "toString", "start": {"line": 431, "column": 17}, "end": {"line": 433, "column": 4}, "value": 3}, {"unit_name": "WriteOperationHandler", "start": {"line": 444, "column": 3}, "end": {"line": 446, "column": 4}, "value": 3}, + {"unit_name": "handle", "start": {"line": 450, "column": 37}, "end": {"line": 453, "column": 4}, "value": 4}, {"unit_name": "toString", "start": {"line": 456, "column": 17}, "end": {"line": 458, "column": 4}, "value": 3}, {"unit_name": "ReadOperationHandler", "start": {"line": 469, "column": 3}, "end": {"line": 471, "column": 4}, "value": 3}, {"unit_name": "handle", "start": {"line": 475, "column": 37}, "end": {"line": 477, "column": 4}, "value": 3}, @@ -62208,8 +62244,8 @@ "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/RemoteClientConfiguration.java": { "checksum": "cede563497f6cba0d24de5e9b5217796", "language": "Java", - "loc": 84, - "profile": [84, 0, 0, 0], + "loc": 95, + "profile": [95, 0, 0, 0], "measurements": [ {"unit_name": "RemoteClientConfiguration", "start": {"line": 82, "column": 9}, "end": {"line": 84, "column": 3}, "value": 3}, {"unit_name": "propertySourcesPlaceholderConfigurer", "start": {"line": 87, "column": 53}, "end": {"line": 89, "column": 3}, "value": 3}, @@ -62217,6 +62253,7 @@ {"unit_name": "getSecurityInterceptor", "start": {"line": 103, "column": 39}, "end": {"line": 110, "column": 3}, "value": 8}, {"unit_name": "afterPropertiesSet", "start": {"line": 113, "column": 14}, "end": {"line": 115, "column": 3}, "value": 3}, {"unit_name": "logWarnings", "start": {"line": 117, "column": 15}, "end": {"line": 127, "column": 3}, "value": 11}, + {"unit_name": "LiveReloadConfiguration", "start": {"line": 144, "column": 3}, "end": {"line": 149, "column": 4}, "value": 6}, {"unit_name": "liveReloadServer", "start": {"line": 154, "column": 20}, "end": {"line": 157, "column": 4}, "value": 4}, {"unit_name": "liveReloadTriggeringClassPathChangedEventListener", "start": {"line": 160, "column": 46}, "end": {"line": 167, "column": 4}, "value": 8}, {"unit_name": "optionalLiveReloadServer", "start": {"line": 170, "column": 28}, "end": {"line": 172, "column": 4}, "value": 3}, @@ -62225,7 +62262,8 @@ {"unit_name": "classPathFileSystemWatcher", "start": {"line": 194, "column": 30}, "end": {"line": 202, "column": 4}, "value": 9}, {"unit_name": "getFileSystemWatcherFactory", "start": {"line": 205, "column": 28}, "end": {"line": 207, "column": 4}, "value": 3}, {"unit_name": "newFileSystemWatcher", "start": {"line": 209, "column": 29}, "end": {"line": 218, "column": 4}, "value": 10}, - {"unit_name": "classPathRestartStrategy", "start": {"line": 221, "column": 28}, "end": {"line": 223, "column": 4}, "value": 3} + {"unit_name": "classPathRestartStrategy", "start": {"line": 221, "column": 28}, "end": {"line": 223, "column": 4}, "value": 3}, + {"unit_name": "classPathChangeUploader", "start": {"line": 226, "column": 27}, "end": {"line": 230, "column": 4}, "value": 5} ] }, "spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/remote/client/package-info.java": { @@ -64116,9 +64154,10 @@ "spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataProperties.java": { "checksum": "31856ffe6daa935f2e83ea7553eb43e0", "language": "Java", - "loc": 35, - "profile": [35, 0, 0, 0], + "loc": 39, + "profile": [39, 0, 0, 0], "measurements": [ + {"unit_name": "ConfigDataProperties", "start": {"line": 52, "column": 2}, "end": {"line": 55, "column": 3}, "value": 4}, {"unit_name": "getImports", "start": {"line": 61, "column": 27}, "end": {"line": 63, "column": 3}, "value": 3}, {"unit_name": "isActive", "start": {"line": 71, "column": 10}, "end": {"line": 73, "column": 3}, "value": 3}, {"unit_name": "withoutImports", "start": {"line": 79, "column": 23}, "end": {"line": 81, "column": 3}, "value": 3},