[fixes #3781] Replace inefficient Javadoc Regex

This commit is contained in:
Rawi01 committed 2025-01-28 23:29:09 +01:00
1 parent 9f9668f18b
commit 03fb4cb110
5 files changed
+419 -6

No files matched your search

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013-2024 The Project Lombok Authors.
* Copyright (C) 2013-2025 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -906,7 +906,7 @@ public class HandlerUtil {
private Pattern pattern;
JavadocTag(String regexpFragment) {
pattern = Pattern.compile("\\s?^[ \\t]*\\**[ \\t]*" + regexpFragment + "(\\S|\\s)*?(?=(\\s^\\s*\\**\\s*@|\\Z))", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
pattern = Pattern.compile("\\s?^[ \\t]*\\**[ \\t]*" + regexpFragment + ".*?(?=(\\s^\\s*\\**\\s*@|\\Z))", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
}
}
@@ -978,7 +978,7 @@ public class HandlerUtil {
public static String getParamJavadoc(String methodComment, String param) {
if (methodComment == null || methodComment.isEmpty()) return methodComment;
Pattern pattern = Pattern.compile("@param " + param + " (\\S|\\s)+?(?=^ ?@|\\z)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Pattern pattern = Pattern.compile("@param " + param + " .+?(?=^ ?@|\\z)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher matcher = pattern.matcher(methodComment);
if (matcher.find()) {
return matcher.group();
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2024 The Project Lombok Authors.
* Copyright (C) 2009-2025 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -2799,8 +2799,8 @@ public class EclipseHandlerUtil {
return annotations;
}
private static final Pattern JAVADOC_PATTERN = Pattern.compile("^\\s*\\/\\*\\*((?:\\S|\\s)*?)\\*\\/", Pattern.MULTILINE);
private static final Pattern LEADING_ASTERISKS_PATTERN = Pattern.compile("(?m)^\\s*\\* ?");
private static final Pattern JAVADOC_PATTERN = Pattern.compile("^\\s*\\/\\*\\*(.*?)\\*\\/", Pattern.MULTILINE | Pattern.DOTALL);
private static final Pattern LEADING_ASTERISKS_PATTERN = Pattern.compile("^\\s*\\* ?", Pattern.MULTILINE);
public static String getDocComment(EclipseNode eclipseNode) {
if (eclipseNode.getAst().getSource() == null) return null;
@@ -163,3 +163,207 @@ class GetterSetterJavadoc5 {
return this;
}
}
class GetterSetterJavadocLong {
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*/
private String userId;
@java.lang.SuppressWarnings("all")
@lombok.Generated
public GetterSetterJavadocLong() {
}
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public String getUserId() {
return this.userId;
}
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*
* @param userId the unique identifier assigned to a user. This value must be non-null
* and conform to the format defined by the system. Passing a null or
* invalid ID may result in an {@link IllegalArgumentException} or
* similar error.
* @param databaseConnection the connection to the database used for retrieving or
* persisting the user ID. This parameter is required for
* database-related operations and must be properly closed
* after use to prevent resource leaks.
* @param userRole the role associated with the user (e.g., "admin", "user", "guest").
* This parameter may influence access control and permissions
* granted to the user within the system.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public void setUserId(final String userId) {
this.userId = userId;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
@lombok.Generated
public boolean equals(final java.lang.Object o) {
if (o == this) return true;
if (!(o instanceof GetterSetterJavadocLong)) return false;
final GetterSetterJavadocLong other = (GetterSetterJavadocLong) o;
if (!other.canEqual((java.lang.Object) this)) return false;
final java.lang.Object this$userId = this.getUserId();
final java.lang.Object other$userId = other.getUserId();
if (this$userId == null ? other$userId != null : !this$userId.equals(other$userId)) return false;
return true;
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
protected boolean canEqual(final java.lang.Object other) {
return other instanceof GetterSetterJavadocLong;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
@lombok.Generated
public int hashCode() {
final int PRIME = 59;
int result = 1;
final java.lang.Object $userId = this.getUserId();
result = result * PRIME + ($userId == null ? 43 : $userId.hashCode());
return result;
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
@lombok.Generated
public java.lang.String toString() {
return "GetterSetterJavadocLong(userId=" + this.getUserId() + ")";
}
}
@@ -132,3 +132,148 @@ class GetterSetterJavadoc3 {
return this;
}
}
@lombok.Data class GetterSetterJavadocLong {
private String userId;
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*/
public @java.lang.SuppressWarnings("all") @lombok.Generated String getUserId() {
return this.userId;
}
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*
* @param userId the unique identifier assigned to a user. This value must be non-null
* and conform to the format defined by the system. Passing a null or
* invalid ID may result in an {@link IllegalArgumentException} or
* similar error.
* @param databaseConnection the connection to the database used for retrieving or
* persisting the user ID. This parameter is required for
* database-related operations and must be properly closed
* after use to prevent resource leaks.
* @param userRole the role associated with the user (e.g., "admin", "user", "guest").
* This parameter may influence access control and permissions
* granted to the user within the system.
*/
public @java.lang.SuppressWarnings("all") @lombok.Generated void setUserId(final String userId) {
this.userId = userId;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") @lombok.Generated boolean equals(final java.lang.Object o) {
if ((o == this))
return true;
if ((! (o instanceof GetterSetterJavadocLong)))
return false;
final GetterSetterJavadocLong other = (GetterSetterJavadocLong) o;
if ((! other.canEqual((java.lang.Object) this)))
return false;
final java.lang.Object this$userId = this.getUserId();
final java.lang.Object other$userId = other.getUserId();
if (((this$userId == null) ? (other$userId != null) : (! this$userId.equals(other$userId))))
return false;
return true;
}
protected @java.lang.SuppressWarnings("all") @lombok.Generated boolean canEqual(final java.lang.Object other) {
return (other instanceof GetterSetterJavadocLong);
}
public @java.lang.Override @java.lang.SuppressWarnings("all") @lombok.Generated int hashCode() {
final int PRIME = 59;
int result = 1;
final java.lang.Object $userId = this.getUserId();
result = ((result * PRIME) + (($userId == null) ? 43 : $userId.hashCode()));
return result;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") @lombok.Generated java.lang.String toString() {
return (("GetterSetterJavadocLong(userId=" + this.getUserId()) + ")");
}
public @java.lang.SuppressWarnings("all") @lombok.Generated GetterSetterJavadocLong() {
super();
}
}
@@ -62,3 +62,67 @@ class GetterSetterJavadoc5 {
*/
@lombok.Getter @lombok.Setter private int fieldName;
}
@lombok.Data
class GetterSetterJavadocLong {
/**
* This field represents the unique identifier for a user in the system. It is used
* throughout the application to uniquely identify and retrieve user-related data.
* The ID is typically generated by the database and is guaranteed to be unique
* within the context of the system.
*
* <p>The ID is an integral part of various operations, including but not limited to:
* <ul>
* <li>Authenticating users during login processes.</li>
* <li>Associating user-specific preferences and settings.</li>
* <li>Tracking user activity and logs for auditing purposes.</li>
* <li>Facilitating relationships between users and other entities such as orders,
* messages, or roles within the system.</li>
* </ul>
*
* <p>Key characteristics of the {@code userId} field:
* <ul>
* <li><strong>Immutability:</strong> Once assigned, the ID must not be modified to
* ensure data integrity.</li>
* <li><strong>Security:</strong> Access to this field should be controlled to prevent
* unauthorized modifications or data leakage.</li>
* <li><strong>Uniqueness:</strong> The ID must be unique within the system. For
* distributed systems, consider using GUIDs or UUIDs to avoid collisions.</li>
* </ul>
*
* <p>Example usage:
* <pre>
* User user = userService.getUserById(userId);
* if (user != null) {
* System.out.println("User found: " + user.getName());
* } else {
* System.out.println("User not found.");
* }
* </pre>
*
* <p>Developers should ensure that the ID complies with constraints imposed by the
* database schema, such as length and format restrictions. Furthermore, it is
* recommended to validate the ID before persisting or using it in critical operations.
*
* <p>For methods or constructors that accept the {@code userId} as a parameter, the
* following guidelines should be followed:
* <ul>
* <li>Validate the format of the ID to ensure it adheres to system requirements.</li>
* <li>Handle null or empty values gracefully, providing appropriate error messages
* or default behavior where necessary.</li>
* </ul>
*
* @param userId the unique identifier assigned to a user. This value must be non-null
* and conform to the format defined by the system. Passing a null or
* invalid ID may result in an {@link IllegalArgumentException} or
* similar error.
* @param databaseConnection the connection to the database used for retrieving or
* persisting the user ID. This parameter is required for
* database-related operations and must be properly closed
* after use to prevent resource leaks.
* @param userRole the role associated with the user (e.g., "admin", "user", "guest").
* This parameter may influence access control and permissions
* granted to the user within the system.
*/
private String userId;
}