diff --git a/.all-contributorsrc b/.all-contributorsrc index 9ce3555a852..40eff73d4c5 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -7242,8 +7242,8 @@ "contributions": [ "bug" ] - }, - { + }, + { "login": "eant60", "name": "eant60", "avatar_url": "https://avatars.githubusercontent.com/u/41472980?v=4", @@ -7351,6 +7351,16 @@ "contributions": [ "code" ] + }, + { + "login": "lbovet", + "name": "Laurent Bovet", + "avatar_url": "https://avatars.githubusercontent.com/u/692124?v=4", + "profile": "https://github.com/lbovet", + "contributions": [ + "bug", + "code" + ] } ], "contributorsPerLine": 7, diff --git a/docs/pages/pmd/projectdocs/credits.md b/docs/pages/pmd/projectdocs/credits.md index 9b9fa8c74ce..1371698b85d 100644 --- a/docs/pages/pmd/projectdocs/credits.md +++ b/docs/pages/pmd/projectdocs/credits.md @@ -430,616 +430,617 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Larry Diamond

๐Ÿ’ป ๐Ÿ›
Lars Knickrehm

๐Ÿ› +
Laurent Bovet

๐Ÿ› ๐Ÿ’ป
Leo Gutierrez

๐Ÿ›
LiGaOg

๐Ÿ’ป
Liam Sharp

๐Ÿ›
Lintsi

๐Ÿ› -
Linus Fernandes

๐Ÿ› +
Linus Fernandes

๐Ÿ›
Lixon Lookose

๐Ÿ›
Logesh

๐Ÿ›
Lorenzo Gabriele

๐Ÿ›
Loรฏc Ledoyen

๐Ÿ›
Lucas Silva

๐Ÿ›
Lucas Soncini

๐Ÿ’ป ๐Ÿ› -
Luis Alcantar

๐Ÿ’ป +
Luis Alcantar

๐Ÿ’ป
Lukasz Slonina

๐Ÿ›
Lukebray

๐Ÿ›
Lynn

๐Ÿ’ป ๐Ÿ›
Lyor Goldstein

๐Ÿ›
MCMicS

๐Ÿ›
Macarse

๐Ÿ› -
Machine account for PMD

๐Ÿ’ป +
Machine account for PMD

๐Ÿ’ป
Maciek Siemczyk

๐Ÿ›
Maikel Steneker

๐Ÿ’ป ๐Ÿ›
Maksim Moiseikin

๐Ÿ›
Manfred Koch

๐Ÿ›
Manuel Moya Ferrer

๐Ÿ’ป ๐Ÿ›
Manuel Ryan

๐Ÿ› -
Marat Vyshegorodtsev

๐Ÿ› +
Marat Vyshegorodtsev

๐Ÿ›
Marcel Hรคrle

๐Ÿ›
Marcello Fialho

๐Ÿ›
Marcin Dฤ…browski

๐Ÿ’ป
Marcin Rataj

๐Ÿ›
Marcono1234

๐Ÿ›
Mark Adamcin

๐Ÿ› -
Mark Hall

๐Ÿ’ป ๐Ÿ› +
Mark Hall

๐Ÿ’ป ๐Ÿ›
Mark Kolich

๐Ÿ›
Mark Pritchard

๐Ÿ›
Markus Rathgeb

๐Ÿ›
Marquis Wang

๐Ÿ›
MartGit

๐Ÿ›
Martin Feldsztejn

๐Ÿ› -
Martin Lehmann

๐Ÿ› +
Martin Lehmann

๐Ÿ›
Martin Spamer

๐Ÿ›
Martin Tarjรกnyi

๐Ÿ›
MatFl

๐Ÿ›
Mateusz Stefanski

๐Ÿ›
Mathieu Gouin

๐Ÿ›
MatiasComercio

๐Ÿ’ป ๐Ÿ› -
Matt Benson

๐Ÿ› +
Matt Benson

๐Ÿ›
Matt De Poorter

๐Ÿ›
Matt Hargett

๐Ÿ’ป ๐Ÿ’ต
Matt Harrah

๐Ÿ›
Matt Nelson

๐Ÿ›
Matthew Amos

๐Ÿ›
Matthew Duggan

๐Ÿ› -
Matthew Hall

๐Ÿ› +
Matthew Hall

๐Ÿ›
Matรญas Fraga

๐Ÿ’ป ๐Ÿ›
Maxime Robert

๐Ÿ’ป ๐Ÿ›
MetaBF

๐Ÿ›
Michael

๐Ÿ›
Michael Bell

๐Ÿ›
Michael Bernstein

๐Ÿ› -
Michael Clay

๐Ÿ› +
Michael Clay

๐Ÿ›
Michael Dombrowski

๐Ÿ›
Michael Hausegger

๐Ÿ›
Michael Hoefer

๐Ÿ›
Michael Mรถbius

๐Ÿ›
Michael N. Lipp

๐Ÿ›
Michael Pellegrini

๐Ÿ› -
Michal Kordas

๐Ÿ› +
Michal Kordas

๐Ÿ›
Michaล‚ Borek

๐Ÿ›
Michaล‚ Kuliล„ski

๐Ÿ›
Miguel Nรบรฑez Dรญaz-Montes

๐Ÿ›
Mihai Ionut

๐Ÿ›
Mirek Hankus

๐Ÿ›
Mladjan Gadzic

๐Ÿ› -
MrAngry52

๐Ÿ› +
MrAngry52

๐Ÿ›
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

๐Ÿ› +
Nick Butcher

๐Ÿ›
Nico Gallinal

๐Ÿ›
Nicola Dal Maso

๐Ÿ›
Nicolas Filotto

๐Ÿ’ป
Nicolas Vervelle

๐Ÿ›
Nicolas Vuillamy

๐Ÿ“–
Nikita Chursin

๐Ÿ› -
Niklas Baudy

๐Ÿ› +
Niklas Baudy

๐Ÿ›
Nikolas Havrikov

๐Ÿ›
Nilesh Virkar

๐Ÿ›
Nimit Patel

๐Ÿ›
Niranjan Harpale

๐Ÿ›
Nirvik Patel

๐Ÿ’ป
Noah Sussman

๐Ÿ› -
Noah0120

๐Ÿ› +
Noah0120

๐Ÿ›
Noam Tamim

๐Ÿ›
Noel Grandin

๐Ÿ›
Olaf Haalstra

๐Ÿ›
Oleg Andreych

๐Ÿ’ป ๐Ÿ›
Oleg Pavlenko

๐Ÿ›
Oleksii Dykov

๐Ÿ’ป ๐Ÿ› -
Oliver Eikemeier

๐Ÿ› +
Oliver Eikemeier

๐Ÿ›
Oliver Siegmar

๐Ÿ’ต
Olivier Parent

๐Ÿ’ป ๐Ÿ›
Ollie Abbey

๐Ÿ’ป ๐Ÿ›
OverDrone

๐Ÿ›
Ozan Gulle

๐Ÿ’ป ๐Ÿ›
PUNEET JAIN

๐Ÿ› -
Parbati Bose

๐Ÿ› +
Parbati Bose

๐Ÿ›
Paul Berg

๐Ÿ›
Paul Guyot

๐Ÿ’ป
Pavel Bludov

๐Ÿ›
Pavel Miฤka

๐Ÿ›
Pedro Nuno Santos

๐Ÿ›
Pedro Rijo

๐Ÿ› -
Pelisse Romain

๐Ÿ’ป ๐Ÿ“– ๐Ÿ› +
Pelisse Romain

๐Ÿ’ป ๐Ÿ“– ๐Ÿ›
Per Abich

๐Ÿ’ป
Pete Davids

๐Ÿ›
Peter Bruin

๐Ÿ›
Peter Chittum

๐Ÿ’ป ๐Ÿ›
Peter Cudmore

๐Ÿ›
Peter Kasson

๐Ÿ› -
Peter Kofler

๐Ÿ› +
Peter Kofler

๐Ÿ›
Peter Paul Bakker

๐Ÿ’ป
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

๐Ÿ›
Renato Oliveira

๐Ÿ’ป ๐Ÿ›
Rich DiCroce

๐Ÿ›
Richard Corfield

๐Ÿ’ป
Richard Corfield

๐Ÿ› ๐Ÿ’ป -
Riot R1cket

๐Ÿ› +
Riot R1cket

๐Ÿ›
Rishabh Jain

๐Ÿ›
RishabhDeep Singh

๐Ÿ›
Robbie Martinus

๐Ÿ’ป ๐Ÿ›
Robert Henry

๐Ÿ›
Robert Mihaly

๐Ÿ›
Robert Painsi

๐Ÿ› -
Robert Russell

๐Ÿ› +
Robert Russell

๐Ÿ›
Robert Sรถsemann

๐Ÿ’ป ๐Ÿ“– ๐Ÿ“ข ๐Ÿ›
Robert Whitebit

๐Ÿ›
Robin Richtsfeld

๐Ÿ›
Robin Stocker

๐Ÿ’ป ๐Ÿ›
Robin Wils

๐Ÿ›
RochusOest

๐Ÿ› -
Rodolfo Noviski

๐Ÿ› +
Rodolfo Noviski

๐Ÿ›
Rodrigo Casara

๐Ÿ›
Rodrigo Fernandes

๐Ÿ›
Roman Salvador

๐Ÿ’ป ๐Ÿ›
Ronald Blaschke

๐Ÿ›
Rรณbert Papp

๐Ÿ›
Saikat Sengupta

๐Ÿ› -
Saksham Handu

๐Ÿ› +
Saksham Handu

๐Ÿ›
Saladoc

๐Ÿ›
Salesforce Bob Lightning

๐Ÿ›
Sam Carlberg

๐Ÿ›
Satoshi Kubo

๐Ÿ›
Scott Kennedy

๐Ÿ›
Scott Wells

๐Ÿ› ๐Ÿ’ป -
Scrates1

๐Ÿ› +
Scrates1

๐Ÿ›
Scrsloota

๐Ÿ’ป
Sebastian Bรถgl

๐Ÿ›
Sebastian Schuberth

๐Ÿ›
Sebastian Schwarz

๐Ÿ›
Seren

๐Ÿ› ๐Ÿ’ป
Sergey Gorbaty

๐Ÿ› -
Sergey Kozlov

๐Ÿ› +
Sergey Kozlov

๐Ÿ›
Sergey Yanzin

๐Ÿ’ป ๐Ÿ›
Seth Wilcox

๐Ÿ’ป
Shai Bennathan

๐Ÿ› ๐Ÿ’ป
Shubham

๐Ÿ’ป ๐Ÿ›
Simon Abykov

๐Ÿ’ป ๐Ÿ›
Simon Xiao

๐Ÿ› -
Srinivasan Venkatachalam

๐Ÿ› +
Srinivasan Venkatachalam

๐Ÿ›
Stanislav Gromov

๐Ÿ›
Stanislav Myachenkov

๐Ÿ’ป
Stefan Birkner

๐Ÿ›
Stefan Bohn

๐Ÿ›
Stefan Endrullis

๐Ÿ›
Stefan Klรถss-Schuster

๐Ÿ› -
Stefan Wolf

๐Ÿ› +
Stefan Wolf

๐Ÿ›
Stephan H. Wissel

๐Ÿ›
Stephen

๐Ÿ›
Stephen Friedrich

๐Ÿ›
Steve Babula

๐Ÿ’ป
Steven Stearns

๐Ÿ› ๐Ÿ’ป
Stexxe

๐Ÿ› -
Stian Lรฅgstad

๐Ÿ› +
Stian Lรฅgstad

๐Ÿ›
StuartClayton5

๐Ÿ›
Supun Arunoda

๐Ÿ›
Suren Abrahamyan

๐Ÿ›
Suvashri

๐Ÿ“–
SwatiBGupta1110

๐Ÿ›
SyedThoufich

๐Ÿ› -
Szymon Sasin

๐Ÿ› +
Szymon Sasin

๐Ÿ›
T-chuangxin

๐Ÿ›
TERAI Atsuhiro

๐Ÿ›
TIOBE Software

๐Ÿ’ป ๐Ÿ›
Tarush Singh

๐Ÿ’ป
Taylor Smock

๐Ÿ›
Techeira Damiรกn

๐Ÿ’ป ๐Ÿ› -
Ted Husted

๐Ÿ› +
Ted Husted

๐Ÿ›
TehBakker

๐Ÿ›
The Gitter Badger

๐Ÿ›
Theodoor

๐Ÿ›
Thiago Henrique Hรผpner

๐Ÿ›
Thibault Meyer

๐Ÿ›
Thomas Gรผttler

๐Ÿ› -
Thomas Jones-Low

๐Ÿ› +
Thomas Jones-Low

๐Ÿ›
Thomas Smith

๐Ÿ’ป ๐Ÿ›
ThrawnCA

๐Ÿ›
Thunderforge

๐Ÿ’ป ๐Ÿ›
Tim van der Lippe

๐Ÿ›
Tobias Weimer

๐Ÿ’ป ๐Ÿ›
Tom Copeland

๐Ÿ› ๐Ÿ’ป ๐Ÿ“– -
Tom Daly

๐Ÿ› +
Tom Daly

๐Ÿ›
Tomer Figenblat

๐Ÿ›
Tomi De Lucca

๐Ÿ’ป ๐Ÿ›
Torsten Kleiber

๐Ÿ›
TrackerSB

๐Ÿ›
Tyson Stewart

๐Ÿ›
Ullrich Hafner

๐Ÿ› -
Utku Cuhadaroglu

๐Ÿ’ป ๐Ÿ› +
Utku Cuhadaroglu

๐Ÿ’ป ๐Ÿ›
Valentin Brandl

๐Ÿ›
Valeria

๐Ÿ›
Valery Yatsynovich

๐Ÿ“–
Vasily Anisimov

๐Ÿ›
Vibhor Goyal

๐Ÿ›
Vickenty Fesunov

๐Ÿ› -
Victor Noรซl

๐Ÿ› +
Victor Noรซl

๐Ÿ›
Vincent Galloy

๐Ÿ’ป
Vincent HUYNH

๐Ÿ›
Vincent Maurin

๐Ÿ›
Vincent Privat

๐Ÿ›
Vishhwas

๐Ÿ›
Vitaly

๐Ÿ› -
Vitaly Polonetsky

๐Ÿ› +
Vitaly Polonetsky

๐Ÿ›
Vojtech Polivka

๐Ÿ›
Vsevolod Zholobov

๐Ÿ›
Vyom Yadav

๐Ÿ’ป
Wang Shidong

๐Ÿ›
Waqas Ahmed

๐Ÿ›
Wayne J. Earl

๐Ÿ› -
Wchenghui

๐Ÿ› +
Wchenghui

๐Ÿ›
Wener

๐Ÿ’ป
Will Winder

๐Ÿ›
William Brockhus

๐Ÿ’ป ๐Ÿ›
Wilson Kurniawan

๐Ÿ›
Wim Deblauwe

๐Ÿ›
Woongsik Choi

๐Ÿ› -
XenoAmess

๐Ÿ’ป ๐Ÿ› +
XenoAmess

๐Ÿ’ป ๐Ÿ›
Yang

๐Ÿ’ป
YaroslavTER

๐Ÿ›
Yasar Shaikh

๐Ÿ’ป
Young Chan

๐Ÿ’ป ๐Ÿ›
YuJin Kim

๐Ÿ›
Yuri Dolzhenko

๐Ÿ› -
Yurii Dubinka

๐Ÿ› +
Yurii Dubinka

๐Ÿ›
Zoltan Farkas

๐Ÿ›
Zustin

๐Ÿ›
aaronhurst-google

๐Ÿ› ๐Ÿ’ป
alexmodis

๐Ÿ›
andreoss

๐Ÿ›
andrey81inmd

๐Ÿ’ป ๐Ÿ› -
anicoara

๐Ÿ› +
anicoara

๐Ÿ›
arunprasathav

๐Ÿ›
asiercamara

๐Ÿ›
astillich-igniti

๐Ÿ’ป
avesolovksyy

๐Ÿ›
avishvat

๐Ÿ›
avivmu

๐Ÿ› -
axelbarfod1

๐Ÿ› +
axelbarfod1

๐Ÿ›
b-3-n

๐Ÿ›
balbhadra9

๐Ÿ›
base23de

๐Ÿ›
bergander

๐Ÿ› ๐Ÿ’ป
berkam

๐Ÿ’ป ๐Ÿ›
breizh31

๐Ÿ› -
caesarkim

๐Ÿ› +
caesarkim

๐Ÿ›
carolyujing

๐Ÿ›
cbfiddle

๐Ÿ›
cesares-basilico

๐Ÿ›
chrite

๐Ÿ›
ciufudean

๐Ÿ“–
cobratbq

๐Ÿ› -
coladict

๐Ÿ› +
coladict

๐Ÿ›
cosmoJFH

๐Ÿ›
cristalp

๐Ÿ›
crunsk

๐Ÿ›
cwholmes

๐Ÿ›
cyberjj999

๐Ÿ›
cyw3

๐Ÿ› ๐Ÿ“– -
d1ss0nanz

๐Ÿ› +
d1ss0nanz

๐Ÿ›
dague1

๐Ÿ“–
dalizi007

๐Ÿ’ป
danbrycefairsailcom

๐Ÿ›
dariansanity

๐Ÿ›
darrenmiliband

๐Ÿ›
davidburstrom

๐Ÿ› -
dbirkman-paloalto

๐Ÿ› +
dbirkman-paloalto

๐Ÿ›
deepak-patra

๐Ÿ›
dependabot[bot]

๐Ÿ’ป ๐Ÿ›
dinesh150

๐Ÿ›
diziaq

๐Ÿ›
dreaminpast123

๐Ÿ›
duanyanan

๐Ÿ› -
dutt-sanjay

๐Ÿ› +
dutt-sanjay

๐Ÿ›
dylanleung

๐Ÿ›
dzeigler

๐Ÿ›
eant60

๐Ÿ›
ekkirala

๐Ÿ›
emersonmoura

๐Ÿ›
eugenepugach

๐Ÿ› -
fairy

๐Ÿ› +
fairy

๐Ÿ›
filiprafalowicz

๐Ÿ’ป
foxmason

๐Ÿ›
frankegabor

๐Ÿ›
frankl

๐Ÿ›
freafrea

๐Ÿ›
fsapatin

๐Ÿ› -
gracia19

๐Ÿ› +
gracia19

๐Ÿ›
guo fei

๐Ÿ›
gurmsc5

๐Ÿ›
gwilymatgearset

๐Ÿ’ป ๐Ÿ›
haigsn

๐Ÿ›
hemanshu070

๐Ÿ›
henrik242

๐Ÿ› -
hongpuwu

๐Ÿ› +
hongpuwu

๐Ÿ›
hvbtup

๐Ÿ’ป ๐Ÿ›
igniti GmbH

๐Ÿ›
ilovezfs

๐Ÿ›
itaigilo

๐Ÿ›
jakivey32

๐Ÿ›
jbennett2091

๐Ÿ› -
jcamerin

๐Ÿ› +
jcamerin

๐Ÿ›
jkeener1

๐Ÿ›
jmetertea

๐Ÿ›
johnra2

๐Ÿ’ป
josemanuelrolon

๐Ÿ’ป ๐Ÿ›
kabroxiko

๐Ÿ’ป ๐Ÿ›
karwer

๐Ÿ› -
kaulonline

๐Ÿ› +
kaulonline

๐Ÿ›
kdaemonv

๐Ÿ›
kdebski85

๐Ÿ› ๐Ÿ’ป
kenji21

๐Ÿ’ป ๐Ÿ›
kfranic

๐Ÿ›
khalidkh

๐Ÿ›
koalalam

๐Ÿ› -
krzyk

๐Ÿ› +
krzyk

๐Ÿ›
lasselindqvist

๐Ÿ›
lgemeinhardt

๐Ÿ›
lihuaib

๐Ÿ›
lonelyma1021

๐Ÿ›
lpeddy

๐Ÿ›
lujiefsi

๐Ÿ’ป -
lukelukes

๐Ÿ’ป +
lukelukes

๐Ÿ’ป
lyriccoder

๐Ÿ›
marcelmore

๐Ÿ›
matchbox

๐Ÿ›
matthiaskraaz

๐Ÿ›
meandonlyme

๐Ÿ›
mikesive

๐Ÿ› -
milossesic

๐Ÿ› +
milossesic

๐Ÿ›
mluckam

๐Ÿ’ป
mohan-chinnappan-n

๐Ÿ’ป
mriddell95

๐Ÿ›
mrlzh

๐Ÿ›
msloan

๐Ÿ›
mucharlaravalika

๐Ÿ› -
mvenneman

๐Ÿ› +
mvenneman

๐Ÿ›
nareshl119

๐Ÿ›
nicolas-harraudeau-sonarsource

๐Ÿ›
noerremark

๐Ÿ›
novsirion

๐Ÿ›
nwcm

๐Ÿ“– ๐Ÿ›
oggboy

๐Ÿ› -
oinume

๐Ÿ› +
oinume

๐Ÿ›
orimarko

๐Ÿ’ป ๐Ÿ›
pacvz

๐Ÿ’ป
pallavi agarwal

๐Ÿ›
parksungrin

๐Ÿ›
patpatpat123

๐Ÿ›
patriksevallius

๐Ÿ› -
pbrajesh1

๐Ÿ› +
pbrajesh1

๐Ÿ›
phoenix384

๐Ÿ›
piotrszymanski-sc

๐Ÿ’ป
plan3d

๐Ÿ›
poojasix

๐Ÿ›
prabhushrikant

๐Ÿ›
pujitha8783

๐Ÿ› -
r-r-a-j

๐Ÿ› +
r-r-a-j

๐Ÿ›
raghujayjunk

๐Ÿ›
rajeshveera

๐Ÿ›
rajeswarreddy88

๐Ÿ›
recdevs

๐Ÿ›
reudismam

๐Ÿ’ป ๐Ÿ›
rijkt

๐Ÿ› -
rillig-tk

๐Ÿ› +
rillig-tk

๐Ÿ›
rmohan20

๐Ÿ’ป ๐Ÿ›
rnveach

๐Ÿ›
rxmicro

๐Ÿ›
ryan-gustafson

๐Ÿ’ป ๐Ÿ›
sabi0

๐Ÿ›
scais

๐Ÿ› -
sebbASF

๐Ÿ› +
sebbASF

๐Ÿ›
sergeygorbaty

๐Ÿ’ป
shilko2013

๐Ÿ›
shiomiyan

๐Ÿ“–
simeonKondr

๐Ÿ›
snajberk

๐Ÿ›
sniperrifle2004

๐Ÿ› -
snuyanzin

๐Ÿ› ๐Ÿ’ป +
snuyanzin

๐Ÿ› ๐Ÿ’ป
soyodream

๐Ÿ›
sratz

๐Ÿ›
stonio

๐Ÿ›
sturton

๐Ÿ’ป ๐Ÿ›
sudharmohan

๐Ÿ›
suruchidawar

๐Ÿ› -
svenfinitiv

๐Ÿ› +
svenfinitiv

๐Ÿ›
tashiscool

๐Ÿ›
test-git-hook

๐Ÿ›
testation21

๐Ÿ’ป ๐Ÿ›
thanosa

๐Ÿ›
tiandiyixian

๐Ÿ›
tobwoerk

๐Ÿ› -
tprouvot

๐Ÿ› ๐Ÿ’ป +
tprouvot

๐Ÿ› ๐Ÿ’ป
trentchilders

๐Ÿ›
triandicAnt

๐Ÿ›
trishul14

๐Ÿ›
tsui

๐Ÿ›
winhkey

๐Ÿ›
witherspore

๐Ÿ› -
wjljack

๐Ÿ› +
wjljack

๐Ÿ›
wuchiuwong

๐Ÿ›
xingsong

๐Ÿ›
xioayuge

๐Ÿ›
xnYi9wRezm

๐Ÿ’ป ๐Ÿ›
xuanuy

๐Ÿ›
xyf0921

๐Ÿ› -
yalechen-cyw3

๐Ÿ› +
yalechen-cyw3

๐Ÿ›
yasuharu-sato

๐Ÿ›
zenglian

๐Ÿ›
zgrzyt93

๐Ÿ’ป ๐Ÿ›
zh3ng

๐Ÿ›
zt_soft

๐Ÿ›
ztt79

๐Ÿ› -
zzzzfeng

๐Ÿ› +
zzzzfeng

๐Ÿ›
รrpรกd Magosรกnyi

๐Ÿ›
ไปป่ดตๆฐ

๐Ÿ›
่Œ…ๅปถๅฎ‰

๐Ÿ’ป diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 37502a57652..885c20c5b05 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -226,6 +226,8 @@ The rules have been moved into categories with PMD 6. * [#4719](https://github.com/pmd/pmd/pull/4719): \[java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string * javascript * [#4673](https://github.com/pmd/pmd/pull/4673): \[javascript] CPD: Added support for decorator notation +* plsql + * [#4820](https://github.com/pmd/pmd/issues/4820): \[plsql] WITH clause is ignored for SELECT INTO statements * swift * [#4697](https://github.com/pmd/pmd/issues/4697): \[swift] Support Swift 5.9 features (mainly macros expansion expressions) * xml-bestpractices @@ -359,6 +361,7 @@ The following previously deprecated classes have been removed: * [#4750](https://github.com/pmd/pmd/pull/4750): \[core] Fix flaky SummaryHTMLRenderer - [219sansim](https://github.com/219sansim) (@219sansim) * [#4754](https://github.com/pmd/pmd/pull/4754): \[java] EmptyControlStatementRule: Add allowCommentedBlocks property - [Andreas Bergander](https://github.com/bergander) (@bergander) * [#4759](https://github.com/pmd/pmd/pull/4759): \[java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - [Marcin Dฤ…browski](https://github.com/marcindabrowski) (@marcindabrowski) +* [#4825](https://github.com/pmd/pmd/pull/4825): \[plsql] Fix ignored WITH clause for SELECT INTO statements - [Laurent Bovet](https://github.com/lbovet) (@lbovet) ### ๐Ÿš€ Major Features and Enhancements @@ -1009,6 +1012,8 @@ Language specific fixes: * kotlin * [#419](https://github.com/pmd/pmd/issues/419): \[kotlin] Add support for Kotlin * [#4389](https://github.com/pmd/pmd/pull/4389): \[kotlin] Update grammar to version 1.8 +* plsql + * [#4820](https://github.com/pmd/pmd/issues/4820): \[plsql] WITH clause is ignored for SELECT INTO statements * swift * [#1877](https://github.com/pmd/pmd/pull/1877): \[swift] Feature/swift rules * [#1882](https://github.com/pmd/pmd/pull/1882): \[swift] UnavailableFunction Swift rule @@ -1069,6 +1074,7 @@ Language specific fixes: * [#4750](https://github.com/pmd/pmd/pull/4750): \[core] Fix flaky SummaryHTMLRenderer - [219sansim](https://github.com/219sansim) (@219sansim) * [#4754](https://github.com/pmd/pmd/pull/4754): \[java] EmptyControlStatementRule: Add allowCommentedBlocks property - [Andreas Bergander](https://github.com/bergander) (@bergander) * [#4759](https://github.com/pmd/pmd/pull/4759): \[java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - [Marcin Dฤ…browski](https://github.com/marcindabrowski) (@marcindabrowski) +* [#4825](https://github.com/pmd/pmd/pull/4825): \[plsql] Fix ignored WITH clause for SELECT INTO statements - [Laurent Bovet](https://github.com/lbovet) (@lbovet) ### ๐Ÿ“ˆ Stats * 5007 commits diff --git a/pmd-plsql/etc/grammar/PLSQL.jjt b/pmd-plsql/etc/grammar/PLSQL.jjt index 51be215856b..f99b2d0e1b7 100644 --- a/pmd-plsql/etc/grammar/PLSQL.jjt +++ b/pmd-plsql/etc/grammar/PLSQL.jjt @@ -1273,12 +1273,17 @@ void AbstractSelectStatement(AbstractSelectStatement node) #void : } /** + * Note: The SELECT INTO statement can be preceded by a WithClause, even though this is not in the + * official reference documentation. + * * @see https://docs.oracle.com/en/database/oracle/oracle-database/18/lnpls/SELECT-INTO-statement.html - * @see https://docs.oracle.com/en/database/oracle/oracle-database/18/lnpls/img_text/select_into_statement.html + * @see https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/SELECT-INTO-statement.html + * @see https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/SELECT.html */ ASTSelectIntoStatement SelectIntoStatement() : {} { + [ WithClause() ] // Although undocumented, WITH works with SELECT INTO ! AbstractSelectStatement(jjtThis) SelectList() ( IntoClause() | BulkCollectIntoClause() ) @@ -2330,11 +2335,11 @@ ASTUnlabelledStatement UnlabelledStatement() : {} { ( - // small optimization: SelectIntoStatement and SelectStatement both begin with SELECT + // small optimization: SelectIntoStatement and SelectStatement both begin with WITH or SELECT // but to distinguish the two, a complete lookahead of SelectIntoStatement needs to be parsed. // Using a lookahead of a single token first avoids this the syntatic lookahead for all other choices // not related to SELECT statements. - LOOKAHEAD() ( LOOKAHEAD(SelectIntoStatement()) SelectIntoStatement() ";" | SelectStatement() ";" ) | diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/WithClauseTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/WithClauseTest.java new file mode 100644 index 00000000000..8700acd656c --- /dev/null +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/WithClauseTest.java @@ -0,0 +1,39 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.plsql.ast; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +import net.sourceforge.pmd.lang.plsql.AbstractPLSQLParserTst; + +class WithClauseTest extends AbstractPLSQLParserTst { + + @Test + void testSelect() { + ASTInput input = plsql.parseResource("WithClause.pls"); + + List selectStatements = input.descendants(ASTSelectStatement.class).toList(); + assertEquals(1, selectStatements.size()); + + assertNotNull(selectStatements.get(0).descendants(ASTWithClause.class).first()); + assertNotNull(selectStatements.get(0).descendants(ASTSelectList.class).first()); + } + + @Test + void testSelectInto() { + ASTInput input = plsql.parseResource("WithClause.pls"); + + List selectStatements = input.descendants(ASTSelectIntoStatement.class).toList(); + assertEquals(1, selectStatements.size()); + + assertNotNull(selectStatements.get(0).descendants(ASTWithClause.class).first()); + assertNotNull(selectStatements.get(0).descendants(ASTSelectList.class).first()); + } +} diff --git a/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/WithClause.pls b/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/WithClause.pls new file mode 100644 index 00000000000..6ff01963be4 --- /dev/null +++ b/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/WithClause.pls @@ -0,0 +1,17 @@ +-- +-- WITH Clause +-- + +BEGIN + + WITH titles as ( SELECT * FROM academic_titles ) + SELECT adt.adt_id + FROM titles adt; + + WITH titles as ( SELECT * FROM academic_titles ) + SELECT adt.adt_id + INTO v_adt_id + FROM titles adt; + +END; +/