diff --git a/.all-contributorsrc b/.all-contributorsrc
index cb5a734560..2fdad95a30 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -7581,6 +7581,15 @@
"bug",
"code"
]
+ },
+ {
+ "login": "anuragagarwal561994",
+ "name": "Anurag Agarwal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6075379?v=4",
+ "profile": "https://github.com/anuragagarwal561994",
+ "contributions": [
+ "bug"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/docs/pages/pmd/projectdocs/credits.md b/docs/pages/pmd/projectdocs/credits.md
index bf7ccbd23f..92b9bac09c 100644
--- a/docs/pages/pmd/projectdocs/credits.md
+++ b/docs/pages/pmd/projectdocs/credits.md
@@ -92,988 +92,991 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 Anmol Kumar ๐ |
 Anthony Whitford ๐ |
 AnthonyKot ๐ |
+  Anurag Agarwal ๐ |
 Aravind Hegde ๐ |
-  Arda Aslan ๐ |
+  Arda Aslan ๐ |
 Ari Fogel ๐ |
 Arnaud Jeansen ๐ป ๐ |
 Arpit Koolwal ๐ |
 Artem ๐ป ๐ |
 Artem ๐ |
 Artem Sheremet ๐ |
-  Artur ๐ |
+  Artur ๐ |
 Artur Bosch ๐ |
 Artur Dryomov ๐ |
 Artur Ossowski ๐ |
 AshTheMash ๐ |
 Ashish Rana ๐ |
 Atul Kaushal ๐ |
-  August Boland ๐ |
+  August Boland ๐ |
 Aurel Hudec ๐ |
 Austin ๐ |
 Austin Shalit ๐ |
 Austin Tice ๐ |
 Ayoub Kaanich ๐ |
 BBG ๐ป ๐ ๐ |
-  Bailey Tjiong ๐ป |
+  Bailey Tjiong ๐ป |
 Barthรฉlemy L. ๐ |
 Basavaraj K N ๐ |
 Basil Peace ๐ |
 Belle ๐ |
 Ben Lerner ๐ |
 Ben Manes ๐ |
-  Ben McCann ๐ |
+  Ben McCann ๐ |
 Bendegรบz Nagy ๐ |
 Bennet S Yee ๐ |
 Benoit Lacelle ๐ |
 Bernardo Macรชdo ๐ |
 Bernd Farka ๐ |
 Betina Cynthia Mamani ๐ |
-  Bhanu Prakash Pamidi ๐ป ๐ |
+  Bhanu Prakash Pamidi ๐ป ๐ |
 Bhargav Thanki ๐ |
 Binu R J ๐ |
 Bjรถrn Kautler ๐ป ๐ |
 Blightbuster ๐ |
 Bo Zhang ๐ |
 Bob "Wombat" Hogg ๐ |
-  Bobby Wertman ๐ |
+  Bobby Wertman ๐ |
 Bolarinwa Saheed Olayemi ๐ป ๐ |
 Boris Petrov ๐ |
 Brad Kent ๐ |
 Brandon Mikeska ๐ |
 Brian Batronis ๐ |
 Brian Johnson ๐ |
-  Brice Dutheil ๐ป ๐ |
+  Brice Dutheil ๐ป ๐ |
 Bruno Ferreira ๐ |
 Bruno Harbulot ๐ |
 Bruno Ritz ๐ |
 BurovnikovEvgeniy ๐ |
 Cameron Donaldson ๐ |
 Carlos Macasaet ๐ |
-  Carsten Otto ๐ |
+  Carsten Otto ๐ |
 Charlie Housh ๐ |
 Charlie Jonas ๐ |
 Chas Honton ๐ |
 Chen Yang ๐ |
 Chotu ๐ |
 Chris Smith ๐ |
-  Chris Toomey ๐ |
+  Chris Toomey ๐ |
 Christian Hujer ๐ |
 Christian Pontesegger ๐ |
 ChristianWulf ๐ |
 Christofer Dutz ๐ป |
 Christoffer Anselm ๐ |
 Christophe Vidal ๐ |
-  Christopher Dancy ๐ |
+  Christopher Dancy ๐ |
 Clemens Prill ๐ |
 Clint Chester ๐ป ๐ |
 Clรฉment Fournier ๐ป ๐ ๐ ๐ง |
 Codacy Badger ๐ |
 Code-Nil ๐ |
 ColColonCleaner ๐ |
-  Colin Ingarfield ๐ |
+  Colin Ingarfield ๐ |
 Craig Andrews ๐ |
 Craig Muchinsky ๐ |
 Cyril ๐ป ๐ |
 Dale ๐ป |
 Damien Jiang ๐ |
 Dan Berindei ๐ |
-  Dan Rollo ๐ |
+  Dan Rollo ๐ |
 Dan Ziemba ๐ |
 Daniel Gredler ๐ป ๐ |
 Daniel Jipa ๐ |
 Daniel Paul Searles ๐ป |
 Daniel Reigada ๐ |
 Danilo Pianini ๐ |
-  Darko ๐ |
+  Darko ๐ |
 David ๐ |
 David Atkinson ๐ |
 David Burstrรถm ๐ป ๐ |
 David Goatรฉ ๐ |
 David Golpira ๐ |
 David Kovaลรญk ๐ |
-  David M. Karr (fullname at gmail.com) ๐ |
+  David M. Karr (fullname at gmail.com) ๐ |
 David Renz ๐ป ๐ |
 David Renz ๐ |
 Dawid Ciok ๐ ๐ป |
 Debamoy Datta ๐ป |
 Deleted user ๐ |
 Dell Green ๐ |
-  Dem Pilafian ๐ |
+  Dem Pilafian ๐ |
 Den ๐ |
 Denis Borovikov ๐ป ๐ |
 Dennie Reniers ๐ป ๐ |
 Dennis Kieselhorst ๐ |
 Derek P. Moore ๐ |
 Dichotomia ๐ |
-  Dionisio Cortรฉs Fernรกndez ๐ป ๐ |
+  Dionisio Cortรฉs Fernรกndez ๐ป ๐ |
 Dmitri Bourlatchkov ๐ |
 Dmitriy Kuzmin ๐ |
 Dmytro Dashenkov ๐ |
 Dr. Christian Kohlschรผtter ๐ |
 Drew Hall ๐ |
 Dumitru Postoronca ๐ |
-  Dylan Adams ๐ |
+  Dylan Adams ๐ |
 Eden Hao ๐ |
 Edward Klimoshenko ๐ ๐ป |
 Egor Bredikhin ๐ |
 Elan P. Kugelmass ๐ |
 Elder S. ๐ |
 Eldrick Wega ๐ |
-  Emile ๐ |
+  Emile ๐ |
 Eric ๐ |
 Eric Kintzer ๐ |
 Eric Perret ๐ |
 Eric Squires ๐ |
 Erich L Foster ๐ |
 Erik Bleske ๐ |
-  Erik C. Thauvin ๐ |
+  Erik C. Thauvin ๐ |
 Ernst Reissner ๐ |
 Ewan Tempero ๐ |
 F.W. Dekker ๐ |
 FSchliephacke ๐ |
 Facundo ๐ |
 Federico Giust ๐ |
-  Fedor Sherstobitov ๐ |
+  Fedor Sherstobitov ๐ |
 Felix Lampe ๐ |
 Filip Golonka ๐ |
 Filipe Esperandio ๐ป ๐ |
 Filippo Nova ๐ |
 Francesco la Torre ๐ |
 Francisco Duarte ๐ |
-  Frieder Bluemle ๐ |
+  Frieder Bluemle ๐ |
 Frits Jalvingh ๐ป ๐ |
 G. Bazior ๐ |
 Gabe Henkes ๐ |
 Gary Gregory ๐ |
 Genoud Magloire ๐ |
 Geoffrey555 ๐ |
-  Georg Romstorfer ๐ |
+  Georg Romstorfer ๐ |
 Gili Tzabari ๐ |
 Gio ๐ |
 Gol ๐ |
 Gold856 ๐ ๐ป |
 Gonzalo Exequiel Ibars Ingman ๐ป ๐ |
 GooDer ๐ |
-  Gregor Riegler ๐ |
+  Gregor Riegler ๐ |
 Grzegorz Olszewski ๐ |
 Gunther Schrijvers ๐ป ๐ |
 Gustavo Krieger ๐ |
 Guy Elsmore-Paddock ๐ |
 Gรถrkem Mรผlayim ๐ |
 Hanzel Godinez ๐ |
-  Haoliang Chen ๐ |
+  Haoliang Chen ๐ |
 Harsh Kukreja ๐ |
 Hassan ALAMI ๐ |
 Heber ๐ |
 Henning Schmiedehausen ๐ป ๐ |
 Henning von Bargen ๐ป |
 Hervรฉ Boutemy ๐ |
-  Himanshu Pandey ๐ |
+  Himanshu Pandey ๐ |
 Hokwang Lee ๐ |
 Hooperbloob ๐ป |
 Hung PHAN ๐ |
 IDoCodingStuffs ๐ป ๐ |
 Iccen Gan ๐ |
 Ignacio Mariano Tirabasso ๐ |
-  Igor Melnichenko ๐ |
+  Igor Melnichenko ๐ |
 Igor Moreno ๐ |
 Intelesis-MS ๐ |
 Iroha_ ๐ |
 Ishan Srivastava ๐ |
 Ivan Vakhrushev ๐ |
 Ivano Guerini ๐ |
-  Ivar Andreas Bonsaksen ๐ |
+  Ivar Andreas Bonsaksen ๐ |
 Ivo ล mรญd ๐ |
 JJengility ๐ |
 Jake Hemmerle ๐ |
 James Harrison ๐ ๐ป |
 Jan ๐ |
 Jan Aertgeerts ๐ป ๐ |
-  Jan Brรผmmer ๐ |
+  Jan Brรผmmer ๐ |
 Jan Tลรญska ๐ |
 Jan-Lukas Else ๐ |
 Jason Qiu ๐ป ๐ |
 Jason Williams ๐ |
 Jean-Paul Mayer ๐ |
 Jean-Simon Larochelle ๐ |
-  Jeff Bartolotta ๐ป ๐ |
+  Jeff Bartolotta ๐ป ๐ |
 Jeff Hube ๐ป ๐ |
 Jeff Jensen ๐ |
 Jeff May ๐ |
 Jens Gerdes ๐ |
 Jeroen Borgers ๐ ๐ป ๐ข |
 Jeroen van Wilgenburg ๐ |
-  Jerome Russ ๐ |
+  Jerome Russ ๐ |
 JerritEic ๐ป ๐ ๐ |
 Jiri Pejchal ๐ |
 Jithin Sunny ๐ |
 Jiลรญ ล korpil ๐ |
 Joao Machado ๐ |
 Jochen Krauss ๐ |
-  Johan Hammar ๐ |
+  Johan Hammar ๐ |
 John Karp ๐ |
 John Zhang ๐ |
 John-Teng ๐ป ๐ |
 Jon Moroney ๐ป ๐ |
 Jonas Geiregat ๐ |
 Jonas Keรler ๐ |
-  Jonathan Wiesel ๐ป ๐ |
+  Jonathan Wiesel ๐ป ๐ |
 Jordan ๐ |
 Jordi Llach ๐ |
 Jorge Solรณrzano ๐ |
 JorneVL ๐ |
 Jose Palafox ๐ |
 Jose Stovall ๐ |
-  Joseph ๐ป |
+  Joseph ๐ป |
 Joseph Heenan ๐ |
 Josh Feingold ๐ป ๐ |
 Josh Holthaus ๐ |
 Joshua S Arquilevich ๐ |
 Joรฃo Dinis Ferreira ๐ |
 Joรฃo Ferreira ๐ป ๐ |
-  Joรฃo Pedro Schmitt ๐ |
+  Joรฃo Pedro Schmitt ๐ |
 Juan Martรญn Sotuyo Dodero ๐ป ๐ ๐ ๐ง |
 Juan Pablo Civile ๐ |
 Julian Voronetsky ๐ |
 Julien ๐ |
 Julius ๐ |
 JustPRV ๐ |
-  Jรถrn Huxhorn ๐ |
+  Jรถrn Huxhorn ๐ |
 KThompso ๐ |
 Kai Amundsen ๐ |
 Karel Vervaeke ๐ |
 Karl-Andero Mere ๐ |
 Karl-Philipp Richter ๐ |
 Karsten Silz ๐ |
-  Kazuma Watanabe ๐ |
+  Kazuma Watanabe ๐ |
 Kev ๐ |
 Keve Mรผller ๐ |
 Kevin Guerra ๐ป |
 Kevin Jones ๐ ๐ป |
 Kevin Wayne ๐ |
 Kieran Black ๐ |
-  Kirill Zubov ๐ |
+  Kirill Zubov ๐ |
 Kirk Clemens ๐ป ๐ |
 Klaus Hartl ๐ |
 Koen Van Looveren ๐ |
 Kris Scheibe ๐ป ๐ |
 Krystian Dabrowski ๐ ๐ป |
 Kunal Thanki ๐ |
-  LaLucid ๐ป |
+  LaLucid ๐ป |
 Larry Diamond ๐ป ๐ |
 Lars Knickrehm ๐ |
 Laurent Bovet ๐ ๐ป |
 Leo Gutierrez ๐ |
 LiGaOg ๐ป |
 Liam Sharp ๐ |
-  Lintsi ๐ |
+  Lintsi ๐ |
 Linus Fernandes ๐ |
 Lixon Lookose ๐ |
 Logesh ๐ |
 Lorenzo Gabriele ๐ |
 Loรฏc Ledoyen ๐ |
 Lucas ๐ |
-  Lucas Silva ๐ |
+  Lucas Silva ๐ |
 Lucas Soncini ๐ป ๐ |
 Luis Alcantar ๐ป |
 Lukasz Slonina ๐ |
 Lukebray ๐ |
 Lynn ๐ป ๐ |
 Lyor Goldstein ๐ |
-  MCMicS ๐ |
+  MCMicS ๐ |
 Macarse ๐ |
 Machine account for PMD ๐ป |
 Maciek Siemczyk ๐ |
 Maikel Steneker ๐ป ๐ |
 Maksim Moiseikin ๐ |
 Manfred Koch ๐ |
-  Manuel Moya Ferrer ๐ป ๐ |
+  Manuel Moya Ferrer ๐ป ๐ |
 Manuel Ryan ๐ |
 Marat Vyshegorodtsev ๐ |
 Marcel Hรคrle ๐ |
 Marcello Fialho ๐ |
 Marcin Dฤ
browski ๐ป |
 Marcin Rataj ๐ |
-  Marcono1234 ๐ |
+  Marcono1234 ๐ |
 Mark Adamcin ๐ |
 Mark Hall ๐ป ๐ |
 Mark Kolich ๐ |
 Mark Pritchard ๐ |
 Markus Rathgeb ๐ |
 Marquis Wang ๐ |
-  MartGit ๐ |
+  MartGit ๐ |
 Martin Feldsztejn ๐ |
 Martin Lehmann ๐ |
 Martin Spamer ๐ |
 Martin Tarjรกnyi ๐ |
 MatFl ๐ |
 Mateusz Stefanski ๐ |
-  Mathieu Gouin ๐ |
+  Mathieu Gouin ๐ |
 MatiasComercio ๐ป ๐ |
 Matt Benson ๐ |
 Matt De Poorter ๐ |
 Matt Hargett ๐ป ๐ต |
 Matt Harrah ๐ |
 Matt Nelson ๐ |
-  Matthew Amos ๐ |
+  Matthew Amos ๐ |
 Matthew Duggan ๐ |
 Matthew Hall ๐ |
 Matรญas Fraga ๐ป ๐ |
 Maxime Robert ๐ป ๐ |
 MetaBF ๐ |
 Metin Dagcilar ๐ |
-  Michael ๐ |
+  Michael ๐ |
 Michael Bell ๐ |
 Michael Bernstein ๐ |
 Michael Clay ๐ |
 Michael Dombrowski ๐ |
 Michael Hausegger ๐ |
 Michael Hoefer ๐ |
-  Michael Kolesnikov ๐ |
+  Michael Kolesnikov ๐ |
 Michael Mรถbius ๐ |
 Michael N. Lipp ๐ |
 Michael Pellegrini ๐ |
 Michal Kordas ๐ |
 Michaล Borek ๐ |
 Michaล Kuliลski ๐ |
-  Miguel Nรบรฑez Dรญaz-Montes ๐ |
+  Miguel Nรบรฑez Dรญaz-Montes ๐ |
 Mihai Ionut ๐ |
 Mikhail Kuchma ๐ |
 Mirek Hankus ๐ |
 Mitch Spano ๐ |
 Mladjan Gadzic ๐ |
 MrAngry52 ๐ |
-  Muminur Choudhury ๐ |
+  Muminur Choudhury ๐ |
 Mykhailo Palahuta ๐ป ๐ |
 Nagendra Kumar Singh ๐ |
 Nahuel Barrios ๐ |
 Nakul Sharma ๐ |
 Nathan Braun ๐ |
 Nathan Reynolds ๐ |
-  Nathan Reynolds ๐ |
+  Nathan Reynolds ๐ |
 Nathanaรซl ๐ |
 Naveen ๐ป |
 Nazdravi ๐ |
 Neha-Dhonde ๐ |
 Nicholas Doyle ๐ |
 Nick Butcher ๐ |
-  Nico Gallinal ๐ |
+  Nico Gallinal ๐ |
 Nicola Dal Maso ๐ |
 Nicolas Filotto ๐ป |
 Nicolas Vervelle ๐ |
 Nicolas Vuillamy ๐ |
 Nikita Chursin ๐ |
 Niklas Baudy ๐ |
-  Nikolas Havrikov ๐ |
+  Nikolas Havrikov ๐ |
 Nilesh Virkar ๐ |
 Nimit Patel ๐ |
 Niranjan Harpale ๐ |
 Nirvik Patel ๐ป |
 Noah Sussman ๐ |
 Noah0120 ๐ |
-  Noam Tamim ๐ |
+  Noam Tamim ๐ |
 Noel Grandin ๐ |
 Olaf Haalstra ๐ |
 Oleg Andreych ๐ป ๐ |
 Oleg Pavlenko ๐ |
 Oleksii Dykov ๐ป ๐ |
 Oliver Eikemeier ๐ |
-  Oliver Siegmar ๐ต |
+  Oliver Siegmar ๐ต |
 Olivier Parent ๐ป ๐ |
 Ollie Abbey ๐ป ๐ |
 OverDrone ๐ |
 Ozan Gulle ๐ป ๐ |
 PUNEET JAIN ๐ |
 Parbati Bose ๐ |
-  Paul Berg ๐ |
+  Paul Berg ๐ |
 Paul Guyot ๐ป |
 Pavel Bludov ๐ |
 Pavel Miฤka ๐ |
 Pedro Nuno Santos ๐ |
 Pedro Rijo ๐ |
 Pelisse Romain ๐ป ๐ ๐ |
-  Per Abich ๐ป |
+  Per Abich ๐ป |
 Pete Davids ๐ |
 Peter Bruin ๐ |
 Peter Chittum ๐ป ๐ |
 Peter Cudmore ๐ |
 Peter Kasson ๐ |
 Peter Kofler ๐ |
-  Peter Paul Bakker ๐ป |
+  Peter Paul Bakker ๐ป |
 Peter Rader ๐ |
 Pham Hai Trung ๐ |
 Philip Graf ๐ป ๐ |
 Philip Hachey ๐ |
 Philippe Ozil ๐ |
 Phinehas Artemix ๐ |
-  Phokham Nonava ๐ |
+  Phokham Nonava ๐ |
 Pim van der Loos ๐ป โ ๏ธ |
 Piotr Szymaลski ๐ |
 Piotrek ลปygieลo ๐ป ๐ ๐ |
 Pranay Jaiswal ๐ |
 Prasad Kamath ๐ |
 Prasanna ๐ |
-  Presh-AR ๐ |
+  Presh-AR ๐ |
 Puneet1726 ๐ |
 Rafael Cortรชs ๐ |
 RaheemShaik999 ๐ |
 RajeshR ๐ป ๐ |
 Ramachandra Mohan ๐ |
 Ramel0921 ๐ |
-  Raquel Pau ๐ |
+  Raquel Pau ๐ |
 Ravikiran Janardhana ๐ |
 Reda Benhemmouche ๐ |
 Reinhard Schiedermeier ๐ |
 Renato Oliveira ๐ป ๐ |
 Rich DiCroce ๐ |
 Richard Corfield ๐ป |
-  Richard Corfield ๐ ๐ป |
+  Richard Corfield ๐ ๐ป |
 Riot R1cket ๐ |
 Rishabh Jain ๐ |
 RishabhDeep Singh ๐ |
 Rob Baillie ๐ |
 Robbie Martinus ๐ป ๐ |
 Robert Henry ๐ |
-  Robert Mihaly ๐ |
+  Robert Mihaly ๐ |
 Robert Painsi ๐ |
 Robert Russell ๐ |
 Robert Sรถsemann ๐ป ๐ ๐ข ๐ |
 Robert Whitebit ๐ |
 Robin Richtsfeld ๐ |
 Robin Stocker ๐ป ๐ |
-  Robin Wils ๐ |
+  Robin Wils ๐ |
 RochusOest ๐ |
 Rodolfo Noviski ๐ |
 Rodrigo Casara ๐ |
 Rodrigo Fernandes ๐ |
 Roman Salvador ๐ป ๐ |
 Ronald Blaschke ๐ |
-  Rรณbert Papp ๐ |
+  Rรณbert Papp ๐ |
 Saikat Sengupta ๐ |
 Saksham Handu ๐ |
 Saladoc ๐ |
 Salesforce Bob Lightning ๐ |
 Sam Carlberg ๐ |
 Sashko ๐ป |
-  Satoshi Kubo ๐ |
+  Satoshi Kubo ๐ |
 Scott Kennedy ๐ |
 Scott Wells ๐ ๐ป |
 Scrates1 ๐ ๐ป |
 Scrsloota ๐ป |
 Sebastian Bรถgl ๐ |
 Sebastian Davids ๐ |
-  Sebastian Schuberth ๐ |
+  Sebastian Schuberth ๐ |
 Sebastian Schwarz ๐ |
 Seren ๐ ๐ป |
 Sergey Gorbaty ๐ |
 Sergey Kozlov ๐ |
 Sergey Yanzin ๐ป ๐ |
 Seth Wilcox ๐ป |
-  Shai Bennathan ๐ ๐ป |
+  Shai Bennathan ๐ ๐ป |
 Shubham ๐ป ๐ |
 Simon Abykov ๐ป ๐ |
 Simon Xiao ๐ |
 Srinivasan Venkatachalam ๐ |
 Stanislav Gromov ๐ |
 Stanislav Myachenkov ๐ป |
-  Stefan Birkner ๐ |
+  Stefan Birkner ๐ |
 Stefan Bohn ๐ |
 Stefan Endrullis ๐ |
 Stefan Klรถss-Schuster ๐ |
 Stefan Wolf ๐ |
 Stephan H. Wissel ๐ |
 Stephen ๐ |
-  Stephen Friedrich ๐ |
+  Stephen Friedrich ๐ |
 Steve Babula ๐ป |
 Steven Stearns ๐ ๐ป |
 Stexxe ๐ |
 Stian Lรฅgstad ๐ |
 StuartClayton5 ๐ |
 Supun Arunoda ๐ |
-  Suren Abrahamyan ๐ |
+  Suren Abrahamyan ๐ |
 Suvashri ๐ |
 SwatiBGupta1110 ๐ |
 SyedThoufich ๐ |
 Szymon Sasin ๐ |
 T-chuangxin ๐ |
 TERAI Atsuhiro ๐ |
-  TIOBE Software ๐ป ๐ |
+  TIOBE Software ๐ป ๐ |
 Tarush Singh ๐ป |
 Taylor Smock ๐ |
 Techeira Damiรกn ๐ป ๐ |
 Ted Husted ๐ |
 TehBakker ๐ |
 The Gitter Badger ๐ |
-  Theodoor ๐ |
+  Theodoor ๐ |
 Thiago Henrique Hรผpner ๐ |
 Thibault Meyer ๐ |
 Thomas Gรผttler ๐ |
 Thomas Jones-Low ๐ |
 Thomas Smith ๐ป ๐ |
 ThrawnCA ๐ |
-  Thu Vo ๐ |
+  Thu Vo ๐ |
 Thunderforge ๐ป ๐ |
 Tim van der Lippe ๐ |
 Tobias Weimer ๐ป ๐ |
 Tom Copeland ๐ ๐ป ๐ |
 Tom Daly ๐ |
 Tomer Figenblat ๐ |
-  Tomi De Lucca ๐ป ๐ |
+  Tomi De Lucca ๐ป ๐ |
 Torsten Kleiber ๐ |
 TrackerSB ๐ |
 Tyson Stewart ๐ |
 Ullrich Hafner ๐ |
 Utku Cuhadaroglu ๐ป ๐ |
 Valentin Brandl ๐ |
-  Valeria ๐ |
+  Valeria ๐ |
 Valery Yatsynovich ๐ |
 Vasily Anisimov ๐ |
 Vibhor Goyal ๐ |
 Vickenty Fesunov ๐ |
 Victor Noรซl ๐ |
 Vincent Galloy ๐ป |
-  Vincent HUYNH ๐ |
+  Vincent HUYNH ๐ |
 Vincent Maurin ๐ |
 Vincent Privat ๐ |
 Vishhwas ๐ |
 Vishv_Android ๐ |
 Vitaly ๐ |
 Vitaly Polonetsky ๐ |
-  Vojtech Polivka ๐ |
+  Vojtech Polivka ๐ |
 Vsevolod Zholobov ๐ |
 Vyom Yadav ๐ป |
 Wang Shidong ๐ |
 Waqas Ahmed ๐ |
 Wayne J. Earl ๐ |
 Wchenghui ๐ |
-  Wener ๐ป |
+  Wener ๐ป |
 Will Winder ๐ |
 William Brockhus ๐ป ๐ |
 Wilson Kurniawan ๐ |
 Wim Deblauwe ๐ |
 Woongsik Choi ๐ |
 XenoAmess ๐ป ๐ |
-  Yang ๐ป |
+  Yang ๐ป |
 YaroslavTER ๐ |
 Yasar Shaikh ๐ป |
 Young Chan ๐ป ๐ |
 YuJin Kim ๐ |
 Yuri Dolzhenko ๐ |
 Yurii Dubinka ๐ |
-  Zoltan Farkas ๐ |
+  Zoltan Farkas ๐ |
 Zustin ๐ |
 aaronhurst-google ๐ ๐ป |
 alexmodis ๐ |
 andreoss ๐ |
 andrey81inmd ๐ป ๐ |
 anicoara ๐ |
-  arunprasathav ๐ |
+  arunprasathav ๐ |
 asiercamara ๐ |
 astillich-igniti ๐ป |
 avesolovksyy ๐ |
 avishvat ๐ |
 avivmu ๐ |
 axelbarfod1 ๐ |
-  b-3-n ๐ |
+  b-3-n ๐ |
 balbhadra9 ๐ |
 base23de ๐ |
 bergander ๐ ๐ป |
 berkam ๐ป ๐ |
 breizh31 ๐ |
 caesarkim ๐ |
-  carolyujing ๐ |
+  carolyujing ๐ |
 cbfiddle ๐ |
 cesares-basilico ๐ |
 chrite ๐ |
 ciufudean ๐ |
 cobratbq ๐ |
 coladict ๐ |
-  cosmoJFH ๐ |
+  cosmoJFH ๐ |
 cristalp ๐ |
 crunsk ๐ |
 cwholmes ๐ |
 cyberjj999 ๐ |
 cyw3 ๐ ๐ |
 d1ss0nanz ๐ |
-  dague1 ๐ |
+  dague1 ๐ |
 dalizi007 ๐ป |
 danbrycefairsailcom ๐ |
 dariansanity ๐ |
 darrenmiliband ๐ |
 davidburstrom ๐ |
 dbirkman-paloalto ๐ |
-  deepak-patra ๐ |
+  deepak-patra ๐ |
![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4?s=100) dependabot[bot] ๐ป ๐ |
 dinesh150 ๐ |
 diziaq ๐ |
 dreaminpast123 ๐ |
 duanyanan ๐ |
 dutt-sanjay ๐ |
-  dylanleung ๐ |
+  dylanleung ๐ |
 dzeigler ๐ |
 eant60 ๐ |
 ekkirala ๐ |
 emersonmoura ๐ |
 emouty ๐ป |
 eugenepugach ๐ |
-  fairy ๐ |
+  fairy ๐ |
 filiprafalowicz ๐ป |
 flxbl-io ๐ต |
 foxmason ๐ |
 frankegabor ๐ |
 frankl ๐ |
 freafrea ๐ |
-  fsapatin ๐ |
+  fsapatin ๐ |
 gracia19 ๐ |
 guo fei ๐ |
 gurmsc5 ๐ |
 gwilymatgearset ๐ป ๐ |
 haigsn ๐ |
 hemanshu070 ๐ |
-  henrik242 ๐ |
+  henrik242 ๐ |
 hongpuwu ๐ |
 hvbtup ๐ป ๐ |
 igniti GmbH ๐ |
 ilovezfs ๐ |
 itaigilo ๐ |
 jakivey32 ๐ |
-  jbennett2091 ๐ |
+  jbennett2091 ๐ |
 jcamerin ๐ |
 jkeener1 ๐ |
 jmetertea ๐ |
 johnra2 ๐ป |
 josemanuelrolon ๐ป ๐ |
 kabroxiko ๐ป ๐ |
-  karwer ๐ |
+  karwer ๐ |
 kaulonline ๐ |
 kdaemonv ๐ |
 kdebski85 ๐ ๐ป |
 kenji21 ๐ป ๐ |
 kfranic ๐ |
 khalidkh ๐ |
-  koalalam ๐ |
+  koalalam ๐ |
 krzyk ๐ |
 lasselindqvist ๐ |
 lgemeinhardt ๐ |
 lihuaib ๐ |
 liqingjun123 ๐ |
 lonelyma1021 ๐ |
-  lpeddy ๐ |
+  lpeddy ๐ |
 lujiefsi ๐ป |
 lukelukes ๐ป |
 lyriccoder ๐ |
 marcelmore ๐ |
 matchbox ๐ |
 matthiaskraaz ๐ |
-  meandonlyme ๐ |
+  meandonlyme ๐ |
 mikesive ๐ |
 milossesic ๐ |
 mluckam ๐ป ๐ |
 mohan-chinnappan-n ๐ป |
 mriddell95 ๐ |
 mrlzh ๐ |
-  msloan ๐ |
+  msloan ๐ |
 mucharlaravalika ๐ |
 mvenneman ๐ |
 nareshl119 ๐ |
 nicolas-harraudeau-sonarsource ๐ |
 noerremark ๐ |
 novsirion ๐ |
-  nwcm ๐ ๐ ๐ป |
+  nwcm ๐ ๐ ๐ป |
 oggboy ๐ |
 oinume ๐ |
 orimarko ๐ป ๐ |
 pacvz ๐ป |
 pallavi agarwal ๐ |
 parksungrin ๐ |
-  patpatpat123 ๐ |
+  patpatpat123 ๐ |
 patriksevallius ๐ |
 pbrajesh1 ๐ |
 phoenix384 ๐ |
 piotrszymanski-sc ๐ป |
 plan3d ๐ |
 poojasix ๐ |
-  prabhushrikant ๐ |
+  prabhushrikant ๐ |
 pujitha8783 ๐ |
 r-r-a-j ๐ |
 raghujayjunk ๐ |
 rajeshveera ๐ |
 rajeswarreddy88 ๐ |
 recdevs ๐ |
-  reudismam ๐ป ๐ |
+  reudismam ๐ป ๐ |
 rijkt ๐ |
 rillig-tk ๐ |
 rmohan20 ๐ป ๐ |
 rnveach ๐ |
 rxmicro ๐ |
 ryan-gustafson ๐ป ๐ |
-  sabi0 ๐ |
+  sabi0 ๐ |
 scais ๐ |
 screamingfrog ๐ต |
 sebbASF ๐ |
 sergeygorbaty ๐ป |
 shilko2013 ๐ |
 shiomiyan ๐ |
-  simeonKondr ๐ |
+  simeonKondr ๐ |
 snajberk ๐ |
 sniperrifle2004 ๐ |
 snuyanzin ๐ ๐ป |
 soyodream ๐ |
 sratz ๐ |
 stonio ๐ |
-  sturton ๐ป ๐ |
+  sturton ๐ป ๐ |
 sudharmohan ๐ |
 suruchidawar ๐ |
 svenfinitiv ๐ |
 tashiscool ๐ |
 test-git-hook ๐ |
 testation21 ๐ป ๐ |
-  thanosa ๐ |
+  thanosa ๐ |
 tiandiyixian ๐ |
 tobwoerk ๐ |
 tprouvot ๐ ๐ป |
 trentchilders ๐ |
 triandicAnt ๐ |
 trishul14 ๐ |
-  tsui ๐ |
+  tsui ๐ |
 wangzitom12306 ๐ |
 winhkey ๐ |
 witherspore ๐ |
 wjljack ๐ |
 wuchiuwong ๐ |
 xingsong ๐ |
-  xioayuge ๐ |
+  xioayuge ๐ |
 xnYi9wRezm ๐ป ๐ |
 xuanuy ๐ |
 xyf0921 ๐ |
 yalechen-cyw3 ๐ |
 yasuharu-sato ๐ |
 zenglian ๐ |
-  zgrzyt93 ๐ป ๐ |
+  zgrzyt93 ๐ป ๐ |
 zh3ng ๐ |
 zt_soft ๐ |
 ztt79 ๐ |
 zzzzfeng ๐ |
 รrpรกd Magosรกnyi ๐ |
 ไปป่ดตๆฐ ๐ |
+
+
 ่
ๅปถๅฎ ๐ป |
diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index 71b7e5b641..aca33a5526 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -17,6 +17,8 @@ This is a {{ site.pmd.release_type }} release.
### ๐ Fixed Issues
* apex
* [#5053](https://github.com/pmd/pmd/issues/5053): \[apex] CPD fails to parse string literals with escaped characters
+* java-bestpractices
+ * [#5047](https://github.com/pmd/pmd/issues/5047): \[java] UnusedPrivateMethod FP for Generics & Overloads
* plsql
* [#1934](https://github.com/pmd/pmd/issues/1934): \[plsql] ParseException with MERGE statement in anonymous block
* [#2779](https://github.com/pmd/pmd/issues/2779): \[plsql] Error while parsing statement with (Oracle) DML Error Logging
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java
index 66f237ae61..051ea91c02 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java
@@ -218,7 +218,7 @@ public final class TypeOps {
@Override
public Boolean visitInferenceVar(InferenceVar t, JTypeMirror s) {
if (pure) {
- return t == s;
+ return t == s || t.getBounds(BoundKind.EQ).contains(s);
}
if (s instanceof JPrimitiveType) {
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/internal/infer/InferenceVar.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/internal/infer/InferenceVar.java
index cf5a71ea5c..abfbc904c1 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/internal/infer/InferenceVar.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/internal/infer/InferenceVar.java
@@ -79,7 +79,7 @@ public final class InferenceVar implements SubstVar {
* Returns the bounds of a certain kind that apply to
* this variable.
*/
- Set getBounds(BoundKind kind) {
+ public Set getBounds(BoundKind kind) {
return boundSet.bounds.getOrDefault(kind, Collections.emptySet());
}
diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/internal/infer/TypeInferenceTest.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/internal/infer/TypeInferenceTest.kt
index d877ef1b2c..0808d950cf 100644
--- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/internal/infer/TypeInferenceTest.kt
+++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/internal/infer/TypeInferenceTest.kt
@@ -407,4 +407,51 @@ public class BadIntersection {
acu.firstMethodCall() shouldHaveType java.util.List::class[t_Animal]
}
}
+ parserTest("#5047 inference failed with enum") {
+ val (acu, spy) = parser.parseWithTypeInferenceSpy(
+ """
+ interface Function { R apply(T t); }
+
+ public class Main {
+ public enum OptOutStatus {
+ UNKNOWN_STATUS(3L);
+
+ private final long id;
+
+ OptOutStatus(long id) {
+ this.id = id;
+ }
+
+ public long id() {
+ return this.id;
+ }
+ }
+
+ static class Utils {
+ private Long getValue(OptOutStatus val) {
+ return getValue(val, OptOutStatus::id);
+ }
+
+ private > Long getValue(T enumValue, Function fn) {
+ if (enumValue == null) {
+ return null;
+ }
+ return fn.apply(enumValue);
+ }
+ }
+ }
+
+ """.trimIndent()
+ )
+
+ val (_, _, optOutEnum) = acu.declaredTypeSignatures()
+ val (_, getValue2) = acu.methodDeclarations().filter { it.name == "getValue" }.toList()
+
+ spy.shouldBeOk {
+ val info = acu.firstMethodCall().overloadSelectionInfo
+ info::isFailed shouldBe false
+ info.methodType shouldBeSomeInstantiationOf getValue2.genericSignature
+ info.methodType.formalParameters[0] shouldBe optOutEnum
+ }
+ }
})
diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml
index 41367ff29f..5f2871d3dc 100644
--- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml
+++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml
@@ -2002,4 +2002,76 @@ class FooTest{
}
]]>
+
+ UnusedPrivateMethod for Generics and Overloads #5047
+ 0
+ > Long getValue(T enumValue, Function fn) {
+ if (enumValue == null) {
+ return null;
+ }
+ return fn.apply(enumValue);
+ }
+ }
+ }
+ ]]>
+