You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(768) |
Aug
(543) |
Sep
(364) |
Oct
(326) |
Nov
(182) |
Dec
(148) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(144) |
Feb
(223) |
Mar
(339) |
Apr
(406) |
May
(128) |
Jun
(225) |
Jul
(171) |
Aug
(171) |
Sep
(153) |
Oct
(150) |
Nov
(176) |
Dec
(88) |
2004 |
Jan
(71) |
Feb
(28) |
Mar
(91) |
Apr
(184) |
May
(127) |
Jun
(144) |
Jul
(186) |
Aug
(78) |
Sep
(193) |
Oct
(153) |
Nov
(92) |
Dec
(177) |
2005 |
Jan
(223) |
Feb
(319) |
Mar
(253) |
Apr
(106) |
May
(215) |
Jun
(299) |
Jul
(341) |
Aug
(286) |
Sep
(270) |
Oct
(212) |
Nov
(283) |
Dec
(345) |
2006 |
Jan
(243) |
Feb
(426) |
Mar
(278) |
Apr
(254) |
May
(259) |
Jun
(197) |
Jul
(156) |
Aug
(84) |
Sep
(150) |
Oct
(719) |
Nov
(319) |
Dec
(169) |
2007 |
Jan
(484) |
Feb
(222) |
Mar
(61) |
Apr
(51) |
May
(63) |
Jun
(182) |
Jul
(177) |
Aug
(89) |
Sep
(46) |
Oct
(178) |
Nov
(116) |
Dec
(89) |
2008 |
Jan
(23) |
Feb
(198) |
Mar
(227) |
Apr
(203) |
May
(174) |
Jun
(215) |
Jul
(55) |
Aug
(152) |
Sep
(129) |
Oct
(177) |
Nov
(79) |
Dec
(84) |
2009 |
Jan
(91) |
Feb
(179) |
Mar
(102) |
Apr
(67) |
May
(40) |
Jun
(41) |
Jul
(43) |
Aug
(53) |
Sep
(4) |
Oct
(17) |
Nov
(48) |
Dec
(76) |
2010 |
Jan
(28) |
Feb
(17) |
Mar
(27) |
Apr
(9) |
May
(19) |
Jun
(50) |
Jul
(21) |
Aug
(9) |
Sep
(42) |
Oct
(30) |
Nov
(33) |
Dec
(10) |
2011 |
Jan
(14) |
Feb
(6) |
Mar
(18) |
Apr
(8) |
May
(4) |
Jun
(18) |
Jul
(21) |
Aug
(19) |
Sep
(298) |
Oct
(82) |
Nov
(102) |
Dec
(241) |
2012 |
Jan
(41) |
Feb
(29) |
Mar
(43) |
Apr
(18) |
May
(42) |
Jun
(53) |
Jul
(53) |
Aug
(43) |
Sep
(16) |
Oct
(20) |
Nov
(36) |
Dec
(26) |
2013 |
Jan
(15) |
Feb
(14) |
Mar
(36) |
Apr
(38) |
May
(20) |
Jun
(5) |
Jul
(6) |
Aug
(18) |
Sep
(3) |
Oct
(24) |
Nov
(14) |
Dec
(1) |
2014 |
Jan
(13) |
Feb
(12) |
Mar
(8) |
Apr
(19) |
May
(4) |
Jun
(4) |
Jul
(27) |
Aug
(18) |
Sep
(11) |
Oct
(15) |
Nov
(32) |
Dec
(13) |
2015 |
Jan
(11) |
Feb
(13) |
Mar
(21) |
Apr
(22) |
May
(32) |
Jun
(14) |
Jul
(11) |
Aug
(7) |
Sep
(33) |
Oct
(40) |
Nov
(20) |
Dec
(13) |
2016 |
Jan
(24) |
Feb
(16) |
Mar
(11) |
Apr
(25) |
May
(46) |
Jun
(13) |
Jul
(3) |
Aug
(3) |
Sep
(8) |
Oct
(3) |
Nov
(17) |
Dec
(9) |
2017 |
Jan
(6) |
Feb
(3) |
Mar
(13) |
Apr
(16) |
May
(7) |
Jun
(5) |
Jul
(30) |
Aug
(3) |
Sep
(3) |
Oct
(10) |
Nov
(2) |
Dec
(3) |
2018 |
Jan
(8) |
Feb
(4) |
Mar
(6) |
Apr
(2) |
May
(3) |
Jun
(3) |
Jul
(6) |
Aug
(4) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(5) |
2019 |
Jan
(3) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(3) |
Jun
(2) |
Jul
(5) |
Aug
(2) |
Sep
(5) |
Oct
(3) |
Nov
(7) |
Dec
(1) |
2020 |
Jan
(3) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(3) |
Jun
(2) |
Jul
(2) |
Aug
(2) |
Sep
(2) |
Oct
(3) |
Nov
(3) |
Dec
(2) |
2021 |
Jan
(2) |
Feb
(2) |
Mar
(2) |
Apr
(4) |
May
(4) |
Jun
(3) |
Jul
(4) |
Aug
(2) |
Sep
(3) |
Oct
(5) |
Nov
(1) |
Dec
(1) |
2022 |
Jan
(3) |
Feb
(2) |
Mar
(4) |
Apr
(2) |
May
(2) |
Jun
(3) |
Jul
(2) |
Aug
(2) |
Sep
(3) |
Oct
(1) |
Nov
(2) |
Dec
(2) |
2023 |
Jan
(2) |
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(2) |
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(1) |
Nov
(1) |
Dec
(1) |
2024 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
(3) |
May
(1) |
Jun
(2) |
Jul
(2) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
(8) |
Dec
(2) |
2025 |
Jan
(1) |
Feb
(2) |
Mar
(1) |
Apr
(2) |
May
(1) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Andreas D. <and...@pm...> - 2025-06-27 13:09:54
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.15.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.15.0/ 27-June-2025 - 7.15.0 The PMD team is pleased to announce PMD 7.15.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#new-and-noteworthy> o β¨ New Rules <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#api-changes> o Rule Test Schema <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#rule-test-schema> * π΅ Financial Contributions <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#financial-contributions> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/06/pmd-7150-27-june-2025-released/#stats> π New and noteworthy β¨ New Rules * The new Apex rule |AvoidBooleanMethodParameters| <https://docs.pmd-code.org/pmd-doc-7.15.0/pmd_rules_apex_design.html#avoidbooleanmethodparameters> finds methods that take a boolean parameter. This can make method calls difficult to understand and maintain as the method is clearly doing two things. π Fixed Issues * apex-design * #5427 <https://github.com/pmd/pmd/issues/5427>: [apex] New Rule: Avoid Boolean Method Parameters * apex-security * #5788 <https://github.com/pmd/pmd/issues/5788>: [apex] ApexCRUDViolation unable to detect insecure SOQL if it is a direct input argument * doc * #5790 <https://github.com/pmd/pmd/issues/5790>: [doc] Website rule reference pages are returning 404 * java-bestpractices * #5785 <https://github.com/pmd/pmd/issues/5785>: [java] UnusedPrivateField doesn't play well with UnnecessaryWarningSuppression * #5793 <https://github.com/pmd/pmd/issues/5793>: [java] NonExhaustiveSwitch fails on exhaustive switch with sealed class * java-codestyle * #1639 <https://github.com/pmd/pmd/issues/1639>: [java] UnnecessaryImport false positive for multiline @link Javadoc * #2304 <https://github.com/pmd/pmd/issues/2304>: [java] UnnecessaryImport false positive for on-demand imports in JavaDoc * #5832 <https://github.com/pmd/pmd/issues/5832>: [java] UnnecessaryImport false positive for multiline @see Javadoc * java-design * #5804 <https://github.com/pmd/pmd/issues/5804>: [java] UselessOverridingMethod doesn't play well with UnnecessarySuppressWarning π¨ API Changes Rule Test Schema The rule test schema has been extended to support verifying suppressed violations. See Testing your rules <https://docs.pmd-code.org/pmd-doc-7.15.0/pmd_userdocs_extending_testing.html> for more information. Also note, the schema rule-tests.xsd <https://github.com/pmd/pmd/blob/main/pmd-test-schema/src/main/resources/net/sourceforge/pmd/test/schema/rule-tests_1_1_0.xsd> is now only in the module "pmd-test-schema". It has been removed from the old location from module "pmd-test". π΅ Financial Contributions Many thanks to our sponsors: * Cybozu <https://github.com/cybozu> (@cybozu) β¨ Merged pull requests * #5738 <https://github.com/pmd/pmd/pull/5738>: chore: Remove unused private methods in test classes - Pankraz76 <https://github.com/Pankraz76> (@Pankraz76) * #5745 <https://github.com/pmd/pmd/pull/5745>: [ci] New "Publish Release" workflow - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5791 <https://github.com/pmd/pmd/pull/5791>: [doc] Add a simple check whether generate rule doc pages exist - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5797 <https://github.com/pmd/pmd/pull/5797>: [doc] Update sponsors - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5800 <https://github.com/pmd/pmd/pull/5800>: Fix #5793: [java] NonExhaustiveSwitch should ignore "case null" - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5803 <https://github.com/pmd/pmd/pull/5803>: chore: Remove unnecessary suppress warnings - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5805 <https://github.com/pmd/pmd/pull/5805>: Fix #5804: [java] UselessOverridingMethod needs to ignore SuppressWarnings - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5806 <https://github.com/pmd/pmd/pull/5806>: [test] Verify suppressed violations in rule tests - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5814 <https://github.com/pmd/pmd/pull/5814>: Fix #5788: [apex] ApexCRUDViolation - consider deeper nested Soql - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5815 <https://github.com/pmd/pmd/pull/5815>: Fix #5785: [java] UnusedPrivateField should ignore SuppressWarnings - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5818 <https://github.com/pmd/pmd/pull/5818>: Fix #2304: [java] UnnecessaryImport FP for on-demand imports in JavaDoc - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) * #5821 <https://github.com/pmd/pmd/pull/5821>: [apex] New Rule: Avoid boolean method parameters - Mitch Spano <https://github.com/mitchspano> (@mitchspano) * #5823 <https://github.com/pmd/pmd/pull/5823>: [doc] Fix javadoc plugin configuration - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5833 <https://github.com/pmd/pmd/pull/5833>: Fix #1639 #5832: Use filtered comment text for UnnecessaryImport - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5851 <https://github.com/pmd/pmd/pull/5851>: chore: [java] ReplaceHashtableWithMap: Fix name of test - UncleOwen <https://github.com/UncleOwen> (@UncleOwen) π¦ Dependency updates * #5775 <https://github.com/pmd/pmd/pull/5775>: Bump PMD from 7.13.0 to 7.14.0 * #5778 <https://github.com/pmd/pmd/pull/5778>: Bump the all-gems group across 2 directories with 3 updates * #5779 <https://github.com/pmd/pmd/pull/5779>: Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.5.1 * #5780 <https://github.com/pmd/pmd/pull/5780>: Bump org.apache.maven.plugins:maven-clean-plugin from 3.4.1 to 3.5.0 * #5781 <https://github.com/pmd/pmd/pull/5781>: Bump com.google.protobuf:protobuf-java from 4.31.0 to 4.31.1 * #5782 <https://github.com/pmd/pmd/pull/5782>: Bump org.apache.groovy:groovy from 4.0.26 to 4.0.27 * #5783 <https://github.com/pmd/pmd/pull/5783>: Bump com.puppycrawl.tools:checkstyle from 10.24.0 to 10.25.0 * #5784 <https://github.com/pmd/pmd/pull/5784>: Bump org.junit:junit-bom from 5.12.2 to 5.13.0 * #5807 <https://github.com/pmd/pmd/pull/5807>: Bump maven from 3.9.8 to 3.9.10 * #5809 <https://github.com/pmd/pmd/pull/5809>: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 * #5810 <https://github.com/pmd/pmd/pull/5810>: Bump org.junit:junit-bom from 5.13.0 to 5.13.1 * #5811 <https://github.com/pmd/pmd/pull/5811>: Bump junit5.platform.version from 1.13.0 to 1.13.1 * #5812 <https://github.com/pmd/pmd/pull/5812>: Bump org.checkerframework:checker-qual from 3.49.3 to 3.49.4 * #5813 <https://github.com/pmd/pmd/pull/5813>: Bump the all-gems group across 2 directories with 1 update * #5828 <https://github.com/pmd/pmd/pull/5828>: Bump scalameta.version from 4.13.6 to 4.13.7 * #5829 <https://github.com/pmd/pmd/pull/5829>: Bump liquid from 5.8.6 to 5.8.7 in /.ci/files in the all-gems group across 1 directory * #5838 <https://github.com/pmd/pmd/pull/5838>: Bump marocchino/sticky-pull-request-comment from 2.9.2 to 2.9.3 in the all-actions group * #5839 <https://github.com/pmd/pmd/pull/5839>: Bump log4j.version from 2.24.3 to 2.25.0 * #5840 <https://github.com/pmd/pmd/pull/5840>: Bump com.puppycrawl.tools:checkstyle from 10.25.0 to 10.25.1 * #5841 <https://github.com/pmd/pmd/pull/5841>: Bump net.bytebuddy:byte-buddy-agent from 1.17.5 to 1.17.6 * #5842 <https://github.com/pmd/pmd/pull/5842>: Bump net.bytebuddy:byte-buddy from 1.17.5 to 1.17.6 * #5843 <https://github.com/pmd/pmd/pull/5843>: Bump org.sonatype.central:central-publishing-maven-plugin from 0.7.0 to 0.8.0 * #5844 <https://github.com/pmd/pmd/pull/5844>: Bump ostruct from 0.6.1 to 0.6.2 in /.ci/files in the all-gems group across 1 directory * #5853 <https://github.com/pmd/pmd/pull/5853>: Bump build-tools from 30 to 32 π Stats * 91 commits * 24 closed tickets & PRs * Days since last release: 27 |
From: David D. <dav...@or...> - 2025-06-06 07:36:10
|
Welcome to the June installment of the OpenJDK Quality Outreach update. JDK 25, scheduled for General Availability on September 16, 2025, has entered Rampdown Phase One (RDP1)[1]. The JDK 25 feature set is now frozen (see JDK 25 details below), and only low-risk enhancements will be considered. Please help us identify potential issues in the coming weeks by testing your projects on JDK 25 EA builds. With enough lead time, we can resolve them before JDK 25 transitions to the Release Candidate phase in early August[2]. Be make sure to review the JDK 25 heads-ups below; two of them pertain to changes in file operations on Windows. Last but certainly not least, you are invited to attend next weekβs JCP EC online public meeting, where Alex Buckley will give a presentation on Tip & Tail Developmentβa topic particularly relevant for open-source project maintainers. See [3] for details, the meeting will be recorded. [1] https://mail.openjdk.org/pipermail/jdk-dev/2025-June/010191.html [2] https://openjdk.org/projects/jdk/25/ [3] https://jcp.org/aboutJava/communityprocess/ec-public/materials/2025-06-10/JCP-EC-Public-Agenda-June-2025.html # Heads-up - JDK 25: java.io.File.delete no longer deletes read-only files on Windows `File.delete` has been changed on Windows so that it now fails and returns `false` for regular files when the DOS read-only attribute is set. Prior to JDK 25, `File.delete` would delete read-only files by first removing the DOS read-only attribute before attempting deletion. However, because removing the attribute and deleting the file are not a single atomic operation, this could result in the file remaining but with modified attributes if the deletion failed. Applications that depend on the previous behavior should be updated to clear the file attributes before deleting files. To ease the transition, a system property has been introduced to restore the previous behavior. Running with `-Djdk.io.File.allowDeleteReadOnlyFiles=true` will cause `File.delete` to remove the DOS read-only attribute before attempting deletion, restoring the legacy behavior. See https://bugs.openjdk.org/browse/JDK-8355954 for more details. # Heads-up - JDK 25: File operations on Windows now always fail if the used name ends with a space File operations on a path with a trailing space in a directory or file name, e.g. "C:\\SomeFolder\\SomeFile ", now fail consistently on Windows. For example. `File::mkdir` will return `false`, or `File::createNewFile` will throw `IOException` if an element in the path has a trailing space. Such pathnames are not legal on Windows. Prior to JDK 25, operations on a `File` created from such an illegal abstract pathname could appear to succeed when in fact they did not. See https://bugs.openjdk.org/browse/JDK-8354450 for more details. # Heads-up - JDK 25: Separate Metaspace and GC Printing Historically the printing of Metaspace and GC logs have been combined; this was a result of permanent generation (PermGen) being a part of the GC Heap. However, Metaspace has replaced PermGen and resides in its own native memory location outside of the GC Heap. With Metaspace no longer a part of the GC Heap, the reason for combining the messaging no longer makes sense and could lead to confusion. Starting with JDK 25, the way logging is tagged in the HotSpot JVM will change: although the content of the logs will remain the same, messages related to Metaspace will now use the existing Metaspace tag. As part of this update, there are also some user-facing changes to `jcmd`. To better clarify that Metaspace is not part of the GC Heap, Metaspace information is no longer displayed with the `GC.heap_info` command. Instead, details about Metaspace memory usage have been moved to the `VM.metaspace` command. See https://bugs.openjdk.org/browse/JDK-8356848 for more details. # JDK 25 The JDK 25 early-access builds 25 are available[4] and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here[5]. Please refer to the βTopics of Interestβ section at the end of this update for additional information on JDK 25. ## JEPs integrated in JDK 25: - JEP 470: PEM Encodings of Cryptographic Objects (Preview) - JEP 502: Stable Values (Preview) - JEP 503: Remove the 32-bit x86 Port - JEP 505: Structured Concurrency (5th Preview) - JEP 506: Scoped Values - JEP 507: Primitive Types in Patterns, instanceof, and switch (3rd Preview) - JEP 508: Vector API (10th Incubator) - JEP 509: JFR CPU-Time Profiling (Experimental) - JEP 510: Key Derivation Function API - JEP 511: Module Import Declarations - JEP 512: Compact Source Files and Instance Main Methods - JEP 513: Flexible Constructor Bodies - JEP 514: Ahead-of-Time Command-Line Ergonomics - JEP 515: Ahead-of-Time Method Profiling - JEP 518: JFR Cooperative Sampling - JEP 519: Compact Object Headers - JEP 520: JFR Method Timing & Tracing - JEP 521: Generational Shenandoah ## Changes in recent JDK 25 builds that may be of interest: - JDK-8340321: Disable SHA-1 in TLS/DTLS 1.2 handshake signatures - JDK-8354276: Strict HTTP header validation - JDK-8356848: Separate Metaspace and GC printing - JDK-8355954: java.io.File.delete no longer deletes read-only files on Windows - JDK-8353440: Disable FTP fallback for non-local file URLs by default - JDK-8354908: javac mishandles supplementary character in character literal - JDK-8355360: -d option of jwebserver command should accept relative paths - JDK-8354084: Streamline XPath API's extension function control - JDK-8354305: SHAKE128 and SHAKE256 MessageDigest algorithms - JDK-8343110: Add getChars(int, int, char[], int) to CharSequence and CharBuffer - JDK-8356154: Respecify java.net.Socket constructors that allow creating UDP sockets to throw IllegalArgumentException - JDK-8322810: Lambda expression types can't be classes - JDK-8352612: No way to add back lint categories after "none" - JDK-8348732: SunJCE and SunPKCS11 have different PBE key encodings - JDK-8350498: Remove two Camerfirma root CA certificates - JDK-8350441: ZGC: Overhaul Page Allocation - JDK-8347337: ZGC: String dedups short-lived strings - JDK-8350279: HttpClient: Add a new HttpResponse method to identify connections - JDK-8350753: Deprecate UseCompressedClassPointers - JDK-8254622: Hide superclasses from conditionally exported packages - JDK-8346465: Add a check in setData() to restrict the update of Built-In ICC_Profiles - JDK-8347472: Correct Attribute traversal and writing for Code attributes - JDK-8351654: Agent transformer bytecodes should be verified - JDK-8348967: Deprecate security permission classes for removal - JDK-8353642: Deprecate URL::getPermission method and networking permission classes for removal - JDK-8353856: Deprecate FlighRecorderPermission class for removal - JDK-8353614: JFR: jfr print --exact - JDK-8346109: Create JDK taglet for additional preview notes - JDK-8285888: Clarify that java.net.http.HttpClient do NOT support Digest authentication - JDK-8350542: Optional.orElseThrow(Supplier) does not specify behavior when supplier returns null - JDK-8342206: Convenience method to check if a constant pool entry matches nominal descriptors Note: For a more exhaustive list of changes, please see here[6]. [4] https://jdk.java.net/25/ [5] https://jdk.java.net/25/release-notes [6] https://github.com/openjdk/jdk/compare/jdk-25+17...jdk-25+25 # JavaFX 25 Early-Access Builds These are early access builds of the JavaFX 25 Runtime, built from the openjdk/jfx repository. They enable JavaFX application developers to build and test their applications with JavaFX 25 on JDK 25. Although these builds are designed to work with JDK 25 EA, they are also compatible with JDK 22 and later versions. The latest early access builds of JavaFX 25 Builds 18 (2025/5/23) are available[7], under the GNU General Public License, version 2, with the Classpath Exception. JavaFX 25 API Javadocs[8] are available too. [7] https://jdk.java.net/javafx25/ [8] https://download.java.net/java/early_access/javafx25/docs/api/overview-summary.html # JavaFX Direct3D 12 Early-Access Builds These are early access builds of JavaFX from the "direct3d12" branch of the openjdk/jfx-sandbox repository[9], which implement the new Direct3D 12 graphics rendering pipeline for Windows x64. The goal of these EA builds is to solicit feedback as we work toward integrating this functionality into JavaFX. Binaries[10] are provided for convenience, so users do not need to build from source. Feedback can be reported to the openjfx-dev mailing list[11]. These builds are provided under the GNU General Public License, version 2, with the Classpath Exception, and are based on an incomplete version of JavaFX 25. [9] https://github.com/openjdk/jfx-sandbox/tree/direct3d12 [10] https://jdk.java.net/javafxdirect3d12/ [11] https://mail.openjdk.org/pipermail/openjfx-dev/ # Topics of Interest - Java 25 Brings 18 JEPs - Inside Java Newscast https://inside.java/2025/06/05/newscast-92/ - Strings Just Got Faster in JDK 25 https://inside.java/2025/05/01/strings-just-got-faster/ - What's new for JFR in JDK 25 https://egahlin.github.io/2025/05/31/whats-new-in-jdk-25.html - Structured Concurrency Revamp in Java 25 - Inside Java Newscast https://inside.java/2025/05/08/newscast-91/ - Where Is the Java Language Going? https://inside.java/2025/04/20/javaone-future-java/ - Java for AI https://inside.java/2025/05/03/javaone-java-ai/ - Pattern Matching in Java: Better Code, Better APIs https://inside.java/2025/05/24/javaone-pattern-matching/ - Towards a JSON API for the JDK https://mail.openjdk.org/pipermail/core-libs-dev/2025-May/145905.html - Modern Java Development with Tip & Tail https://inside.java/2025/05/17/javaone-tip-tail/ - Java 24, Faster Than Ever https://inside.java/2025/05/17/javaone-faster-jdk24/ - βAhead of Time Computationβ with Dan Heidinga - Inside Java Podcast https://inside.java/2025/05/16/podcast-036/ - βStream Gatherersβ with Viktor Klang - Inside Java Podcast https://inside.java/2025/05/05/podcast-035/ - Garbage Collection in Java: The Performance Benefits of Upgrading https://inside.java/2025/05/14/javaone-garbage-collection/ - JavaFX 24 and Beyond https://inside.java/2025/05/10/javaone-javafx/ - JDK 24 Security Enhancements https://seanjmullan.org/blog/2025/04/07/jdk24 ~ This concludes the update for now. Should you experience any difficulties while testing your projects with the latest JDK early-access builds, just ping me. PS: If you no longer wish to receive OpenJDK Quality Outreach updates, please let me know. --David |
From: Andreas D. <and...@pm...> - 2025-05-30 19:21:42
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.14.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.14.0/ 30-May-2025 - 7.14.0 The PMD team is pleased to announce PMD 7.14.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#new-and-noteworthy> o PMD CLI now uses threaded execution by default <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#pmd-cli-now-uses-threaded-execution-by-default> o New Rule UnnecessaryWarningSuppression (experimental) <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#new-rule-unnecessarywarningsuppression-experimental> o Migrating to Central Publisher Portal <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#migrating-to-central-publisher-portal> o More CLI parameters shared between PMD and CPD <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#more-cli-parameters-shared-between-pmd-and-cpd> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#api-changes> o CLI <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#cli> o Deprecations <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#deprecations> o Experimental <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#experimental> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/05/pmd-7140-30-may-2025-released/#stats> π New and noteworthy PMD CLI now uses threaded execution by default In the PMD CLI, the |--threads| (|-t|) option can now accept a thread count given relative to the number of cores of the machine. For instance, it is now possible to write |-t 1C| to spawn one thread per core, or |-t 0.5C| to spawn one thread for every other core. The thread count option now defaults to |1C|, meaning parallel execution is used by default. You can disable this by using |-t 1|. New Rule UnnecessaryWarningSuppression (experimental) This new Java rule |UnnecessaryWarningSuppression| <https://docs.pmd-code.org/pmd-doc-7.14.0/pmd_rules_java_bestpractices.html#unnecessarywarningsuppression> reports unused suppression annotations and comments. Violations of this rule cannot be suppressed. How to use it? Just include it in your ruleset: |<ruleref="category/java/bestpractices.xml/UnnecessaryWarningSuppression"/> | Note: This rule is currently experimental. It is available for now only for Java. The rule for now only reports annotations specific to PMD, like |@SuppressWarnings("PMD")|. In the future we might be able to check for other common ones like |@SuppressWarnings("unchecked")| or |"fallthrough"|. Since violations of this rule cannot be suppressed, we opted here on the side of false-negatives and don't report every unused case yet. However, suppressing specific PMD rules is working as expected. Migrating to Central Publisher Portal We've now migrated to Central Publisher Portal <https://central.sonatype.org/publish/publish-portal-guide/>. Snapshots of PMD are still available, however the repository URL changed. To consume these with maven, you can use the following snippet: |<repositories> <repository> <name>CentralPortalSnapshots</name> <id>central-portal-snapshots</id> <url>https://central.sonatype.com/repository/maven-snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> | Releases of PMD are available on Maven Central <https://central.sonatype.com/> as before without change. More CLI parameters shared between PMD and CPD When executing PMD or CPD, the same parameters are now understood for selecting which files should be analyzed. See File collection options <https://docs.pmd-code.org/pmd-doc-7.14.0/pmd_userdocs_cli_reference.html#file-collection-options> for a list of common, shared parameters that are valid for both commands. π Fixed Issues * core * #648 <https://github.com/pmd/pmd/issues/648>: [core] Warn on unneeded suppression * #5700 <https://github.com/pmd/pmd/pull/5700>: [core] Don't accidentally catch unexpected runtime exceptions in CpdAnalysis * #5705 <https://github.com/pmd/pmd/issues/5705>: [cli] PMD's start script fails if PMD_HOME is set * java-bestpractices * #5061 <https://github.com/pmd/pmd/issues/5061>: [java] UnusedLocalVariable false positive when variable is read as side effect of an assignment * #5621 <https://github.com/pmd/pmd/issues/5621>: [java] UnusedPrivateMethod with method ref * #5724 <https://github.com/pmd/pmd/issues/5724>: [java] ImplicitFunctionalInterface should not be reported on sealed interfaces * java-codestyle * #2462 <https://github.com/pmd/pmd/issues/2462>: [java] LinguisticNaming must ignore setters that returns current type (Builder pattern) * #5634 <https://github.com/pmd/pmd/issues/5634>: [java] CommentDefaultAccessModifier doesn't recognize //package // comment at expected location for constructors * java-design * #5568 <https://github.com/pmd/pmd/issues/5568>: [java] High NPathComplexity in |switch| expression * #5647 <https://github.com/pmd/pmd/issues/5647>: [java] NPathComplexity does not account for |return|s * java-errorprone * #5702 <https://github.com/pmd/pmd/issues/5702>: [java] InvalidLogMessageFormat: Lombok @Slf4j annotation is not interpreted by PMD * java-performance * #5711 <https://github.com/pmd/pmd/issues/5711>: [java] UseArraysAsList false positive with Sets * visualforce * #5476 <https://github.com/pmd/pmd/issues/5476>: [visualforce] NPE when analyzing standard field references in visualforce page π¨ API Changes CLI * CPD now supports |--report-file| (-r) and |--exclude-file-list|. * PMD now supports |--exclude| and |--non-recursive|. * The option |--ignore-list| in PMD is renamed to |--exclude-file-list|. Deprecations * CLI * The option |--ignore-list| has been deprecated. Use |--exclude-file-list| instead. * core * |AstInfo#getSuppressionComments| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/AstInfo.html#getSuppressionComments()>: Use |getAllSuppressionComments| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/AstInfo.html#getAllSuppressionComments()> or |getSuppressionComment| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/AstInfo.html#getSuppressionComment(int)>. * |AstInfo#withSuppressMap| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/AstInfo.html#withSuppressMap()>: Use |withSuppressionComments| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/AstInfo.html#withSuppressionComments(java.util.Collection)> * |AbstractTokenManager#suppressMap| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractTokenManager.html#suppressMap>: Don't use this map directly anymore. Instead, use |getSuppressionComments| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractTokenManager.html#getSuppressionComments()>. * |AbstractTokenManager#getSuppressMap| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractTokenManager.html#getSuppressMap()>: Use |getSuppressionComments| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractTokenManager.html#getSuppressionComments()> instead. * pmd-java * |ASTCompactConstructorDeclaration#getDeclarationNode| <https://docs.pmd-code.org/apidocs/pmd-java/7.14.0/net/sourceforge/pmd/lang/java/ast/ASTCompactConstructorDeclaration.html#getDeclarationNode()>: This method just returns |this| and isn't useful. * |JavaMetrics#NPATH| <https://docs.pmd-code.org/apidocs/pmd-java/7.14.0/net/sourceforge/pmd/lang/java/metrics/JavaMetrics.html#NPATH>: Use |NPATH_COMP| <https://docs.pmd-code.org/apidocs/pmd-java/7.14.0/net/sourceforge/pmd/lang/java/metrics/JavaMetrics.html#NPATH_COMP>, which is available on more nodes, and uses Long instead of BigInteger. Experimental * core * |SuppressionCommentImpl| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/ast/impl/SuppressionCommentImpl.html#> * |UnnecessaryPmdSuppressionRule| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/lang/rule/impl/UnnecessaryPmdSuppressionRule.html#> * |RuleContext#addViolationNoSuppress| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/reporting/RuleContext.html#addViolationNoSuppress(net.sourceforge.pmd.reporting.Reportable,net.sourceforge.pmd.lang.ast.AstInfo,java.lang.String,java.lang.Object...)> * |ViolationSuppressor.SuppressionCommentWrapper| <https://docs.pmd-code.org/apidocs/pmd-core/7.14.0/net/sourceforge/pmd/reporting/ViolationSuppressor.SuppressionCommentWrapper.html#> * pmd-java * |OverloadSelectionResult#getTypeToSearch| <https://docs.pmd-code.org/apidocs/pmd-java/7.14.0/net/sourceforge/pmd/lang/java/types/OverloadSelectionResult.html#getTypeToSearch()> β¨ Merged pull requests * #5584 <https://github.com/pmd/pmd/pull/5584>: [ci] New workflow "Publish Snapshot" - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5599 <https://github.com/pmd/pmd/pull/5599>: [java] Rewrite NPath complexity metric - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5609 <https://github.com/pmd/pmd/pull/5609>: [core] Add rule to report unnecessary suppression comments/annotations - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5699 <https://github.com/pmd/pmd/pull/5699>: Fix #5702: [java] First-class support for lombok @Slf4j - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5700 <https://github.com/pmd/pmd/pull/5700>: [core] Don't accidentally catch unexpected runtime exceptions in CpdAnalysis - Elliotte Rusty Harold <https://github.com/elharo> (@elharo <https://sourceforge.net/u/elharo/profile/>) * #5712 <https://github.com/pmd/pmd/pull/5712>: Fix #5711: [java] UseArrayAsList - only consider List.add - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5715 <https://github.com/pmd/pmd/pull/5715>: Fix #5476: [visualforce] Resolve data types of standard object fields - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5716 <https://github.com/pmd/pmd/pull/5716>: Fix #5634: [java] CommentDefaultAccessModifier: Comment between annotation and constructor not recognized - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) * #5726 <https://github.com/pmd/pmd/pull/5726>: Fix #5724: [java] Implicit functional interface FP with sealed interface - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5727 <https://github.com/pmd/pmd/pull/5727>: Fix #5621: [java] Fix FPs with UnusedPrivateMethod - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5728 <https://github.com/pmd/pmd/pull/5728>: [ci] Improvements for "Publish Pull Requests" - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5730 <https://github.com/pmd/pmd/pull/5730>: [ci] Refactor git-repo-sync - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5731 <https://github.com/pmd/pmd/pull/5731>: [cli] Share more CLI options between CPD and PMD - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5736 <https://github.com/pmd/pmd/pull/5736>: Fix #5061: [java] UnusedLocalVariable FP when using compound assignment - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) * #5741 <https://github.com/pmd/pmd/pull/5741>: [cli] Make CLI default to multithreaded - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5742 <https://github.com/pmd/pmd/pull/5742>: [ci] publish-snapshot/old build: migrate to central portal - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5743 <https://github.com/pmd/pmd/pull/5743>: [ci] Make build a reuseable workflow - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5744 <https://github.com/pmd/pmd/pull/5744>: Fix #5705: [cli] Always determine PMD_HOME based on script location - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5748 <https://github.com/pmd/pmd/pull/5748>: [core] Reformat SarifLog to comply to coding standards - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5763 <https://github.com/pmd/pmd/pull/5763>: [java] Support annotated constructor return type in symbol API - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5764 <https://github.com/pmd/pmd/pull/5764>: Fix #2462: [java] LinguisticNaming should ignore setters for Builders - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) π¦ Dependency updates * #5706 <https://github.com/pmd/pmd/pull/5706>: Bump PMD from 7.12.0 to 7.13.0 * #5709 <https://github.com/pmd/pmd/pull/5709>: Bump com.google.code.gson:gson from 2.13.0 to 2.13.1 * #5710 <https://github.com/pmd/pmd/pull/5710>: Bump com.puppycrawl.tools:checkstyle from 10.23.0 to 10.23.1 * #5717 <https://github.com/pmd/pmd/pull/5717>: Bump scalameta.version from 4.13.4 to 4.13.5 * #5718 <https://github.com/pmd/pmd/pull/5718>: Bump org.checkerframework:checker-qual from 3.49.2 to 3.49.3 * #5719 <https://github.com/pmd/pmd/pull/5719>: Bump org.jsoup:jsoup from 1.19.1 to 1.20.1 * #5751 <https://github.com/pmd/pmd/pull/5751>: Bump scalameta.version from 4.13.5 to 4.13.6 * #5754 <https://github.com/pmd/pmd/pull/5754>: Bump com.google.protobuf:protobuf-java from 4.30.2 to 4.31.0 * #5766 <https://github.com/pmd/pmd/pull/5766>: Bump io.github.git-commit-id:git-commit-id-maven-plugin from 9.0.1 to 9.0.2 * #5767 <https://github.com/pmd/pmd/pull/5767>: Bump org.mockito:mockito-core from 5.17.0 to 5.18.0 * #5768 <https://github.com/pmd/pmd/pull/5768>: Bump com.puppycrawl.tools:checkstyle from 10.23.1 to 10.24.0 π Stats * 165 commits * 33 closed tickets & PRs * Days since last release: 35 |
From: Andreas D. <and...@pm...> - 2025-04-25 09:04:36
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.13.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.13.0/ 25-April-2025 - 7.13.0 The PMD team is pleased to announce PMD 7.13.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#new-and-noteworthy> o Docker images <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#docker-images> o Experimental support for language dialects <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#experimental-support-for-language-dialects> o β¨ New Rules <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#api-changes> o Deprecations <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#deprecations> o Experimental API <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#experimental-api> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/04/pmd-7130-25-april-2025-released/#stats> π New and noteworthy Docker images PMD is now providing official docker images at https://hub.docker.com/r/pmdcode/pmd and https://github.com/pmd/docker/pkgs/container/pmd. You can now analyze your code with PMD by using docker like so: |docker run --rm --tty -v $PWD:/src pmdcode/pmd:latest check -d . -R rulesets/java/quickstart.xml` | More information is available at https://github.com/pmd/docker. Experimental support for language dialects A dialect is a particular form of another supported language. For example, an XSLT is a particular form of an XML. Even though the dialect has its own semantics and uses, the contents are still readable by any tool capable of understanding the base language. In PMD, a dialect allows to set up completely custom rules, XPath functions, properties and metrics for these files; while retaining the full support of the underlying base language including already existing rules and XPath functions. See [core] Support language dialects #5438 <https://github.com/pmd/pmd/pull/5438> and Adding a new dialect <https://docs.pmd-code.org/pmd-doc-7.13.0/pmd_devdocs_major_adding_dialect.html> for more information. β¨ New Rules * The new Apex rule |TypeShadowsBuiltInNamespace| <https://docs.pmd-code.org/pmd-doc-7.13.0/pmd_rules_apex_errorprone.html#typeshadowsbuiltinnamespace> finds Apex classes, enums, and interfaces that have the same name as a class, enum, or interface in the |System| or |Schema| namespace. Shadowing these namespaces in this way can lead to confusion and unexpected behavior. π Fixed Issues * core * #5438 <https://github.com/pmd/pmd/issues/5438>: [core] Support language dialects * #5448 <https://github.com/pmd/pmd/issues/5448>: Maintain a public PMD docker image * #5525 <https://github.com/pmd/pmd/issues/5525>: [core] Add rule priority as level to Sarif report * #5623 <https://github.com/pmd/pmd/issues/5623>: [dist] Make pmd launch script compatible with /bin/sh * apex-bestpractices * #5667 <https://github.com/pmd/pmd/issues/5667>: [apex] ApexUnitTestShouldNotUseSeeAllDataTrue false negative when seeAllData parameter is a string * apex-errorprone * #3184 <https://github.com/pmd/pmd/issues/3184>: [apex] Prevent classes from shadowing System Namespace * java * #5645 <https://github.com/pmd/pmd/issues/5645>: [java] Parse error on switch with yield * java-bestpractices * #5687 <https://github.com/pmd/pmd/issues/5687>: [java] UnusedPrivateMethodRule: exclude serialization method readObjectNoData() * plsql * #5675 <https://github.com/pmd/pmd/issues/5675>: [plsql] Parse error with TREAT function π¨ API Changes Deprecations * |net.sourceforge.pmd.lang.xml.pom.PomLanguageModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/pom/PomLanguageModule.html#> is deprecated. POM is now a dialect of XML. Use |PomDialectModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/pom/PomDialectModule.html#> instead. * |net.sourceforge.pmd.lang.xml.wsdl.WsdlLanguageModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/wsdl/WsdlLanguageModule.html#> is deprecated. WSDL is now a dialect of XML. Use |WsdlDialectModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/wsdl/WsdlDialectModule.html#> instead. * |net.sourceforge.pmd.lang.xml.xsl.XslLanguageModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/xsl/XslLanguageModule.html#> is deprecated. XSL is now a dialect of XML. Use |XslDialectModule| <https://docs.pmd-code.org/apidocs/pmd-xml/7.13.0/net/sourceforge/pmd/lang/xml/xsl/XslDialectModule.html#> instead. Experimental API * The core API around support for language dialects: * |Language#getBaseLanguageId| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/Language.html#getBaseLanguageId()> * |Language#isDialectOf| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/Language.html#isDialectOf(net.sourceforge.pmd.lang.Language)> * |LanguageModuleBase#<init>| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/LanguageModuleBase.html#\<init>(net.sourceforge.pmd.lang.LanguageModuleBase.DialectLanguageMetadata)> * |LanguageModuleBase#asDialectOf| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/LanguageModuleBase.html#asDialectOf(java.lang.String)> * |LanguageModuleBase.DialectLanguageMetadata| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/LanguageModuleBase.DialectLanguageMetadata.html#> * |BasePmdDialectLanguageVersionHandler| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/impl/BasePmdDialectLanguageVersionHandler.html#> * |SimpleDialectLanguageModuleBase| <https://docs.pmd-code.org/apidocs/pmd-core/7.13.0/net/sourceforge/pmd/lang/impl/SimpleDialectLanguageModuleBase.html#> β¨ Merged pull requests * #5438 <https://github.com/pmd/pmd/pull/5438>: [core] Support language dialects - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5450 <https://github.com/pmd/pmd/pull/5450>: Fix #3184: [apex] New Rule: TypeShadowsBuiltInNamespace - Mitch Spano <https://github.com/mitchspano> (@mitchspano) * #5573 <https://github.com/pmd/pmd/pull/5573>: Fix #5525: [core] Add Sarif Level Property - julees7 <https://github.com/julees7> (@julees7) * #5623 <https://github.com/pmd/pmd/pull/5623>: [dist] Make pmd launch script compatible with /bin/sh - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5648 <https://github.com/pmd/pmd/pull/5648>: Fix #5645: [java] Parse error with yield statement - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5652 <https://github.com/pmd/pmd/pull/5652>: [java] Cleanup |AccessorClassGenerationRule| implementation - Pankraz76 <https://github.com/Pankraz76> (@Pankraz76) * #5672 <https://github.com/pmd/pmd/pull/5672>: [doc] Fix its/it's and doable/double typos - John Jetmore <https://github.com/jetmore> (@jetmore) * #5674 <https://github.com/pmd/pmd/pull/5674>: Fix #5448: [ci] Maintain public Docker image - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5684 <https://github.com/pmd/pmd/pull/5684>: Fix #5667: [apex] ApexUnitTestShouldNotUseSeeAllDataTrue false negative when seeAllDate parameter is a string - Thomas Prouvot <https://github.com/tprouvot> (@tprouvot) * #5685 <https://github.com/pmd/pmd/pull/5685>: [doc] typo fix in PMD Designer reference - Douglas Griffith <https://github.com/dwgrth> (@dwgrth) * #5686 <https://github.com/pmd/pmd/pull/5686>: Fix #5675: [plsql] Support TREAT function with specified datatype - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5687 <https://github.com/pmd/pmd/pull/5687>: [java] UnusedPrivateMethodRule: exclude serialization method readObjectNoData() - Gili Tzabari <https://github.com/cowwoc> (@cowwoc <https://sourceforge.net/u/cowwoc/profile/>) * #5688 <https://github.com/pmd/pmd/pull/5688>: [java] Fix Double Literal for Java19+ compatibility - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) π¦ Dependency updates * #5607 <https://github.com/pmd/pmd/pull/5607>: Bump org.junit:junit-bom from 5.11.4 to 5.12.1 * #5641 <https://github.com/pmd/pmd/pull/5641>: Bump PMD from 7.11.0 to 7.12.0 * #5653 <https://github.com/pmd/pmd/pull/5653>: Bump org.sonarsource.scanner.maven:sonar-maven-plugin from 5.0.0.4389 to 5.1.0.4751 * #5654 <https://github.com/pmd/pmd/pull/5654>: Bump surefire.version from 3.5.2 to 3.5.3 * #5655 <https://github.com/pmd/pmd/pull/5655>: Bump com.google.guava:guava from 33.4.5-jre to 33.4.6-jre * #5656 <https://github.com/pmd/pmd/pull/5656>: Bump org.ow2.asm:asm from 9.7.1 to 9.8 * #5657 <https://github.com/pmd/pmd/pull/5657>: Bump com.google.protobuf:protobuf-java from 4.30.1 to 4.30.2 * #5658 <https://github.com/pmd/pmd/pull/5658>: Bump logger from 1.6.6 to 1.7.0 in /.ci/files in the all-gems group across 1 directory * #5671 <https://github.com/pmd/pmd/pull/5671>: Bump checkstyle from 10.21.4 to 10.23.0 * #5676 <https://github.com/pmd/pmd/pull/5676>: Bump org.checkerframework:checker-qual from 3.49.1 to 3.49.2 * #5677 <https://github.com/pmd/pmd/pull/5677>: Bump junit5.platform.version from 1.12.1 to 1.12.2 * #5678 <https://github.com/pmd/pmd/pull/5678>: Bump org.apache.commons:commons-text from 1.13.0 to 1.13.1 * #5679 <https://github.com/pmd/pmd/pull/5679>: Bump com.google.guava:guava from 33.4.6-jre to 33.4.7-jre * #5680 <https://github.com/pmd/pmd/pull/5680>: Bump org.mockito:mockito-core from 5.16.1 to 5.17.0 * #5681 <https://github.com/pmd/pmd/pull/5681>: Bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 * #5682 <https://github.com/pmd/pmd/pull/5682>: Bump net.bytebuddy:byte-buddy-agent from 1.17.4 to 1.17.5 * #5683 <https://github.com/pmd/pmd/pull/5683>: Bump the all-gems group across 2 directories with 2 updates * #5691 <https://github.com/pmd/pmd/pull/5691>: Bump com.google.code.gson:gson from 2.12.1 to 2.13.0 * #5692 <https://github.com/pmd/pmd/pull/5692>: Bump com.google.guava:guava from 33.4.7-jre to 33.4.8-jre * #5693 <https://github.com/pmd/pmd/pull/5693>: Bump net.bytebuddy:byte-buddy from 1.17.4 to 1.17.5 * #5694 <https://github.com/pmd/pmd/pull/5694>: Bump org.junit:junit-bom from 5.12.1 to 5.12.2 * #5696 <https://github.com/pmd/pmd/pull/5696>: Bump info.picocli:picocli from 4.7.6 to 4.7.7 * #5697 <https://github.com/pmd/pmd/pull/5697>: Bump com.github.hazendaz.maven:coveralls-maven-plugin from 4.5.0-M6 to 4.7.0 * #5704 <https://github.com/pmd/pmd/pull/5704>: Bump nokogiri from 1.18.5 to 1.18.8 π Stats * 117 commits * 19 closed tickets & PRs * Days since last release: 27 |
From: David D. <dav...@or...> - 2025-04-07 16:33:47
|
Greetings and welcome to the latest OpenJDK Quality Outreach update! JDK 24 was officially released (General Availability) on March 18th during JavaOne. You can rewatch the Java 24 launch and the J1 keynote here [1]. Be sure to also check out the Quality Outreach section here [2]. JavaOne was amazing, and if you couldn't attend, make sure to watch the JavaOne 2025 playlist [3] regularly as sessions are gradually being added. With the release of JDK 24, the focus now moves to JDK 25 testing. On that note, be sure to check out the heads-up below, with more to follow. And as always, if you experience any issues with your project running on a JDK 25 early-access builds, please don't hesitate to reach out. [1] https://www.youtube.com/watch?v=mk_2MIWxLI0&t=12s [2] https://www.youtube.com/live/GwR7Gvi80Xo?si=gxdqAhVbnNV0JZGt&t=2795 [3] https://www.youtube.com/playlist?list=PLX8CzqL3ArzVV1xRJkRbcM2tOgVwytJAi # Heads-up - JDK 25: New Null Checks in Inner Class Constructors The Java Language Specification prescribes that various use sites of inner class constructors should include null checks of the immediately enclosing instance and from then on assumes that the reference is non-null. However, it does not mandate such checks of the incoming instance at the declaration site of these constructors and so core reflection, method handles, and direct bytecode invocation can pass null as enclosing instance, which can lead to NullPointerExceptions down the road. Since a null enclosing instance is outside of the JLS and the future evolution of inner classes may lead to unexpected NPEs, Java 25 will start ensuring that references to the immediately enclosing instance are always non-null. Starting with JDK 25, when javac is targeting release 25 or higher, it will emit null checks for the enclosing instances in inner class constructors. This behavioral change will lead to new NPEs in code that uses core reflection, method handles, or direct bytecode invocation to pass null as enclosing instance. Such code is rare and usually found in libraries or frameworks (as opposed to in applications). It should be changed to no longer pass a null reference. In case these additional checks lead to issues, their emission can be prevented with a flag: `-XDnullCheckOuterThis=(true|false)`. This should be seen as a temporary workaround and no guarantees are made for how long this flag will be available. For more details, check JDK-8351274 [4]. [4] https://bugs.openjdk.org/browse/JDK-8351274 # JDK 25 The JDK 25 early-access builds 17 are available [5] and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [6]. The following JEPs have been targeted to JDK 25, so far: - JEP 502: Stable Values (Preview) - JEP 503: Remove the 32-bit x86 Port ## Changes in recent JDK 25 builds that may be of interest: - JDK-8353118: Deprecate the use of `java.locale.useOldISOCodes` system property - JDK-8351435: Change the default Console implementation back to the built-in one in `java.base` module - JDK-8350459: MontgomeryIntegerPolynomialP256 multiply intrinsic with AVX2 on x86_64 - JDK-8349583: Add mechanism to disable signature schemes based on their TLS scope - JDK-8338675: javac shouldn't silently change .jar files on the classpath - JDK-8319447: Improve performance of delayed task handling - JDK-8341775: Duplicate manifest files are removed by jarsigner after signing - JDK-8303770: Remove Baltimore root certificate expiring in May 2025 - JDK-8346948: Update CLDR to Version 47.0 - JDK-8348829: Remove ObjectMonitor perf counters - JDK-8164714: Constructor.newInstance creates instance of inner class with null outer class - JDK-8352716: (tz) Update Timezone Data to 2025b - JDK-8347946: Add API note that caller should validate/trust signers to the getCertificates and getCodeSigners methods of JarEntry and JarURLConnection - JDK-8345213: JVM Prefers /etc/timezone Over /etc/localtime on Debian 12 - JDK-8350646: Calendar.Builder.build() Throws ArrayIndexOutOfBoundsException - JDK-8347433: Deprecate XML interchange in java.management/javax/management/modelmbean/DescriptorSupport for removal - JDK-8328119: Support HKDF in SunPKCS11 (Preview) - JDK-8327378: XMLStreamReader throws EOFException instead of XMLStreamException - JDK-8024695: new File("").exists() returns false whereas it is the current working directory - JDK-8351224: Deprecate com.sun.tools.attach.AttachPermission for removal - JDK-8351310: Deprecate com.sun.jdi.JDIPermission for removal - JDK-8348561: Add aarch64 intrinsics for ML-DSA - JDK-8351266: JFR: -XX:StartFlightRecording:report-on-exit - JDK-8350638: Make keyboard navigation more usable in API docs - JDK-8350464: The flags to set the native priority for the VMThread and Java threads need a broader range - JDK-8349860: Make Class.isArray(), Class.isInterface() and Class.isPrimitive() non-native - JDK-8347335: ZGC: Use limitless mark stack memory - JDK-8348596: Update FreeType to 2.13.3 Note: A more exhaustive list of changes can be found here [7]. [5] https://jdk.java.net/25/ [6] https://jdk.java.net/25/release-notes [7] https://github.com/openjdk/jdk/compare/jdk-25+10...jdk-25+17 # JavaFX 25 Early-Access Builds These are early access builds of the JavaFX 25 Runtime built from openjdk/jfx [8]. These builds enable JavaFX application developers to build and test their applications with JavaFX 25 on JDK 25. Although these builds are designed to work with JDK 25-EA builds, they are also known to work with JDK 22 and later versions. The latest early access builds of JavaFX 25 Builds 11 (2025/4/4) are now available [9], under the GNU General Public License, version 2, with the Classpath Exception. JavaFX 25 API Javadocs [10] are available too. [8] https://github.com/openjdk/jfx [9] https://jdk.java.net/javafx25/ [10] https://download.java.net/java/early_access/javafx25/docs/api/overview-summary.html # Topics of Interest - The Arrival of Java 24 https://blogs.oracle.com/java/post/the-arrival-of-java-24 - Performance Improvements in JDK 24 https://inside.java/2025/03/19/performance-improvements-in-jdk24/ - Java 24 - Better Language, Better APIs, Better Runtime https://inside.java/2025/03/01/jfokus-better-jdk24/ - JDK 24 Release Notes Overview - Security Update https://inside.java/2025/04/05/java-24-security-notes/ - JDK 24 Release Notes Review for Developers https://inside.java/2025/03/13/newscast-87/ - JDK 24 Release Notes Overview for Operations https://inside.java/2025/03/29/java-24-for-ops/ - JDK 24 G1/Parallel/Serial GC Changes https://tschatzl.github.io/2025/04/01/jdk24-g1-serial-parallel-gc-changes.html - Scoped Values in Java 24 https://inside.java/2025/02/27/newscast-86/ - Stable Values in Java 25 https://inside.java/2025/03/27/newscast-88/ - New Write Barriers for G1 http://tschatzl.github.io/2025/02/21/new-write-barriers.html - SuperWord (Auto-Vectorization) - Scheduling https://eme64.github.io/blog/2023/05/16/SuperWord-Scheduling.html ~ That's it for this time. Feel free to reach out if you encounter any issues while testing your project(s) with the latest JDK early-access builds. --David |
From: Andreas D. <and...@pm...> - 2025-03-28 09:04:32
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.12.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.12.0/ 28-March-2025 - 7.12.0 The PMD team is pleased to announce PMD 7.12.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#new-and-noteworthy> o β¨ New Rules <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#api-changes> o Deprecations <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#deprecations> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/03/pmd-7120-28-march-2025-released/#stats> π New and noteworthy β¨ New Rules * The new Java rule |ImplicitFunctionalInterface| <https://docs.pmd-code.org/pmd-doc-7.12.0/pmd_rules_java_bestpractices.html#implicitfunctionalinterface> reports functional interfaces that were not explicitly declared as such with the annotation |@FunctionalInterface|. If an interface is accidentally a functional interface, then it should bear a |@SuppressWarnings("PMD.ImplicitFunctionalInterface")| annotation to make this clear. π Fixed Issues * core * #5593 <https://github.com/pmd/pmd/issues/5593>: [core] Make renderers output files in deterministic order even when multithreaded * apex * #5567 <https://github.com/pmd/pmd/issues/5567>: [apex] Provide type information for CastExpression * apex-design * #5616 <https://github.com/pmd/pmd/issues/5616>: [apex] ExcessiveParameterList reports entire method instead of signature only * java * #5587 <https://github.com/pmd/pmd/issues/5587>: [java] Thread deadlock during PMD analysis in ParseLock.getFinalStatus * java-bestpractices * #2849 <https://github.com/pmd/pmd/issues/2849>: [java] New Rule: ImplicitFunctionalInterface * #5369 <https://github.com/pmd/pmd/issues/5369>: [java] UnusedPrivateMethod false positives with lombok.val * #5590 <https://github.com/pmd/pmd/issues/5590>: [java] LiteralsFirstInComparisonsRule not applied on constant * #5592 <https://github.com/pmd/pmd/issues/5592>: [java] UnusedAssignment false positive in record compact constructor * java-codestyle * #5079 <https://github.com/pmd/pmd/issues/5079>: [java] LocalVariableCouldBeFinal false-positive with lombok.val * #5452 <https://github.com/pmd/pmd/issues/5452>: [java] PackageCase: Suppression comment has no effect due to finding at wrong position in case of JavaDoc comment * plsql * #4441 <https://github.com/pmd/pmd/issues/4441>: [plsql] Parsing exception with XMLQUERY function in SELECT * #5521 <https://github.com/pmd/pmd/issues/5521>: [plsql] Long parse time and eventually parse error with XMLAGG order by clause π¨ API Changes Deprecations * java * The method |buildConstValue| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/ast/AbstractJavaExpr.html#buildConstValue()> is deprecated for removal. It should have been package-private from the start. In order to get the (compile time) const value of an expression, use |getConstValue| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/ast/ASTExpression.html#getConstValue()> or |getConstFoldingResult| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/ast/ASTExpression.html#getConstFoldingResult()> instead. * For the same reason, the following methods are also deprecated for removal: |buildConstValue| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/ast/ASTNumericLiteral.html#buildConstValue()> and |buildConstValue| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/ast/ASTStringLiteral.html#buildConstValue()>. * |JTypeVar#withUpperbound| <https://docs.pmd-code.org/apidocs/pmd-java/7.12.0/net/sourceforge/pmd/lang/java/types/JTypeVar.html#withUpperbound(net.sourceforge.pmd.types.JTypeMirror)> is deprecated. It was previously meant to be used internally and not needed anymore. β¨ Merged pull requests * #5550 <https://github.com/pmd/pmd/pull/5550>: Fix #5521: [plsql] Improve parser performance by reducing lookaheads - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5554 <https://github.com/pmd/pmd/pull/5554>: Fix #5369: [java] Consider that lombok.val and var are inferred - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5555 <https://github.com/pmd/pmd/pull/5555>: Fix #2849: [java] Add rule ImplicitFunctionalInterface - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5556 <https://github.com/pmd/pmd/pull/5556>: [ci] New workflow "Publish Results from Pull Requests" - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5574 <https://github.com/pmd/pmd/pull/5574>: Fix #5567: [apex] Provide type info for CastExpression - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5583 <https://github.com/pmd/pmd/pull/5583>: [java] Fix race condition in ClassStub for inner classes - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5586 <https://github.com/pmd/pmd/pull/5586>: [java/core] Micro optimizations - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5588 <https://github.com/pmd/pmd/pull/5588>: [java] Fix crash when parsing class for anonymous class - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5591 <https://github.com/pmd/pmd/pull/5591>: Fix #5587: [java] Fix deadlock while loading ClassStub - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5593 <https://github.com/pmd/pmd/pull/5593>: [core] Make renderers output files in deterministic order even when multithreaded - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5595 <https://github.com/pmd/pmd/pull/5595>: Fix #5590: [java] LiteralsFirstInComparisons with constant field - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5596 <https://github.com/pmd/pmd/pull/5596>: Fix #4441: [plsql] XMLQuery - Support identifier as XQuery_string parameter - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5598 <https://github.com/pmd/pmd/pull/5598>: Fix #5592: [java] Fix UnusedAssignment FP with compact record ctor - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5600 <https://github.com/pmd/pmd/pull/5600>: Fix #5079: [java] LocalVariableCouldBeFinal false-positive with lombok.val - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5611 <https://github.com/pmd/pmd/pull/5611>: Fix #5452: [java] PackageCase reported on wrong line - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5617 <https://github.com/pmd/pmd/pull/5617>: Fix #5616: [apex] ExcessiveParameterList: Report only method signature - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5618 <https://github.com/pmd/pmd/pull/5618>: [doc] Fix search index - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) π¦ Dependency updates * #5558 <https://github.com/pmd/pmd/pull/5558>: Bump PMD from 7.10.0 to 7.11.0 * #5561 <https://github.com/pmd/pmd/pull/5561>: Bump org.apache.groovy:groovy from 4.0.25 to 4.0.26 * #5562 <https://github.com/pmd/pmd/pull/5562>: Bump org.junit.platform:junit-platform-suite from 1.11.4 to 1.12.0 * #5564 <https://github.com/pmd/pmd/pull/5564>: Bump org.apache.maven.plugins:maven-clean-plugin from 3.4.0 to 3.4.1 * #5565 <https://github.com/pmd/pmd/pull/5565>: Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.3 to 3.1.4 * #5566 <https://github.com/pmd/pmd/pull/5566>: Bump io.github.apex-dev-tools:apex-ls_2.13 from 5.7.0 to 5.8.0 * #5571 <https://github.com/pmd/pmd/pull/5571>: Bump nokogiri from 1.16.7 to 1.18.3 * #5572 <https://github.com/pmd/pmd/pull/5572>: Bump uri from 0.13.1 to 1.0.3 * #5575 <https://github.com/pmd/pmd/pull/5575>: Bump org.jsoup:jsoup from 1.18.3 to 1.19.1 * #5576 <https://github.com/pmd/pmd/pull/5576>: Bump scalameta.version from 4.13.2 to 4.13.3 * #5577 <https://github.com/pmd/pmd/pull/5577>: Bump org.yaml:snakeyaml from 2.3 to 2.4 * #5578 <https://github.com/pmd/pmd/pull/5578>: Bump com.google.protobuf:protobuf-java from 4.29.3 to 4.30.0 * #5580 <https://github.com/pmd/pmd/pull/5580>: Bump net.bytebuddy:byte-buddy from 1.17.1 to 1.17.2 * #5581 <https://github.com/pmd/pmd/pull/5581>: Bump com.puppycrawl.tools:checkstyle from 10.21.3 to 10.21.4 * #5582 <https://github.com/pmd/pmd/pull/5582>: Bump the gems liquid to 5.8.1 and logger to 1.6.6 * #5602 <https://github.com/pmd/pmd/pull/5602>: Bump org.apache.maven.plugins:maven-install-plugin from 3.1.3 to 3.1.4 * #5603 <https://github.com/pmd/pmd/pull/5603>: Bump net.bytebuddy:byte-buddy-agent from 1.17.1 to 1.17.2 * #5604 <https://github.com/pmd/pmd/pull/5604>: Bump org.mockito:mockito-core from 5.15.2 to 5.16.1 * #5605 <https://github.com/pmd/pmd/pull/5605>: Bump org.junit.platform:junit-platform-suite from 1.12.0 to 1.12.1 * #5606 <https://github.com/pmd/pmd/pull/5606>: Bump org.checkerframework:checker-qual from 3.49.0 to 3.49.1 * #5608 <https://github.com/pmd/pmd/pull/5608>: Bump com.google.protobuf:protobuf-java from 4.30.0 to 4.30.1 * #5619 <https://github.com/pmd/pmd/pull/5619>: Bump nokogiri from 1.18.3 to 1.18.5 * #5624 <https://github.com/pmd/pmd/pull/5624>: Bump scalameta.version from 4.13.3 to 4.13.4 * #5627 <https://github.com/pmd/pmd/pull/5627>: Bump net.bytebuddy:byte-buddy-agent from 1.17.2 to 1.17.4 * #5628 <https://github.com/pmd/pmd/pull/5628>: Bump io.github.apex-dev-tools:apex-ls_2.13 from 5.8.0 to 5.9.0 * #5629 <https://github.com/pmd/pmd/pull/5629>: Bump com.google.guava:guava from 33.4.0-jre to 33.4.5-jre * #5630 <https://github.com/pmd/pmd/pull/5630>: Bump net.bytebuddy:byte-buddy from 1.17.2 to 1.17.4 π Stats * 114 commits * 28 closed tickets & PRs * Days since last release: 27 |
From: Andreas D. <and...@pm...> - 2025-02-28 11:33:16
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.11.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.11.0/ 28-February-2025 - 7.11.0 The PMD team is pleased to announce PMD 7.11.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#new-and-noteworthy> o β¨ New Rules <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#new-rules> o Signed Releases <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#signed-releases> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#api-changes> o Deprecations <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#deprecations> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/02/pmd-7110-28-february-2025-released/#stats> π New and noteworthy β¨ New Rules * The new Apex rule |AvoidStatefulDatabaseResult| <https://docs.pmd-code.org/pmd-doc-7.11.0/pmd_rules_apex_errorprone.html#avoidstatefuldatabaseresult> detects |Database.Stateful| implementations that store database results in instance variables. This can cause serialization issues between successive batch iterations. Signed Releases We now not only sign the maven artifacts, but also our binary distribution files that you can download from GitHub Releases <https://github.com/pmd/pmd/releases>. See the page Signed Releases <https://docs.pmd-code.org/latest/pmd_userdocs_signed_releases.html> in our documentation for how to verify the files. π Fixed Issues * apex-errorprone o #5305 <https://github.com/pmd/pmd/issues/5305>: [apex] New Rule: Avoid Stateful Database Results * java o #5442 <https://github.com/pmd/pmd/issues/5442>: [java] StackOverflowError with recursive generic types o #5493 <https://github.com/pmd/pmd/issues/5493>: [java] IllegalArgumentException: <?> cannot be a wildcard bound o #5505 <https://github.com/pmd/pmd/issues/5505>: [java] java.lang.StackOverflowError while executing a PmdRunnable * java-bestpractices o #3359 <https://github.com/pmd/pmd/issues/3359>: [java] UnusedPrivateMethod does not recognize Lombok @EqualsAndHashCode.Include annotation o #5486 <https://github.com/pmd/pmd/issues/5486>: [java] UnusedPrivateMethod detected when class is referenced in another class o #5504 <https://github.com/pmd/pmd/issues/5504>: [java] UnusedAssignment false-positive in for-loop with continue * java-codestyle o #4822 <https://github.com/pmd/pmd/issues/4822>: [java] UnnecessaryCast false-positive for raw types o #5073 <https://github.com/pmd/pmd/issues/5073>: [java] UnnecessaryCast false-positive for cast in return position of lambda o #5440 <https://github.com/pmd/pmd/issues/5440>: [java] UnnecessaryCast reported in stream chain map() call that casts to more generic interface o #5523 <https://github.com/pmd/pmd/issues/5523>: [java] UnnecessaryCast false-positive for integer operations in floating-point context o #5541 <https://github.com/pmd/pmd/pull/5541>: [java] Fix IdenticalCatchBranch reporting branches that call different overloads * java-design o #5018 <https://github.com/pmd/pmd/issues/5018>: [java] FinalFieldCouldBeStatic false-positive for access of super class field * plsql o #5522 <https://github.com/pmd/pmd/issues/5522>: [plsql] Parse error for operator in TRIM function call π¨ API Changes Deprecations * java * The method |TypeOps#isContextDependent(JMethodSig)| <https://docs.pmd-code.org/apidocs/pmd-java/7.11.0/net/sourceforge/pmd/lang/java/types/TypeOps.html#isContextDependent(net.sourceforge.pmd.lang.java.types.JMethodSig)> is deprecated for removal. Use |isContextDependent(JExecutableSymbol)| <https://docs.pmd-code.org/apidocs/pmd-java/7.11.0/net/sourceforge/pmd/lang/java/types/TypeOps.html#isContextDependent(net.sourceforge.pmd.lang.java.symbols.JExecutableSymbol)> instead which is more flexible. β¨ Merged pull requests * #5425 <https://github.com/pmd/pmd/pull/5425>: [apex] New Rule: Avoid Stateful Database Results - Mitch Spano <https://github.com/mitchspano> (@mitchspano) * #5491 <https://github.com/pmd/pmd/pull/5491>: [docs] Call render_release_notes.rb within docs - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5492 <https://github.com/pmd/pmd/pull/5492>: [docs] Add security page with known vulnerabilities - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5503 <https://github.com/pmd/pmd/pull/5503>: [java] AvoidSynchronizedAtMethodLevel: Fixed error in code example - Balazs Glatz <https://github.com/gbq6> (@gbq6) * #5507 <https://github.com/pmd/pmd/pull/5507>: Fix #5486: [java] Fix UnusedPrivateMethod - always search decls in current AST - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5508 <https://github.com/pmd/pmd/pull/5508>: Fix #3359: [java] UnusedPrivateMethod: Ignore lombok.EqualsAndHashCode.Include - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5510 <https://github.com/pmd/pmd/pull/5510>: [ci] Add signed releases - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5524 <https://github.com/pmd/pmd/pull/5524>: [ci] New optimized workflow for pull requests - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5526 <https://github.com/pmd/pmd/pull/5526>: Fix #5523: [java] UnnecessaryCast FP with integer division - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5527 <https://github.com/pmd/pmd/pull/5527>: Fix #5522: [plsql] Allow arbitrary expressions for TRIM - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5528 <https://github.com/pmd/pmd/pull/5528>: Fix #5442: [java] Fix stackoverflow with recursive generic types - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5529 <https://github.com/pmd/pmd/pull/5529>: Fix #5493: [java] IllegalArgumentException with wildcard bound - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5530 <https://github.com/pmd/pmd/pull/5530>: Fix #5073: [java] UnnecessaryCast FP with lambdas - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5537 <https://github.com/pmd/pmd/pull/5537>: Fix #5504: [java] UnusedAssignment FP with continue in foreach loop - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5538 <https://github.com/pmd/pmd/pull/5538>: Add project icon for IntelliJ IDEA - Vincent Potucek <https://github.com/pankratz227> (@pankratz227) * #5539 <https://github.com/pmd/pmd/pull/5539>: [plsql] Add OracleDBUtils as regression testing project - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5541 <https://github.com/pmd/pmd/pull/5541>: [java] Fix IdenticalCatchBranch reporting branches that call different overloads - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5542 <https://github.com/pmd/pmd/pull/5542>: Add GitHub issue links in IDEA git log - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5544 <https://github.com/pmd/pmd/pull/5544>: [javacc] Move grammar files into src/main/javacc - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5551 <https://github.com/pmd/pmd/pull/5551>: [doc] Update contributors for 7.11.0 - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5552 <https://github.com/pmd/pmd/pull/5552>: Fix #4822: [java] UnnecessaryCast FP with unchecked cast - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5553 <https://github.com/pmd/pmd/pull/5553>: Fix #5018: [java] FinalFieldCouldBeStatic FP with super field access - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) π¦ Dependency updates * #5490 <https://github.com/pmd/pmd/pull/5490>: Bump PMD from 7.9.0 to 7.10.0 * #5494 <https://github.com/pmd/pmd/pull/5494>: Bump liquid from 5.7.1 to 5.7.2 in the all-gems group across 1 directory * #5497 <https://github.com/pmd/pmd/pull/5497>: Bump net.bytebuddy:byte-buddy-agent from 1.16.1 to 1.17.0 * #5498 <https://github.com/pmd/pmd/pull/5498>: Bump org.assertj:assertj-core from 3.25.3 to 3.27.3 * #5499 <https://github.com/pmd/pmd/pull/5499>: Bump org.mockito:mockito-core from 5.14.2 to 5.15.2 * #5500 <https://github.com/pmd/pmd/pull/5500>: Bump org.junit:junit-bom from 5.11.2 to 5.11.4 * #5501 <https://github.com/pmd/pmd/pull/5501>: Bump org.scala-lang:scala-reflect from 2.13.15 to 2.13.16 * #5516 <https://github.com/pmd/pmd/pull/5516>: Bump org.jetbrains:annotations from 26.0.1 to 26.0.2 * #5517 <https://github.com/pmd/pmd/pull/5517>: Bump net.bytebuddy:byte-buddy from 1.15.11 to 1.17.0 * #5518 <https://github.com/pmd/pmd/pull/5518>: Bump org.junit.platform:junit-platform-suite from 1.11.3 to 1.11.4 * #5519 <https://github.com/pmd/pmd/pull/5519>: Bump org.checkerframework:checker-qual from 3.48.3 to 3.49.0 * #5520 <https://github.com/pmd/pmd/pull/5520>: Bump com.google.guava:guava from 33.0.0-jre to 33.4.0-jre * #5532 <https://github.com/pmd/pmd/pull/5532>: Bump net.bytebuddy:byte-buddy-agent from 1.17.0 to 1.17.1 * #5533 <https://github.com/pmd/pmd/pull/5533>: Bump log4j.version from 2.24.2 to 2.24.3 * #5534 <https://github.com/pmd/pmd/pull/5534>: Bump com.google.code.gson:gson from 2.11.0 to 2.12.1 * #5535 <https://github.com/pmd/pmd/pull/5535>: Bump scalameta.version from 4.12.7 to 4.13.1.1 * #5536 <https://github.com/pmd/pmd/pull/5536>: Bump org.apache.groovy:groovy from 4.0.24 to 4.0.25 * #5545 <https://github.com/pmd/pmd/pull/5545>: Bump commons-logging:commons-logging from 1.3.4 to 1.3.5 * #5546 <https://github.com/pmd/pmd/pull/5546>: Bump scalameta.version from 4.13.1.1 to 4.13.2 * #5547 <https://github.com/pmd/pmd/pull/5547>: Bump net.bytebuddy:byte-buddy from 1.17.0 to 1.17.1 * #5548 <https://github.com/pmd/pmd/pull/5548>: Bump com.puppycrawl.tools:checkstyle from 10.21.2 to 10.21.3 * #5549 <https://github.com/pmd/pmd/pull/5549>: Bump org.apache.maven.plugins:maven-compiler-plugin from 3.13.0 to 3.14.0 π Stats * 97 commits * 35 closed tickets & PRs * Days since last release: 28 |
From: David D. <dav...@or...> - 2025-02-11 16:00:22
|
Welcome to the first OpenJDK Quality Outreach update of 2025! The first Release Candidate builds of JDK 24 are now available [1] and tt this stage, only P1 issues will be evaluated. With the JDK 24 General Availability set for March 18th, the attention is now turning to JDK 25. JDK 24 will officially launch at JavaOne in Redwood Shores, CA [2]. If you're attending or planning to attend JavaOne, please reach out as Iβm planning a Quality Outreach gathering. To conclude, make sure to take a look at the heads-up below. [1] https://jdk.java.net/24/ [2] https://javaone.com/ # Heads-up - JDK 24: Remote Debugging with `jstat` and `jhsdb` is Deprecated for Removal Java's Remote Method Invocation (RMI), introduced in 1997, enables remote procedure calls between different JVMs. RMI relies on serialization to encode objects into byte streams when sending them as arguments and return values between JVMs. Both technologies have long-term security issues and configuration challenges, and they haven't withstood the test of time. Today, the broader ecosystem has moved away from RMI in favor of more web-friendly protocols, and as a result, Java is also gradually reducing and eliminating its dependencies on it where possilbe. Among other tools, Java offers these two tools to connect to a local HotSpot JVM and observe or debug it as well as the program it executes: - `jstat` reads performance counters - `jhsdb` provides snapshot debugging and analysis features Both `jstat` and `jhsdb` offer remote capabilities, which are implemented using RMI. Due to the aforementioned effort to reduce dependencies on RMI, the remote capabilities of `jstat` and `jhsdb` are deprecated for removal in JDK 24: - JDK-8327793 [3]: `jstatd` allows remote connections with jstat - JDK-8338894 [4]: `jhsdb debugd` (allows remote connections with `jhsdb`) as well as the `--connect` option of the `jhsdb` subcommands `hsdb` and `clhsdb` Please note that `jstat` and `jhsdb`'s capabilities for local use remain available and there are no plans to change that. It should also be mentionned that JFR (JDK Flight Recorder) offers a modern alternative for getting remote insights into a running HotSpot JVM. Questions or feedback on these deprecations can be directed at the serviceability-dev mailing list [5] (subscription required). [3] https://bugs.openjdk.org/browse/JDK-8327793 [4] https://bugs.openjdk.org/browse/JDK-8338894 [5] https://mail.openjdk.org/mailman/listinfo/serviceability-dev # Heads-up - JDK 25: Proposal to Deprecate for Removal `-UseCompressedClassPointers` ## Reducing Code and Test Complexity Shortly after the adoption of 64-bit architectures the `-XX:[-|+]UseCompressedClassPointers` and `-XX:[-|+]UseCompressedOops` arguments were added to provide Java users the ability to enable using 32-bit references even when on a 64-bit architecture. This reduces memory overhead and helps reduce cache misses. You can read more about this here [6]. Removing the `-UseCompressedClassPointers` option would make `+UseCompressedClassPointers` the default case and reduce the number of configurations that would need to be supported from three to two (`+UseCompressedClassPointers` and `+UseCompactObjectHeaders`). This would also significantly reduce code complexity as well as testing effort. Along with this, `-UseCompressedClassPointers` does not work well in a 64-bit architecture as can be seen here [7], itβs suspected there are many more examples. ## Minimal Benefit The `-UseCompressedClassPointers` use rarely provides any tangible benefit to Java users. Any historical connection with the `-UseCompresseedOops`flag has long since been removed, and the net result of using `-UseCompressedClassPointers` is simply increased memory overhead. ## Reasons to Keep `-UseCompressedClassPointers` There are currently two reasons to continue supporting `-UseCompressedClassPointers`: - `-UseCompressedClassPointers` works well in 32-bit operating systems. However support for 32-bit operating systems is on its way out with JEP 479: 'Remove the Windows 32-bit x86 Port' [8] and JEP 501: 'Deprecate the 32-bit x86 Port for Removal' [9] which are both in forthcoming JDK 24. - In cases where more than 5 million classes are loaded. However such cases are rare, likely the result of programmer error, and would also mean loading likely tens of GBs of non-class data into metaspace as well. For more on this topic, check this thread [10] on the hotspot-dev mailing list. The engineers working on this are considering marking `-UseCompressedClassPointers` as deprecated for removal in JDK 25 and are looking for feedback on the impact this could have. Please direct questions and feedback to the lilliput-dev [11] mailing list (registration required). [6] https://stuefe.de/posts/metaspace/what-is-compressed-class-space/ [7] https://github.com/openjdk/jdk/pull/23053 [8] https://openjdk.org/jeps/479 [9] https://openjdk.org/jeps/501 [10] https://mail.openjdk.org/pipermail/hotspot-dev/2025-February/101023.html [11] https://mail.openjdk.org/pipermail/lilliput-dev/ # Heads-Up - Distrust New TLS Server Certificates Issued by Camerfirma Root Certificates The Java Cryptographic Roadmap has been updated to reflect how the JDK will stop trusting new TLS server certificates issued by Camerfirma, aligning with similar actions taken by Apple, Google, Microsoft, and Mozilla. In short, TLS Server certificates issued on or before April 15, 2025 will continue to be trusted until they expire while new certificates issued after that date will be rejected. JDK 24 will be one of the many versions affected by this change. For more details, please check the latest Java Cryptographic Roadmap [12]. [12] https://www.java.com/en/jre-jdk-cryptoroadmap.html # Heads-Up - JavaFX Metal Early-Access builds Early access builds of JavaFX that implement the new macOS Metal graphics rendering pipeline are now available [13]. These EA builds are provided as a convenience, so users don't have to build from the "metal" branch of the openjdk/jfx-sandbox repository [14]. The goal of these early access builds is to gather feedback as the team works on incorporating this feature into JavaFX. Feedback can be reported to the openjfx-dev mailing list [15] (subscription required). These builds are based on an incomplete version of JavaFX 25. Moreover, the initial JavaFX 25 early-access builds are now also available [16]. [13] https://jdk.java.net/javafxmetal/ [14] https://github.com/openjdk/jfx-sandbox/tree/metal [15] https://mail.openjdk.org/pipermail/openjfx-dev/ [16] https://jdk.java.net/javafx25/ # JDK 24 Release Candidates The JDK 24 Release Candidate builds (builds 36) are available [17] and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [18], and the javadocs here [19]. [17] https://jdk.java.net/24/ [18] https://jdk.java.net/24/release-notes [19] https://download.java.net/java/early_access/jdk24/docs/api/ # JDK 25 Early-Access Builds The JDK 25 early-access builds 9 are now available [20] and are provided under the GNU General Public License v2, with the Classpath Exception. The initial Release Notes are available here [21]. ## Changes in recent JDK 25 builds that may be of interest: - JDK-8347949: Currency method to stream available Currencies - JDK-8344168: Change Unsafe base offset from int to long - JDK-8347506: Compatible OCSP readtimeout property with OCSP timeout - JDK-8346587: Distrust TLS server certificates anchored by Camerfirma Root CAs - JDK-8345045: Remove the jmx.remote.x.buffer.size JMX notification property - JDK-8345049: Remove the jmx.tabular.data.hash.map compatibility property - JDK-8344976: Remove the jmx.invoke.getters compatibility property - JDK-8345048: Remove the jmx.extend.open.types compatibility property - JDK-8328919: Add BodyHandlers / BodySubscribers methods to handle excessive server input - JDK-8344966: Remove the allowNonPublic MBean compatibility property - JDK-8347596: Update HSS/LMS public key encoding - JDK-8283795: Add TLSv1.3 and CNSA 1.0 algorithms to implementation requirements - JDK-8225763: Inflater and Deflater should implement AutoCloseable - JDK-8345432: (ch, fs) Replace anonymous Thread with InnocuousThread - JDK-8345259: Disallow ALL-MODULE-PATH without explicit --module-path - JDK-8344137: Update XML Security for Java to 3.0.5 - JDK-8334581: Remove no-arg constructor BasicSliderUI() - JDK-8335428: `ProcessBuilder` on Windows Quotes Argument Strings Containing Any Space Character - JDK-8287788: Implement a better allocator for downcalls - JDK-8347965: (tz) Update Timezone Data to 2025a Note: A complete list of changes can be found here [22]. [20] https://jdk.java.net/25/ [21] https://jdk.java.net/25/release-notes [22] https://github.com/openjdk/jdk/compare/jdk-25+1...jdk-25+9 # Topics of Interest Java Language Evolution in 2025 https://inside.java/2025/01/30/newscast-84/ Java's Plans for 2025 https://inside.java/2025/01/16/newscast-83/ A Deep Dive into JVM Start-up https://inside.java/2025/01/28/jvm-start-up/ Modern Java Deep Dive https://inside.java/2025/02/09/devoxxbelgium-modern-java-deepdive/ Java Performance Update https://inside.java/2025/01/26/devoxxbelgium-java-perfromance-update/ Podcast - βDoc, JavaDoc and Markdownβ with Jonathan Gibbons https://inside.java/2025/01/21/podcast-034/ Evolution of Java Ecosystem for Integrating AI https://inside.java/2025/01/29/evolution-of-java-ecosystem-for-integrating-ai/ Peaceful and Bright Future of Integrity by Default in Java https://inside.java/2025/01/03/evolving-default-integrity/ James Gosling on Java - Historical Oddities & Persistent Itches #JVMLS https://inside.java/2024/12/28/jvmls-jamesgosling/ ~ Iβd like to thank everyone who has already provided feedback on the JDK 25 builds. Your input is incredibly valuable, especially when received early in the development cycle. And if you encounter any issues, please ping me. Hope to see some of you at JavaOne! --David |
From: Andreas D. <and...@pm...> - 2025-01-31 10:32:34
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.10.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.10.0/ 31-January-2025 - 7.10.0 The PMD team is pleased to announce PMD 7.10.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#new-and-noteworthy> o π New: Java 24 Support <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#new-java-24-support> o New GPG Release Signing Key <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#new-gpg-release-signing-key> o Updated PMD Designer <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#updated-pmd-designer> * π New and changed rules <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#new-and-changed-rules> o New Rules <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#api-changes> o Removed Experimental API <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#removed-experimental-api> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2025/01/pmd-7100-31-january-2025-released/#stats> π New and noteworthy π New: Java 24 Support This release of PMD brings support for Java 24. There are no new standard language features, but a couple of preview language features: * JEP 488: Primitive Types in Patterns, instanceof, and switch (Second Preview) <https://openjdk.org/jeps/488> * JEP 492: Flexible Constructor Bodies (Third Preview) <https://openjdk.org/jeps/492> * JEP 494: Module Import Declarations (Second Preview) <https://openjdk.org/jeps/494> * JEP 495: Simple Source Files and Instance Main Methods (Fourth Preview) <https://openjdk.org/jeps/495> In order to analyze a project with PMD that uses these preview language features, you'll need to enable it via the environment variable |PMD_JAVA_OPTS| and select the new language version |24-preview|: |exportPMD_JAVA_OPTS=--enable-preview pmdcheck--use-versionjava-24-preview... | Note: Support for Java 22 preview language features have been removed. The version "22-preview" is no longer available. New GPG Release Signing Key Since January 2025, we switched the GPG Key we use for signing releases in Maven Central to be A0B5CA1A4E086838 <https://keyserver.ubuntu.com/pks/lookup?search=0x2EFA55D0785C31F956F2F87EA0B5CA1A4E086838&fingerprint=on&op=index>. The full fingerprint is |2EFA 55D0 785C 31F9 56F2 F87E A0B5 CA1A 4E08 6838|. This step was necessary, as the passphrase of the old key has been compromised and therefore the key is not safe to use anymore. While the key itself is not compromised as far as we know, we still decided to generate a new key, just to be safe. As until now (January 2025) we are not aware, that the key actually has been misused. The previous releases of PMD in Maven Central can still be considered untampered, as Maven Central is read-only. This unexpected issue was discovered while checking Reproducible Builds <https://reproducible-builds.org/> by a third party. The security advisory about the compromised passphrase is tracked as GHSA-88m4-h43f-wx84 <https://github.com/pmd/pmd/security/advisories/GHSA-88m4-h43f-wx84> and CVE-2025-23215 <https://www.cve.org/CVERecord?id=CVE-2025-23215>. Updated PMD Designer This PMD release ships a new version of the pmd-designer. For the changes, see PMD Designer Changelog (7.10.0) <https://github.com/pmd/pmd-designer/releases/tag/7.10.0>. π New and changed rules New Rules * The new Java rule |ExhaustiveSwitchHasDefault| <https://docs.pmd-code.org/pmd-doc-7.10.0/pmd_rules_java_bestpractices.html#exhaustiveswitchhasdefault> finds switch statements and expressions, that cover already all cases but still have a default case. This default case is unnecessary and prevents getting compiler errors when e.g. new enum constants are added without extending the switch. π Fixed Issues * apex * #5388 <https://github.com/pmd/pmd/issues/5388>: [apex] Parse error with time literal in SOQL query * #5456 <https://github.com/pmd/pmd/issues/5456>: [apex] Issue with java dependency apex-parser-4.3.1 but apex-parser-4.3.0 works * apex-security * #3158 <https://github.com/pmd/pmd/issues/3158>: [apex] ApexSuggestUsingNamedCred false positive with Named Credential merge fields * documentation * #2492 <https://github.com/pmd/pmd/issues/2492>: [doc] Promote wiki pages to standard doc pages * java * #5154 <https://github.com/pmd/pmd/issues/5154>: [java] Support Java 24 * java-performance * #5311 <https://github.com/pmd/pmd/issues/5311>: [java] TooFewBranchesForSwitch false positive for exhaustive switches over enums without default case π¨ API Changes Removed Experimental API * pmd-java * |net.sourceforge.pmd.lang.java.ast.ASTTemplate|, |net.sourceforge.pmd.lang.java.ast.ASTTemplateExpression|, |net.sourceforge.pmd.lang.java.ast.ASTTemplateFragment|: These nodes were introduced with Java 21 and 22 Preview to support String Templates. However, the String Template preview feature was not finalized and has been removed from Java for now. We now cleaned up the PMD implementation of it. β¨ Merged pull requests * #5327 <https://github.com/pmd/pmd/pull/5327>: [apex] Update apex-parser and summit-ast - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5412 <https://github.com/pmd/pmd/pull/5412>: [java] Support exhaustive switches - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5449 <https://github.com/pmd/pmd/pull/5449>: Use new gpg key (A0B5CA1A4E086838) - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5458 <https://github.com/pmd/pmd/pull/5458>: [doc] Move Wiki pages into main documentation, cleanups - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5471 <https://github.com/pmd/pmd/pull/5471>: [java] Support Java 24 - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5488 <https://github.com/pmd/pmd/pull/5488>: [apex] Fix #3158: Recognize Named Credentials merge fields in ApexSuggestUsingNamedCredRule - William Brockhus <https://github.com/YodaDaCoda> (@YodaDaCoda) π¦ Dependency updates * #5423 <https://github.com/pmd/pmd/pull/5423>: Bump PMD from 7.8.0 to 7.9.0 * #5433 <https://github.com/pmd/pmd/pull/5433>: Bump org.codehaus.mojo:exec-maven-plugin from 3.2.0 to 3.5.0 * #5434 <https://github.com/pmd/pmd/pull/5434>: Bump commons-logging:commons-logging from 1.3.0 to 1.3.4 * #5435 <https://github.com/pmd/pmd/pull/5435>: Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.4.1 to 3.5.0 * #5436 <https://github.com/pmd/pmd/pull/5436>: Bump the all-gems group across 2 directories with 1 update * #5445 <https://github.com/pmd/pmd/pull/5445>: Bump org.junit.platform:junit-platform-commons from 1.11.2 to 1.11.4 * #5446 <https://github.com/pmd/pmd/pull/5446>: Bump org.sonarsource.scanner.maven:sonar-maven-plugin from 3.10.0.2594 to 5.0.0.4389 * #5459 <https://github.com/pmd/pmd/pull/5459>: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.1.0 to 3.2.7 * #5460 <https://github.com/pmd/pmd/pull/5460>: Bump org.apache.commons:commons-text from 1.12.0 to 1.13.0 * #5461 <https://github.com/pmd/pmd/pull/5461>: Bump com.google.protobuf:protobuf-java from 4.29.1 to 4.29.3 * #5472 <https://github.com/pmd/pmd/pull/5472>: Bump net.bytebuddy:byte-buddy-agent from 1.15.11 to 1.16.1 * #5473 <https://github.com/pmd/pmd/pull/5473>: Bump org.sonatype.plugins:nexus-staging-maven-plugin from 1.6.13 to 1.7.0 * #5474 <https://github.com/pmd/pmd/pull/5474>: Bump com.github.siom79.japicmp:japicmp-maven-plugin from 0.23.0 to 0.23.1 * #5475 <https://github.com/pmd/pmd/pull/5475>: Bump liquid from 5.6.0 to 5.7.0 in the all-gems group across 1 directory * #5479 <https://github.com/pmd/pmd/pull/5479>: Bump pmd-designer from 7.2.0 to 7.10.0 * #5480 <https://github.com/pmd/pmd/pull/5480>: Bump scalameta.version from 4.9.1 to 4.12.7 * #5481 <https://github.com/pmd/pmd/pull/5481>: Bump liquid from 5.7.0 to 5.7.1 in the all-gems group across 1 directory * #5482 <https://github.com/pmd/pmd/pull/5482>: Bump org.codehaus.mojo:versions-maven-plugin from 2.17.1 to 2.18.0 * #5483 <https://github.com/pmd/pmd/pull/5483>: Bump org.jetbrains.dokka:dokka-maven-plugin from 1.9.20 to 2.0.0 * #5484 <https://github.com/pmd/pmd/pull/5484>: Bump com.github.hazendaz.maven:coveralls-maven-plugin from 4.5.0-M5 to 4.5.0-M6 * #5485 <https://github.com/pmd/pmd/pull/5485>: Bump com.puppycrawl.tools:checkstyle from 10.20.2 to 10.21.2 π Stats * 70 commits * 13 closed tickets & PRs * Days since last release: 34 |
From: Andreas D. <and...@pm...> - 2024-12-27 13:56:15
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.9.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.9.0/ 27-December-2024 - 7.9.0 The PMD team is pleased to announce PMD 7.9.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#new-and-noteworthy> o New: CPD support for Rust <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#new-cpd-support-for-rust> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#api-changes> o Experimental API <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#experimental-api> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2024/12/pmd-790-27-december-2024-released/#stats> π New and noteworthy New: CPD support for Rust CPD now supports Rust, a blazingly fast and memory-efficient programming language. It is shipped in the new module |pmd-rust|. π Fixed Issues * cli * #5399 <https://github.com/pmd/pmd/issues/5399>: [cli] Windows: PMD fails to start with special characters in path names * #5401 <https://github.com/pmd/pmd/issues/5401>: [cli] Windows: Console output doesn't use unicode * java * #5096 <https://github.com/pmd/pmd/issues/5096>: [java] StackOverflowError with recursively bound type variable * java-bestpractices * #4861 <https://github.com/pmd/pmd/issues/4861>: [java] UnusedPrivateMethod - false positive with static methods in core JDK classes * java-documentation * #2996 <https://github.com/pmd/pmd/issues/2996>: [java] CommentSize rule violation is not suppressed at method level π¨ API Changes Experimental API * pmd-core: |RuleContext#addViolationWithPosition| <https://docs.pmd-code.org/apidocs/pmd-core/7.9.0/net/sourceforge/pmd/reporting/RuleContext.html#addViolationWithPosition(net.sourceforge.pmd.reporting.Reportable,net.sourceforge.pmd.lang.ast.AstInfo,net.sourceforge.pmd.lang.document.FileLocation,java.lang.String,java.lang.Object...)> β¨ Merged pull requests * #4939 <https://github.com/pmd/pmd/pull/4939>: [java] Fix #2996 - CommentSize/CommentContent suppression - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5376 <https://github.com/pmd/pmd/pull/5376>: [java] Fix #4861 - UnusedPrivateMethod FP in JDK classes - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5387 <https://github.com/pmd/pmd/pull/5387>: [java] Fix #5096 - StackOverflowError with recursively bounded tvar - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5400 <https://github.com/pmd/pmd/pull/5400>: Fix #5399: [cli] pmd.bat: Quote all variables when using SET - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5402 <https://github.com/pmd/pmd/pull/5402>: Fix #5401: [cli] pmd.bat: set codepage to 65001 (UTF-8) - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5404 <https://github.com/pmd/pmd/pull/5404>: [doc] Update tools / integrations / ide plugins / news pages - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5414 <https://github.com/pmd/pmd/pull/5414>: Add Rust CPD - Julia Paluch <https://github.com/juliapaluch> (@juliapaluch) π¦ Dependency updates * #5375 <https://github.com/pmd/pmd/pull/5375>: Bump pmd from 7.7.0 to 7.8.0 * #5377 <https://github.com/pmd/pmd/pull/5377>: Bump com.puppycrawl.tools:checkstyle from 10.20.1 to 10.20.2 * #5378 <https://github.com/pmd/pmd/pull/5378>: Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.15.10 * #5379 <https://github.com/pmd/pmd/pull/5379>: Bump io.github.git-commit-id:git-commit-id-maven-plugin from 7.0.0 to 9.0.1 * #5380 <https://github.com/pmd/pmd/pull/5380>: Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.6.0 * #5384 <https://github.com/pmd/pmd/pull/5384>: Bump org.apache.groovy:groovy from 4.0.19 to 4.0.24 * #5390 <https://github.com/pmd/pmd/pull/5390>: Bump com.google.protobuf:protobuf-java from 4.28.2 to 4.29.1 * #5391 <https://github.com/pmd/pmd/pull/5391>: Bump org.hamcrest:hamcrest from 2.2 to 3.0 * #5392 <https://github.com/pmd/pmd/pull/5392>: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.5.0 to 3.6.0 * #5393 <https://github.com/pmd/pmd/pull/5393>: Bump org.jsoup:jsoup from 1.17.2 to 1.18.3 * #5394 <https://github.com/pmd/pmd/pull/5394>: Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.2 * #5395 <https://github.com/pmd/pmd/pull/5395>: Bump webrick from 1.9.0 to 1.9.1 in /docs in the all-gems group across 1 directory * #5405 <https://github.com/pmd/pmd/pull/5405>: Bump org.yaml:snakeyaml from 2.2 to 2.3 * #5406 <https://github.com/pmd/pmd/pull/5406>: Bump io.github.apex-dev-tools:apex-ls_2.13 from 5.5.0 to 5.7.0 * #5407 <https://github.com/pmd/pmd/pull/5407>: Bump net.bytebuddy:byte-buddy-agent from 1.14.19 to 1.15.11 * #5409 <https://github.com/pmd/pmd/pull/5409>: Bump net.bytebuddy:byte-buddy from 1.15.10 to 1.15.11 * #5410 <https://github.com/pmd/pmd/pull/5410>: Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.3 to 3.11.2 * #5411 <https://github.com/pmd/pmd/pull/5411>: Bump csv from 3.3.0 to 3.3.1 in /docs in the all-gems group across 1 directory * #5417 <https://github.com/pmd/pmd/pull/5417>: Bump org.cyclonedx:cyclonedx-maven-plugin from 2.7.11 to 2.9.1 * #5418 <https://github.com/pmd/pmd/pull/5418>: Bump org.checkerframework:checker-qual from 3.48.1 to 3.48.3 * #5419 <https://github.com/pmd/pmd/pull/5419>: Bump org.apache.maven.plugins:maven-checkstyle-plugin from 3.5.0 to 3.6.0 * #5422 <https://github.com/pmd/pmd/pull/5422>: Bump the all-gems group across 2 directories with 2 updates π Stats * 69 commits * 12 closed tickets & PRs * Days since last release: 28 |
From: David D. <dav...@or...> - 2024-12-13 15:45:02
|
Welcome to the final OpenJDK Quality Outreach update of 2024! JDK 24, scheduled for General Availability on March 18, 2025 [1], is now in Rampdown Phase One (RDP1) [2]. At this point, the overall JDK 24 feature set is frozen and only low-risk enhancements might still be considered. You will find below the final list of the 24 JEPs that were integrated into JDK 24 as well as JDK 24 technical materials in the last section. This QO update also covers 3 important heads-ups related to security, integrity and JDK 24. The next key milestone is early February with the first JDK 24 Release Candidate builds. That means that we have a few weeks, modulo the end of year break, to find and hopefully address any issue that your projects might encounter. So, please let us know if you encounter any issue with the JDK early-access builds. [1] https://openjdk.org/projects/jdk/24/ [2] https://mail.openjdk.org/pipermail/jdk-dev/2024-December/009672.html # Heads-up - JDK 24: Permanently Disabling the Security Manager Introduced to enforce the principle of the least privilege, the Security Manager was designed to prevent unauthorized code from accessing sensitive resources (ex. files, network connections, etc.). While effective in theory, it has fallen short in practice for multiple reasons: complexity, limited adoption, maintenance overhead and evolving threat landscape. In Java 17, the Security Manager was deprecated for removal under JEP 411 [3]. In JDK 24, its functionality will be effectively disabled via JEP 486 [4]. Key changes include: - Disabling the Security Manager - it will no longer be possible to enable the SM at startup using command-line options, nor will it be possible to install a custom SM during runtime. - Rendering the Security Manager API non-functional - the SM API will remain present for compatibility but will no longer have any operational effect. - Improving maintainability - thousands of lines of code dedicated to supporting the Security Manager will be removed, freeing OpenJDK contributors to implement modern security features. Developers and enterprises using older Java versions or legacy applications relying on the Security Manager will retain access until JDK 24. Beyond that, they are encouraged to transition to alternative sandboxing and API interception mechanisms. ## Call to Action The deprecation of the Security Manager in JDK 17 had little to no impact on most Java developers. Warnings issued in JDK 17β23 generated minimal discussion in the Java ecosystem, highlighting its limited relevance. Furthermore, major frameworks and tools (ex. Jakarta EE, Ant, Tomcat, etc.) have already removed support for the Security Manager, reinforcing the trend. For applications still dependent on the Security Manager, the JDK offers options to identify and address its usage: - jdeprscan [5] scans a JAR file for the usage of deprecated API elements, and it helps find code using these methods. - Messages on the console warnings highlight Security Manager usage during runtime. - Check how you launch your Java application - with the Security Manager allowed or enabled via command line options, or policy files that require it to be installed and configured. These tools give code maintainers the necessary insights to transition away from the Security Manager before its complete removal in future JDK releases. By taking these steps, you will ensure a smooth transition from the Security Manager while adopting more effective security practices. This is a summary; for more details, make sure to read JEP 486 [4]. [3] https://openjdk.org/jeps/411 [4] https://openjdk.org/jeps/486 [5] https://dev.java/learn/jvm/tools/core/jdeprscan/ # Heads-up - JDK 24: Prepares Restricted Native Access Any interaction between Java code and native code, be it via the Java Native Interface (JNI) API or the Foreign Function & Memory (FFM) API, is risky in the sense that it can compromise the integrity of applications and of the Java Platform itself, for example by causing JVM crashes, even after the native code completed execution. According to the policy of integrity by default, all JDK features that are capable of breaking integrity must obtain explicit approval from the applicationβs developer. JDK 24, by means of JEP 472 [6], prepares that by aligning the behaviors of JNI and FFM by: - Printing warnings for all restricted operations (with the goal to turn these into exceptions in a future release). - Expanding the command-line options `--enable-native-access` and `--illegal-native-access` to govern restricted operations of both APIs. Note that this is a change for JNI, which used to not trigger such warnings, as well as for FFM, which used to forbid restricted operations by default. Starting with JDK 24, both APIs behave uniformly by printing warnings. In the future, both APIs will throw exceptions instead. The intent is neither to discourage the use of, deprecate, or even remove JNI nor to restrict the behavior of native code called via JNI or FFM. The goal is to ensure that applications and the Java Platform have integrity by default while giving application operators the tools they need to selectively opt-out where needed. This is a summary; for more details, please read the full Heads-Up [7] and JEP 472 [6]. [6] https://openjdk.org/jeps/472 [7] https://inside.java/2024/12/09/quality-heads-up/ # Heads-up - JDK 24: Security Properties Files Inclusion Managing security properties across multiple JDK releases can be a challenge, particularly in environments requiring centralized control and distinct security profiles. To address this and starting with JDK 24, the Java Platform now allows the main security properties file (`${java.home}/conf/security/java.security`) or any file specified via the `java.security.properties` system property to include additional files. This inclusion is recursive, allowing for nested configurations, provided no cycles occur. The `include` keyword is reserved and cannot be used to define security properties, as any attempt to do so results in an unchecked `IllegalArgumentException`. The inclusion mechanism enhances security by explicitly listing files in the main configuration file, preventing misconfigurations by throwing a fatal error if a file is missing or inaccessible. It also forbids including directories or URLs, ensuring strict control over which files are included. Users must ensure proper permissions for included files to avoid tampering, such as enforcing secure file permissions. The system supports a clear priority for security property overrides based on the order of inclusion, and updates to a single file automatically propagate across all configurations. This enhancement offers better control and adaptability over Java security properties for developers, system administrators and infrastructure engineers. This is a summary; for more details, please read the full Heads-Up [8] and the JDK 24 release notes [9]. [8] https://inside.java/2024/12/10/quality-heads-up/ [9] https://jdk.java.net/24/release-notes#JDK-8319332 # JDK 24 Early-Access Builds The JDK 24 early-access builds 28 are available [10] and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [11]. ## JEPs integrated into JDK 24: - JEP 404: Generational Shenandoah (Experimental) - JEP 450: Compact Object Headers (Experimental) - JEP 472: Prepare to Restrict the Use of JNI - JEP 475: Late Barrier Expansion for G1 - JEP 478: Key Derivation Function API (Preview) - JEP 479: Remove the Windows 32-bit x86 Port - JEP 483: Ahead-of-Time Class Loading & Linking - JEP 484: Class-File API - JEP 485: Stream Gatherers - JEP 486: Permanently Disable the Security Manager - JEP 487: Scoped Values (4th Preview) - JEP 488: Primitive Types in Patterns, instanceof, and switch (2nd Preview) - JEP 489: Vector API (9th Incubator) - JEP 490: ZGC: Remove the Non-Generational Mode - JEP 491: Synchronize Virtual Threads without Pinning - JEP 492: Flexible Constructor Bodies (3rd Preview) - JEP 493: Linking Run-Time Images without JMODs - JEP 494: Module Import Declarations (2nd Preview) - JEP 495: Simple Source Files and Instance Main Methods (4th Preview) - JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism - JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm - JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe - JEP 499: Structured Concurrency (4th Preview) - JEP 501: Deprecate the 32-bit x86 Port for Removal ## Changes in recent JDK 24 builds that may be of interest: - JDK-8345015: Remove unused method lookup_time_t_function [Reported by JaCoCo] - JDK-8344352: 32-bit builds crash after JDK-8305895 [Reported by JaCoCo] - JDK-8344299: SM cleanup in javax.naming modules - JDK-8343791: Socket.connect API should document whether the socket will be closedβ¦ - JDK-8313367: SunMSCAPI cannot read Local Computer certs w/o Windows elevation - JDK-8341964: Add mechanism to disable different parts of TLS cipher suite - JDK-8341553: Remove UseCompactObjectHeaders extra CDS archives - JDK-8333582: Update CLDR to Version 46.0 - JDK-8343001: Adjust XSLT and XPath Extension Function Property - JDK-8341551: Revisit jdk.internal.loader.URLClassPath.JarLoader after JEP 486 - JDK-8340359: Remove javax.naming.Context.APPLET - JDK-8337199: Add jcmd Thread.vthread_scheduler and Thread.vthread_pollers diagnostic commands - JDK-8341975: Unable to set encoding for IO.println, IO.print and IO.readln - JDK-8342075: HttpClient: improve HTTP/2 flow control checks - JDK-8338536: Permanently disable remote code downloading in JNDI - JDK-8343004: Adjust JAXP limits - JDK-8343020: (fs) Add support for SecureDirectoryStream on macOS - JDK-8344882: (bf) Temporary direct buffers should not count against the upper limit on direct buffer memory - JDK-8326949: Authorization header is removed when a proxy Authenticator is set on HttpClient - JDK-8245545: Disable TLS_RSA cipher suites - JDK-8319993: Update Unicode Data Files to 16.0.0 - JDK-8341566: Add Reader.of(CharSequence) - JDK-8335912: Add an operation mode to the jar command when extracting to not overwriting existing files - JDK-8343881: java.lang.classfile.Attribute attributeName() method should return Utf8Entry - JDK-8338021: Support new unsigned and saturating vector operators in VectorAPI - JDK-8343150: Change URLClassLoader.getPermissions to return empty PermissionCollection Note: A complete list of changes can be found here [12]. [10] https://jdk.java.net/24/ [11] https://jdk.java.net/24/release-notes [12] https://github.com/openjdk/jdk/compare/jdk-24+21...jdk-24+28 # Topics of Interest - Java 24 Performance Improvements & Deprecations https://www.youtube.com/watch?v=oTc16DAMTqg - Java 24 Language & API Changes https://inside.java/2024/12/05/newscast-81/ - Java 24 Stops Pinning Virtual Threads (Almost) https://inside.java/2024/11/21/newscast-80/ - Detoxifying the JDK Source Code https://stuartmarks.wordpress.com/2024/12/12/detoxifying-the-jdk-source-code/ - Better Java Streams with Gatherers - JEP Cafe https://inside.java/2024/11/26/jepcafe23/ - Java Language Futures - Fall 2024 Edition https://inside.java/2024/10/30/devoxxbelgium-java-language-futures/ - Ask the Java Architects https://inside.java/2024/11/14/devoxxbelgium-ask-architects/ - Pattern Matching in Java - Past, Present, Future https://inside.java/2024/11/11/devoxxbelgium-pattern-matching/ - Monitoring Java Application Security with JDK tools and JFR Events https://inside.java/2024/11/17/devoxxbelgium-security/ - ZGC Automatic Heap Sizing #JVMLS https://inside.java/2024/11/09/jvmls-zgc/ - Postcards from the Peak of Complexity https://inside.java/2024/11/03/devoxxbelgium-complexity-peak/ - Release Your (Java) Projects Like OpenJDK https://inside.java/2024/10/31/newscast-79/ - Are Virtual Threads Going to Make Reactive Programming Irrelevant? https://inside.java/2024/10/28/javazone-virtual-threads/ - A Sneak Peek at StableValue and SegmentMapper https://inside.java/2024/10/24/devoxxbelgium-stablevalues/ - Advancing AI by Accelerating Java on Parallel Architectures https://inside.java/2024/10/23/java-and-ai/ ~ As always, ping me if you find any issues while testing your project(s) with the latest JDK early-access builds. And as the year-end is fast approaching, let me wish you all the best for the upcoming holidays. See you in 2025 with Java 24, JavaOne and Java 25! PS: Please let me know if you don't want to receive these OpenJDK Quality Outreach updates anymore. --David |
From: Andreas D. <and...@pm...> - 2024-11-29 11:36:06
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.8.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.8.0/ 29-November-2024 - 7.8.0 The PMD team is pleased to announce PMD 7.8.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#new-and-noteworthy> * π New and changed rules <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#new-and-changed-rules> o New Rules <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#api-changes> o Deprecations <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#deprecations> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2024/11/pmd-780-29-november-2024-released/#stats> π New and noteworthy π New and changed rules New Rules * The new Apex rule |QueueableWithoutFinalizer| <https://docs.pmd-code.org/pmd-doc-7.8.0/pmd_rules_apex_bestpractices.html#queueablewithoutfinalizer> detects when the Queueable interface is used but a Finalizer is not attached. Without attaching a Finalizer, there is no way of designing error recovery actions should the Queueable action fail. π Fixed Issues * ant * #1860 <https://github.com/pmd/pmd/issues/1860>: [ant] Reflective access warnings on java > 9 and java < 17 * apex * #5302 <https://github.com/pmd/pmd/issues/5302>: [apex] New Rule: Queueable Should Attach Finalizer * #5333 <https://github.com/pmd/pmd/issues/5333>: [apex] Token recognition errors for string containing unicode escape sequence * html * #5322 <https://github.com/pmd/pmd/issues/5322>: [html] CPD throws exception on when HTML file is missing closing tag * java * #5283 <https://github.com/pmd/pmd/issues/5283>: [java] AssertionError "this should be unreachable" with scala library * #5293 <https://github.com/pmd/pmd/issues/5293>: [java] Deadlock when executing PMD in multiple threads * #5324 <https://github.com/pmd/pmd/issues/5324>: [java] Issue with type inference of nested lambdas * #5329 <https://github.com/pmd/pmd/issues/5329>: [java] Type inference issue with unknown method ref in call chain * #5338 <https://github.com/pmd/pmd/issues/5338>: [java] Unresolved target type for lambdas make overload resolution fail * java-bestpractices * #4113 <https://github.com/pmd/pmd/issues/4113>: [java] JUnitTestsShouldIncludeAssert - false positive with SoftAssertionsExtension * #5083 <https://github.com/pmd/pmd/issues/5083>: [java] UnusedPrivateMethod false positive when method reference has no target type * #5097 <https://github.com/pmd/pmd/issues/5097>: [java] UnusedPrivateMethod FP with raw type missing from the classpath * #5318 <https://github.com/pmd/pmd/issues/5318>: [java] PreserveStackTraceRule: false-positive on Pattern Matching with instanceof * java-codestyle * #5214 <https://github.com/pmd/pmd/issues/5214>: [java] Wrong message for LambdaCanBeMethodReference with method of enclosing class * #5263 <https://github.com/pmd/pmd/issues/5263>: [java] UnnecessaryFullyQualifiedName: false-positive in an enum that uses its own static variables * #5315 <https://github.com/pmd/pmd/issues/5315>: [java] UnnecessaryImport false positive for on-demand imports * java-design * #4763 <https://github.com/pmd/pmd/issues/4763>: [java] SimplifyBooleanReturns - wrong suggested solution * java-errorprone * #5070 <https://github.com/pmd/pmd/issues/5070>: [java] ConfusingArgumentToVarargsMethod FP when types are unresolved * java-performance * #5287 <https://github.com/pmd/pmd/issues/5287>: [java] TooFewBranchesForSwitch false-positive with switch using list of case constants * #5314 <https://github.com/pmd/pmd/issues/5314>: [java] InsufficientStringBufferDeclarationRule: Lack of handling for char type parameters * #5320 <https://github.com/pmd/pmd/issues/5320>: [java] UseStringBufferLength: false-negative on StringBuffer of sb.toString().equals("") π¨ API Changes Deprecations * pmd-coco * |CocoBaseListener| <https://docs.pmd-code.org/apidocs/pmd-coco/7.8.0/net/sourceforge/pmd/lang/coco/ast/CocoBaseListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |CocoBaseVisitor| <https://docs.pmd-code.org/apidocs/pmd-coco/7.8.0/net/sourceforge/pmd/lang/coco/ast/CocoBaseVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |CocoListener| <https://docs.pmd-code.org/apidocs/pmd-coco/7.8.0/net/sourceforge/pmd/lang/coco/ast/CocoListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |CocoParser| <https://docs.pmd-code.org/apidocs/pmd-coco/7.8.0/net/sourceforge/pmd/lang/coco/ast/CocoParser.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |CocoVisitor| <https://docs.pmd-code.org/apidocs/pmd-coco/7.8.0/net/sourceforge/pmd/lang/coco/ast/CocoVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * pmd-gherkin * |GherkinBaseListener| <https://docs.pmd-code.org/apidocs/pmd-gherkin/7.8.0/net/sourceforge/pmd/lang/gherkin/ast/GherkinBaseListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |GherkinBaseVisitor| <https://docs.pmd-code.org/apidocs/pmd-gherkin/7.8.0/net/sourceforge/pmd/lang/gherkin/ast/GherkinBaseVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |GherkinListener| <https://docs.pmd-code.org/apidocs/pmd-gherkin/7.8.0/net/sourceforge/pmd/lang/gherkin/ast/GherkinListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |GherkinParser| <https://docs.pmd-code.org/apidocs/pmd-gherkin/7.8.0/net/sourceforge/pmd/lang/gherkin/ast/GherkinParser.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |GherkinVisitor| <https://docs.pmd-code.org/apidocs/pmd-gherkin/7.8.0/net/sourceforge/pmd/lang/gherkin/ast/GherkinVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * pmd-julia * |JuliaBaseListener| <https://docs.pmd-code.org/apidocs/pmd-julia/7.8.0/net/sourceforge/pmd/lang/julia/ast/JuliaBaseListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |JuliaBaseVisitor| <https://docs.pmd-code.org/apidocs/pmd-julia/7.8.0/net/sourceforge/pmd/lang/julia/ast/JuliaBaseVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |JuliaListener| <https://docs.pmd-code.org/apidocs/pmd-julia/7.8.0/net/sourceforge/pmd/lang/julia/ast/JuliaListener.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |JuliaParser| <https://docs.pmd-code.org/apidocs/pmd-julia/7.8.0/net/sourceforge/pmd/lang/julia/ast/JuliaParser.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * |JuliaVisitor| <https://docs.pmd-code.org/apidocs/pmd-julia/7.8.0/net/sourceforge/pmd/lang/julia/ast/JuliaVisitor.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * pmd-kotlin * |UnicodeClasses| <https://docs.pmd-code.org/apidocs/pmd-kotlin/7.8.0/net/sourceforge/pmd/lang/kotlin/ast/UnicodeClasses.html#> is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement. * pmd-xml * |XMLLexer| <https://docs.pmd-code.org/apidocs/pmd-xml/7.8.0/net/sourceforge/pmd/lang/xml/antlr4/XMLLexer.html#> is deprecated for removal. Use |net.sourceforge.pmd.lang.xml.ast.XMLLexer| <https://docs.pmd-code.org/apidocs/pmd-xml/7.8.0/net/sourceforge/pmd/lang/xml/ast/XMLLexer.html#> instead (note different package |ast| instead of |antlr4|). β¨ Merged pull requests * #5240 <https://github.com/pmd/pmd/pull/5240>: Release notes improvements - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5284 <https://github.com/pmd/pmd/pull/5284>: [apex] Use case-insensitive input stream to avoid choking on Unicode escape sequences - Willem A. Hajenius <https://github.com/wahajenius> (@wahajenius) * #5286 <https://github.com/pmd/pmd/pull/5286>: [ant] Formatter: avoid reflective access to determine console encoding - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5289 <https://github.com/pmd/pmd/pull/5289>: [java] TooFewBranchesForSwitch - allow list of case constants - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5296 <https://github.com/pmd/pmd/pull/5296>: [xml] Have pmd-xml Lexer in line with other antlr grammars - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5300 <https://github.com/pmd/pmd/pull/5300>: Add rule test cases for issues fixed with PMD 7.0.0 - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5303 <https://github.com/pmd/pmd/pull/5303>: [apex] New Rule: Queueable Should Attach Finalizer - Mitch Spano <https://github.com/mitchspano> (@mitchspano) * #5309 <https://github.com/pmd/pmd/pull/5309>: [java] Fix #5293: Parse number of type parameters eagerly - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5310 <https://github.com/pmd/pmd/pull/5310>: [java] Fix #5283 - inner class has public private modifiers - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5325 <https://github.com/pmd/pmd/pull/5325>: [java] Fix inference dependency issue with nested lambdas - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5326 <https://github.com/pmd/pmd/pull/5326>: [java] UseStringBufferLength - consider sb.toString().equals("") - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5328 <https://github.com/pmd/pmd/pull/5328>: [html] Test for a closing tag when determining node positions - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5330 <https://github.com/pmd/pmd/pull/5330>: [java] Propagate unknown type better when mref is unresolved - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5331 <https://github.com/pmd/pmd/pull/5331>: [java] PreserveStackTrace - consider instance type patterns - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5332 <https://github.com/pmd/pmd/pull/5332>: [java] InsufficientStringBufferDeclaration: Fix CCE for Character - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5334 <https://github.com/pmd/pmd/pull/5334>: [java] UnitTestShouldIncludeAssert - consider SoftAssertionsExtension - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5335 <https://github.com/pmd/pmd/pull/5335>: [kotlin] Prevent auxiliary grammars from generating lexers - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5336 <https://github.com/pmd/pmd/pull/5336>: [gherkin] Remove generated gherkin code from coverage report - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5337 <https://github.com/pmd/pmd/pull/5337>: [doc] Introducing PMD Guru on Gurubase.io - Kursat Aktas <https://github.com/kursataktas> (@kursataktas) * #5339 <https://github.com/pmd/pmd/pull/5339>: [java] Allow lambdas with unresolved target types to succeed inference - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5340 <https://github.com/pmd/pmd/pull/5340>: [java] Fix #5097 - problem with unchecked conversion - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5341 <https://github.com/pmd/pmd/pull/5341>: [java] Fix #5083 - UnusedPrivateMethod false positive with mref without target type but with exact method - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5342 <https://github.com/pmd/pmd/pull/5342>: [julia] Ignore generated code in Julia module - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5345 <https://github.com/pmd/pmd/pull/5345>: [coco] Remove generated coco files form coverage - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5346 <https://github.com/pmd/pmd/pull/5346>: [typescript] Add cleanup after generating ts lexer - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5347 <https://github.com/pmd/pmd/pull/5347>: [tsql] Flag generated lexer as generated - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5352 <https://github.com/pmd/pmd/pull/5352>: [java] Add permitted subtypes to symbol API - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5353 <https://github.com/pmd/pmd/pull/5353>: [java] Fix #5263 - UnnecessaryFullyQualifiedName FP with forward references - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5354 <https://github.com/pmd/pmd/pull/5354>: [apex] Updated the docs for UnusedMethod as per discussion #5200 - samc-gearset <https://github.com/sam-gearset> (@sam-gearset) * #5370 <https://github.com/pmd/pmd/pull/5370>: [java] Fix #5214 - LambdaCanBeMethodReference issue with method of enclosing class - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5371 <https://github.com/pmd/pmd/pull/5371>: [doc] Improve docs on adding Antlr languages - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5372 <https://github.com/pmd/pmd/pull/5372>: [java] Fix #5315 - UnusedImport FP with import on demand - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5373 <https://github.com/pmd/pmd/pull/5373>: [java] Fix #4763 - wrong message for SimplifyBooleanReturns - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5374 <https://github.com/pmd/pmd/pull/5374>: [java] Fix #5070 - confusing argument to varargs method FP when types are unknown - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) π¦ Dependency updates * #5285 <https://github.com/pmd/pmd/pull/5285>: Bump pmd from 7.5.0 to 7.7.0 * #5288 <https://github.com/pmd/pmd/pull/5288>: Bump asm from 9.7 to 9.7.1 * #5290 <https://github.com/pmd/pmd/pull/5290>: Bump org.apache.maven.plugins:maven-assembly-plugin from 3.6.0 to 3.7.1 * #5301 <https://github.com/pmd/pmd/pull/5301>: Bump gems and bundler * #5307 <https://github.com/pmd/pmd/pull/5307>: Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.2 to 3.4.0 * #5308 <https://github.com/pmd/pmd/pull/5308>: Bump webrick from 1.8.2 to 1.9.0 in /docs in the all-gems group across 1 directory * #5312 <https://github.com/pmd/pmd/pull/5312>: Bump maven-pmd-plugin from 3.24.0 to 3.26.0 * #5316 <https://github.com/pmd/pmd/pull/5316>: Bump rouge from 4.4.0 to 4.5.0 in the all-gems group across 1 directory * #5317 <https://github.com/pmd/pmd/pull/5317>: Bump org.apache.commons:commons-compress from 1.26.0 to 1.27.1 * #5348 <https://github.com/pmd/pmd/pull/5348>: Bump rouge from 4.5.0 to 4.5.1 in the all-gems group across 1 directory * #5350 <https://github.com/pmd/pmd/pull/5350>: Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 * #5356 <https://github.com/pmd/pmd/pull/5356>: Bump build-tools to 28 * #5357 <https://github.com/pmd/pmd/pull/5357>: Bump log4j.version from 2.23.0 to 2.24.2 * #5358 <https://github.com/pmd/pmd/pull/5358>: Bump org.apache.maven.plugins:maven-dependency-plugin from 3.7.1 to 3.8.1 * #5359 <https://github.com/pmd/pmd/pull/5359>: Bump org.apache.maven.plugins:maven-release-plugin from 3.0.1 to 3.1.1 * #5360 <https://github.com/pmd/pmd/pull/5360>: Bump io.github.apex-dev-tools:apex-ls_2.13 from 5.2.0 to 5.5.0 * #5361 <https://github.com/pmd/pmd/pull/5361>: Bump ant.version from 1.10.14 to 1.10.15 * #5362 <https://github.com/pmd/pmd/pull/5362>: Bump org.jetbrains:annotations from 24.1.0 to 26.0.1 * #5363 <https://github.com/pmd/pmd/pull/5363>: Bump com.puppycrawl.tools:checkstyle from 10.18.1 to 10.20.1 * #5364 <https://github.com/pmd/pmd/pull/5364>: Bump info.picocli:picocli from 4.7.5 to 4.7.6 * #5365 <https://github.com/pmd/pmd/pull/5365>: Bump com.github.hazendaz.maven:coveralls-maven-plugin from 4.5.0-M3 to 4.5.0-M5 * #5366 <https://github.com/pmd/pmd/pull/5366>: Bump org.mockito:mockito-core from 4.11.0 to 5.14.2 * #5367 <https://github.com/pmd/pmd/pull/5367>: Bump surefire.version from 3.2.5 to 3.5.2 * #5368 <https://github.com/pmd/pmd/pull/5368>: Bump org.junit.platform:junit-platform-suite from 1.11.2 to 1.11.3 π Stats * 216 commits * 55 closed tickets & PRs * Days since last release: 35 |
From: <gds...@gm...> - 2024-11-20 20:01:26
|
<!DOCTYPE html> <html lang="en"> <head> <title>Partnership Opportunity for Winter of Code 4.0</title> <style> body { font-family: 'Google Sans', sans-serif; color: rgb(32, 33, 36); margin: 0; padding: 0; width: 100%; overflow-x: hidden; } a { color: #1a73e8; text-decoration: none; } .container { width: 100%; max-width: 620px; margin: 0 auto; padding: 20px; box-sizing: border-box; } .header-img { width: 100%; height: auto; display: block; margin-bottom: 2px; } .content { background-color: rgb(250, 250, 250); padding: 36px; text-align: left; word-wrap: break-word; line-height: 1.5; } .footer { background-color: rgb(66, 133, 244); padding: 18px; text-align: center; } .footer img { width: 94px; height: auto; display: block; margin: 0 auto; } h1, h2, h3, h4, h5, h6 { margin: 0; } p { margin: 10px 0; } ul { margin: 10px 0; padding-left: 20px; } ul li { margin: 5px 0; } </style> </head> <body> <div class="container"> <!-- Header Image --> <img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeGMXFIOlwtqgTHQIlgb436SxvEAcKKU4wUZbFmCwiGze-uAyJm9t-Bq81hB16V5C1wyGIKnu1zMILpkd0TpVuVtdWgSXb3pw2nq1ACpCvfKxhiRuiuE01k5MHspsR7nEEPC9Zqk2i8S3ERdKj32zCMN48VzYFaBzPpYFrtdw?key=wOT9cdkFRwm6KFiO_bWFhw" alt="Winter of Code Header" class="header-img"> <!-- Content Section --> <div class="content"> <p><strong>Greetings from GDG on Campus, IIIT Kalyani!</strong></p> <p>Dear PMD,</p> <p>I hope this email finds you well.</p> <p>We are excited to invite your organization to join <strong>Winter of Code 4.0</strong>, an open-source program by GDG on Campus IIIT Kalyani, cheduled to take place from December to January. This yearβs event is expected to attract over 3000 participants, with almost 1000 already registered, driven by the collaborative efforts of 30+ Google Developer Groups and our valued community partners.</p> <p>Modeled after the structure of Google Summer of Code (GSoC), the program will span two months. During this time, student applicants will send proposals to partner organizations to work on open-source projects. Organizations will receive high-quality contributions that are meaningful and relevant to their codebase. Additionally, mentors will have the opportunity to review contribution proposals and can choose to accept or reject them based on alignment with project goals. As part of this event, we are reaching out to your organization to invite you to participate and contribute to the program. We would love to have your organization onboard.</p> <p>To partner, could you please provide the following:</p> <ul> <li>Number of projects youβd like to propose, along with project names</li> <li>Links to the project repositories</li> <li>Number of mentors/Points of Contact (PoCs) and their contact details</li> <li>Any proposal ideas or specific issues for students to focus on</li> </ul> <p>More details, including the event timeline, are available on our website at <a href="http://winterofcode.tech/" target="_blank">winterofcode.tech</a>. Please let us know how to proceed to initiate the partnership. Our program brochure and structure are attached for reference.</p> <p><a href="https://drive.google.com/file/d/1lzozKgXBw1Czn2MCxXGHrig61oM6Hlc_/view" target="_blank">Sponsorship Brochure</a></p> <p><a href="https://drive.google.com/file/d/1n3CBIyKuriTmm3xk4Z4aJkUefQc4Rr5y/view" target="_blank">Organisation Brochure</a></p> <p>Thank you for considering this opportunity to contribute to the open-source community. We look forward to the possibility of partnering with you.</p> <p><strong>Best regards,</strong></p> <p><strong>Arpan Mandal</strong><br> <strong>Lead Organiser</strong><br> <strong>GDG On Campus, IIIT Kalyani</strong></p> </div> <!-- Footer Section with Logo --> <div class="footer"> <img src="https://lh4.googleusercontent.com/rk0E5GsGUHjZPiFLnEWoxFlnWm8DI61gmfvmGI_gg4Ju4SyHmbS3j84P67zVAsv-EQYTkfqsyU2NDMsZ-ZtfsX0GJZQSDtQhShzTiTwoepIQGlMVEjw5wYY1FxTpzU13LCcM4OflJegAaFCgMft6QwBHLEDEB96A6w9sgJGx3PqPdnXo-ttkjtjLRel8-HitBLrrIcgr9991iHJQ1MIOD8639umZbTxCIuPjuw" alt="GDG On Campus Logo"> </div> </div> </body> </html> |
From: Juan M. S. D. <jua...@gm...> - 2024-11-11 14:44:01
|
Ok, so, first things first. Iβd suggest you check out the documentation on writing a ruleset: https://docs.pmd-code.org/latest/pmd_userdocs_making_rulesets.html#referencing-a-single-rule To reference existing rulesets, it suffices to do just: <rule ref="category/apex/design.xml/ExcessiveClassLength" /> You donβt need to include the message nor any property unless you want to *override* the default values for any of these. In your example, you are just copying the defaults, so none of that is needed. Even if you were overriding a value, you just need to include the one you want to override, not all of them. The ruleβs doc shows the difference between just referencing / customizing it (and neither includes the message attribute). https://docs.pmd-code.org/latest/pmd_rules_apex_design.html#excessiveclasslength As for the cc_* attributes in general, *just remove them*. They referenced CodeClimate <https://codeclimate.com/>. They do not affect the rule itself, but how it renders data *iff* using the code climate renderer. As this is a renderer-specific thing, it didnβt make sense to have it as part of each rule, and hence, was deprecated and eventually removed. If you are not using Code Climate, you wonβt see a difference. If you are, you will simply stop having category / remediation points info. Regards On Mon, Nov 11, 2024 at 1:55β―AM Abhinav kumar <abh...@gm...> wrote: > Hello Juan, > > What will be the impact when we remove these properties " cc_categories > , cc_remediation_points_multiplier, cc_block_highlighting " in our PMD > analysis? > Is there any alternative to these properties which we can include in our > ruleset file. > Please find the rule snippet below for your reference. This is how we have > defined our custom ruleset. > <rule ref="category/apex/design.xml/ExcessiveClassLength" message= > "Avoid really long classes (lines of code)"> > <priority>3</priority> > <properties> > <property name="minimum" value="1000" /> > <!-- relevant for Code Climate output only --> > <property name="cc_categories" value="Complexity" /> > <property name="cc_remediation_points_multiplier" value="150" /> > <property name="cc_block_highlighting" value="false" /> > </properties> > </rule> > > So, how do we rewrite this rule as we will need to remove all the 3 > properties mentioned in the snippet. So how are we going to rewrite the > rule and also any other property which we need to replace in place of these > properties?. > > > *NOTE:- These are the properties we are using for all our rulesets, you > can go through the custom rule set file once which is attached with this > email, so could you please guide as to how we are rewriting this without > these properties.* > Regards, > Abhinav > > On Sun, Nov 10, 2024 at 10:06β―AM Juan MartΓn Sotuyo Dodero < > jua...@gm...> wrote: > >> Yes, simply remove them >> >> On Sun, Nov 10, 2024, 1:19β―AM Abhinav kumar <abh...@gm...> >> wrote: >> >>> Hello Juan, >>> >>> Thank you so much for the response, so what should be the next step? >>> In Place of these properties " cc_categories, >>> cc_remediation_points_multiplier, cc_block_highlighting " what should >>> be used because these are all custom defined rule sets we are using in our >>> project. >>> >>> Should we remove these properties from our file, will that work? >>> >>> Awaiting your response. >>> >>> Regards, >>> Abhinav >>> >>> On Thu, Nov 7, 2024 at 6:59β―PM Juan MartΓn Sotuyo Dodero < >>> jua...@gm...> wrote: >>> >>>> Abhinav, >>>> >>>> PMD 7 is a major release, and as such, introduces breaking changes. >>>> As per our own policy, we never introduce a breaking change unless the >>>> relevant feature has already been deprecated in the previous release, and >>>> ensuring appropriate warnings are emitted with itβs usage, even if still >>>> supported, with the intention of giving people time to accommodate and >>>> prepare. Aditionally, with any release, the release notes >>>> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html> >>>> comprehensively cover these changes. >>>> >>>> As per the errorβs self description >>>> >>>> 2024-11-04T07:40:49.3666791Z 11| <property name="cc_categories" value="Complexity" /> >>>> 2024-11-04T07:40:49.3667364Z ^^^^^^^^^ Cannot set non-existent property 'cc_categories' on rule ExcessiveClassLength >>>> >>>> In this particular case, this is the relevant piece >>>> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#changed-rules:~:text=Apex%20General%20changes> >>>> : >>>> >>>> *Apex General changes* >>>> >>>> - The properties cc_categories, cc_remediation_points_multiplier, >>>> cc_block_highlighting have been removed from all rules. These >>>> properties have been deprecated since PMD 6.13.0. See issue #1648 >>>> <https://github.com/pmd/pmd/issues/1648> for more details. >>>> >>>> Hope that helps. Checking the logs for deprecation warnings can >>>> hopefully help you stay prepared for major changes without affecting your >>>> workflows. >>>> >>>> Regards >>>> >>>> On Thu, Nov 7, 2024 at 6:24β―AM Abhinav kumar <abh...@gm...> >>>> wrote: >>>> >>>>> Hello Team, >>>>> >>>>> I am using sfdx-scanner for my project and custom PMD rule set for the >>>>> static code analysis. >>>>> When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but >>>>> then I started getting errors in my pipeline. The same rule set is working >>>>> fine with the sfdx-scanner 3.25 version. I have attached the error log file. >>>>> >>>>> Also, I am attaching the custom ruleset file for your reference. >>>>> >>>>> >>>>> _______________________________________________ >>>>> Pmd-devel mailing list >>>>> Pmd...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/pmd-devel >>>>> >>>> |
From: Abhinav k. <abh...@gm...> - 2024-11-11 04:55:28
|
Hello Juan, What will be the impact when we remove these properties " cc_categories, cc_remediation_points_multiplier, cc_block_highlighting " in our PMD analysis? Is there any alternative to these properties which we can include in our ruleset file. Please find the rule snippet below for your reference. This is how we have defined our custom ruleset. <rule ref="category/apex/design.xml/ExcessiveClassLength" message= "Avoid really long classes (lines of code)"> <priority>3</priority> <properties> <property name="minimum" value="1000" /> <!-- relevant for Code Climate output only --> <property name="cc_categories" value="Complexity" /> <property name="cc_remediation_points_multiplier" value="150" /> <property name="cc_block_highlighting" value="false" /> </properties> </rule> So, how do we rewrite this rule as we will need to remove all the 3 properties mentioned in the snippet. So how are we going to rewrite the rule and also any other property which we need to replace in place of these properties?. *NOTE:- These are the properties we are using for all our rulesets, you can go through the custom rule set file once which is attached with this email, so could you please guide as to how we are rewriting this without these properties.* Regards, Abhinav On Sun, Nov 10, 2024 at 10:06β―AM Juan MartΓn Sotuyo Dodero < jua...@gm...> wrote: > Yes, simply remove them > > On Sun, Nov 10, 2024, 1:19β―AM Abhinav kumar <abh...@gm...> > wrote: > >> Hello Juan, >> >> Thank you so much for the response, so what should be the next step? >> In Place of these properties " cc_categories, >> cc_remediation_points_multiplier, cc_block_highlighting " what should >> be used because these are all custom defined rule sets we are using in our >> project. >> >> Should we remove these properties from our file, will that work? >> >> Awaiting your response. >> >> Regards, >> Abhinav >> >> On Thu, Nov 7, 2024 at 6:59β―PM Juan MartΓn Sotuyo Dodero < >> jua...@gm...> wrote: >> >>> Abhinav, >>> >>> PMD 7 is a major release, and as such, introduces breaking changes. >>> As per our own policy, we never introduce a breaking change unless the >>> relevant feature has already been deprecated in the previous release, and >>> ensuring appropriate warnings are emitted with itβs usage, even if still >>> supported, with the intention of giving people time to accommodate and >>> prepare. Aditionally, with any release, the release notes >>> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html> >>> comprehensively cover these changes. >>> >>> As per the errorβs self description >>> >>> 2024-11-04T07:40:49.3666791Z 11| <property name="cc_categories" value="Complexity" /> >>> 2024-11-04T07:40:49.3667364Z ^^^^^^^^^ Cannot set non-existent property 'cc_categories' on rule ExcessiveClassLength >>> >>> In this particular case, this is the relevant piece >>> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#changed-rules:~:text=Apex%20General%20changes> >>> : >>> >>> *Apex General changes* >>> >>> - The properties cc_categories, cc_remediation_points_multiplier, >>> cc_block_highlighting have been removed from all rules. These >>> properties have been deprecated since PMD 6.13.0. See issue #1648 >>> <https://github.com/pmd/pmd/issues/1648> for more details. >>> >>> Hope that helps. Checking the logs for deprecation warnings can >>> hopefully help you stay prepared for major changes without affecting your >>> workflows. >>> >>> Regards >>> >>> On Thu, Nov 7, 2024 at 6:24β―AM Abhinav kumar <abh...@gm...> >>> wrote: >>> >>>> Hello Team, >>>> >>>> I am using sfdx-scanner for my project and custom PMD rule set for the >>>> static code analysis. >>>> When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but >>>> then I started getting errors in my pipeline. The same rule set is working >>>> fine with the sfdx-scanner 3.25 version. I have attached the error log file. >>>> >>>> Also, I am attaching the custom ruleset file for your reference. >>>> >>>> >>>> _______________________________________________ >>>> Pmd-devel mailing list >>>> Pmd...@li... >>>> https://lists.sourceforge.net/lists/listinfo/pmd-devel >>>> >>> |
From: Juan M. S. D. <jua...@gm...> - 2024-11-10 04:36:36
|
Yes, simply remove them On Sun, Nov 10, 2024, 1:19β―AM Abhinav kumar <abh...@gm...> wrote: > Hello Juan, > > Thank you so much for the response, so what should be the next step? > In Place of these properties " cc_categories, > cc_remediation_points_multiplier, cc_block_highlighting " what should > be used because these are all custom defined rule sets we are using in our > project. > > Should we remove these properties from our file, will that work? > > Awaiting your response. > > Regards, > Abhinav > > On Thu, Nov 7, 2024 at 6:59β―PM Juan MartΓn Sotuyo Dodero < > jua...@gm...> wrote: > >> Abhinav, >> >> PMD 7 is a major release, and as such, introduces breaking changes. >> As per our own policy, we never introduce a breaking change unless the >> relevant feature has already been deprecated in the previous release, and >> ensuring appropriate warnings are emitted with itβs usage, even if still >> supported, with the intention of giving people time to accommodate and >> prepare. Aditionally, with any release, the release notes >> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html> >> comprehensively cover these changes. >> >> As per the errorβs self description >> >> 2024-11-04T07:40:49.3666791Z 11| <property name="cc_categories" value="Complexity" /> >> 2024-11-04T07:40:49.3667364Z ^^^^^^^^^ Cannot set non-existent property 'cc_categories' on rule ExcessiveClassLength >> >> In this particular case, this is the relevant piece >> <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#changed-rules:~:text=Apex%20General%20changes> >> : >> >> *Apex General changes* >> >> - The properties cc_categories, cc_remediation_points_multiplier, >> cc_block_highlighting have been removed from all rules. These >> properties have been deprecated since PMD 6.13.0. See issue #1648 >> <https://github.com/pmd/pmd/issues/1648> for more details. >> >> Hope that helps. Checking the logs for deprecation warnings can hopefully >> help you stay prepared for major changes without affecting your workflows. >> >> Regards >> >> On Thu, Nov 7, 2024 at 6:24β―AM Abhinav kumar <abh...@gm...> >> wrote: >> >>> Hello Team, >>> >>> I am using sfdx-scanner for my project and custom PMD rule set for the >>> static code analysis. >>> When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but then >>> I started getting errors in my pipeline. The same rule set is working fine >>> with the sfdx-scanner 3.25 version. I have attached the error log file. >>> >>> Also, I am attaching the custom ruleset file for your reference. >>> >>> >>> _______________________________________________ >>> Pmd-devel mailing list >>> Pmd...@li... >>> https://lists.sourceforge.net/lists/listinfo/pmd-devel >>> >> |
From: Abhinav k. <abh...@gm...> - 2024-11-10 04:19:57
|
Hello Juan, Thank you so much for the response, so what should be the next step? In Place of these properties " cc_categories, cc_remediation_points_multiplier, cc_block_highlighting " what should be used because these are all custom defined rule sets we are using in our project. Should we remove these properties from our file, will that work? Awaiting your response. Regards, Abhinav On Thu, Nov 7, 2024 at 6:59β―PM Juan MartΓn Sotuyo Dodero < jua...@gm...> wrote: > Abhinav, > > PMD 7 is a major release, and as such, introduces breaking changes. > As per our own policy, we never introduce a breaking change unless the > relevant feature has already been deprecated in the previous release, and > ensuring appropriate warnings are emitted with itβs usage, even if still > supported, with the intention of giving people time to accommodate and > prepare. Aditionally, with any release, the release notes > <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html> > comprehensively cover these changes. > > As per the errorβs self description > > 2024-11-04T07:40:49.3666791Z 11| <property name="cc_categories" value="Complexity" /> > 2024-11-04T07:40:49.3667364Z ^^^^^^^^^ Cannot set non-existent property 'cc_categories' on rule ExcessiveClassLength > > In this particular case, this is the relevant piece > <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#changed-rules:~:text=Apex%20General%20changes> > : > > *Apex General changes* > > - The properties cc_categories, cc_remediation_points_multiplier, > cc_block_highlighting have been removed from all rules. These > properties have been deprecated since PMD 6.13.0. See issue #1648 > <https://github.com/pmd/pmd/issues/1648> for more details. > > Hope that helps. Checking the logs for deprecation warnings can hopefully > help you stay prepared for major changes without affecting your workflows. > > Regards > > On Thu, Nov 7, 2024 at 6:24β―AM Abhinav kumar <abh...@gm...> > wrote: > >> Hello Team, >> >> I am using sfdx-scanner for my project and custom PMD rule set for the >> static code analysis. >> When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but then >> I started getting errors in my pipeline. The same rule set is working fine >> with the sfdx-scanner 3.25 version. I have attached the error log file. >> >> Also, I am attaching the custom ruleset file for your reference. >> >> >> _______________________________________________ >> Pmd-devel mailing list >> Pmd...@li... >> https://lists.sourceforge.net/lists/listinfo/pmd-devel >> > |
From: Juan M. S. D. <jua...@gm...> - 2024-11-07 13:29:41
|
Abhinav, PMD 7 is a major release, and as such, introduces breaking changes. As per our own policy, we never introduce a breaking change unless the relevant feature has already been deprecated in the previous release, and ensuring appropriate warnings are emitted with itβs usage, even if still supported, with the intention of giving people time to accommodate and prepare. Aditionally, with any release, the release notes <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html> comprehensively cover these changes. As per the errorβs self description 2024-11-04T07:40:49.3666791Z 11| <property name="cc_categories" value="Complexity" /> 2024-11-04T07:40:49.3667364Z ^^^^^^^^^ Cannot set non-existent property 'cc_categories' on rule ExcessiveClassLength In this particular case, this is the relevant piece <https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#changed-rules:~:text=Apex%20General%20changes> : *Apex General changes* - The properties cc_categories, cc_remediation_points_multiplier, cc_block_highlighting have been removed from all rules. These properties have been deprecated since PMD 6.13.0. See issue #1648 <https://github.com/pmd/pmd/issues/1648> for more details. Hope that helps. Checking the logs for deprecation warnings can hopefully help you stay prepared for major changes without affecting your workflows. Regards On Thu, Nov 7, 2024 at 6:24β―AM Abhinav kumar <abh...@gm...> wrote: > Hello Team, > > I am using sfdx-scanner for my project and custom PMD rule set for the > static code analysis. > When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but then I > started getting errors in my pipeline. The same rule set is working fine > with the sfdx-scanner 3.25 version. I have attached the error log file. > > Also, I am attaching the custom ruleset file for your reference. > > > _______________________________________________ > Pmd-devel mailing list > Pmd...@li... > https://lists.sourceforge.net/lists/listinfo/pmd-devel > |
From: Abhinav k. <abh...@gm...> - 2024-11-07 06:02:25
|
Hello Team, I am using sfdx-scanner for my project and custom PMD rule set for the static code analysis. When I upgraded the scanner to 4.0.0, PMD was upgraded to 7.0.0 but then I started getting errors in my pipeline. The same rule set is working fine with the sfdx-scanner 3.25 version. I have attached the error log file. Also, I am attaching the custom ruleset file for your reference. |
From: Andreas D. <and...@pm...> - 2024-10-25 08:07:36
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.7.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.7.0/ 25-October-2024 - 7.7.0 The PMD team is pleased to announce PMD 7.7.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#new-and-noteworthy> o CPD can now ignore literals and identifiers in C++ code <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#cpd-can-now-ignore-literals-and-identifiers-in-c-code> * π Rule Changes <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#rule-changes> o Changed Rules <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#changed-rules> o Renamed Rules <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#renamed-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#api-changes> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2024/10/pmd-770-25-october-2024-released/#stats> π New and noteworthy CPD can now ignore literals and identifiers in C++ code When searching for duplicated code in C++ differences in literals or identifiers can be ignored now (like in Java). This can be enabled via the command line options |--ignore-literal| and |--ignore-identifiers|. See PR #5040 <https://github.com/pmd/pmd/pull/5040> for details. π Rule Changes Changed Rules * |SwitchStmtsShouldHaveDefault| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#switchstmtsshouldhavedefault> (Java Best Practices) doesn't report empty switch statements anymore. To detect these, use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#emptycontrolstatement>. * |UnitTestShouldUseAfterAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshoulduseafterannotation> (Java Best Practices) now also considers JUnit 5 and TestNG tests. * |UnitTestShouldUseBeforeAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldusebeforeannotation> (Java Best Practices) now also considers JUnit 5 and TestNG tests. * |TooFewBranchesForSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_performance.html#toofewbranchesforswitch> (Java Performance) doesn't report empty switches anymore. To detect these, use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_codestyle.html#emptycontrolstatement>. Renamed Rules * Several rules for unit testing have been renamed to better reflect their actual scope. Lots of them were called after JUnit / JUnit 4, even when they applied to JUnit 5 and / or TestNG. * |UnitTestAssertionsShouldIncludeMessage| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestassertionsshouldincludemessage> (Java Best Practices) has been renamed from |JUnitAssertionsShouldIncludeMessage|. * |UnitTestContainsTooManyAsserts| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestcontainstoomanyasserts> (Java Best Practices) has been renamed from |JUnitTestContainsTooManyAsserts|. * |UnitTestShouldIncludeAssert| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldincludeassert> (Java Best Practices) has been renamed from |JUnitTestsShouldIncludeAssert|. * |UnitTestShouldUseAfterAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshoulduseafterannotation> (Java Best Practices) has been renamed from |JUnit4TestShouldUseAfterAnnotation|. * |UnitTestShouldUseBeforeAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldusebeforeannotation> (Java Best Practices) has been renamed from |JUnit4TestShouldUseBeforeAnnotation|. * |UnitTestShouldUseTestAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldusetestannotation> (Java Best Practices) has been renamed from |JUnit4TestShouldUseTestAnnotation|. * Several rules about switch statements and switch expression have been renamed, as they apply both to Switch Statements and to Switch Expressions: * |DefaultLabelNotLastInSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#defaultlabelnotlastinswitch> (Java Best Practices) has been renamed from |DefaultLabelNotLastInSwitch|. * |NonCaseLabelInSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_errorprone.html#noncaselabelinswitch> (Java Error Prone) has been renamed from |NonCaseLabelInSwitchStatement|. * |TooFewBranchesForSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_performance.html#toofewbranchesforswitch> (Java Performance) has been renamed from |TooFewBranchesForASwitchStatement|. * |NonExhaustiveSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#nonexhaustiveswitch> (Java Best Practices) has been renamed from |SwitchStmtsShouldHaveDefault|. The old rule names still work but are deprecated. π Fixed Issues * apex-performance * #5270 <https://github.com/pmd/pmd/issues/5270>: [apex] AvoidNonRestrictiveQueries when LIMIT is followed by bind expression * java * #4532 <https://github.com/pmd/pmd/issues/4532>: [java] Rule misnomer for JUnit* rules * #5261 <https://github.com/pmd/pmd/issues/5261>: [java] Record patterns with empty deconstructor lists lead to NPE * java-bestpractices * #4286 <https://github.com/pmd/pmd/issues/4286>: [java] Rename rule SwitchStmtsShouldHaveDefault to NonExhaustiveSwitch * #4813 <https://github.com/pmd/pmd/issues/4813>: [java] SwitchStmtsShouldHaveDefault false positive with pattern matching * java-codestyle * #5253 <https://github.com/pmd/pmd/issues/5253>: [java] BooleanGetMethodName: False-negatives with |Boolean| wrapper * java-design * #5030 <https://github.com/pmd/pmd/issues/5030>: [java] SwitchDensity false positive with pattern matching * java-errorprone * #3362 <https://github.com/pmd/pmd/issues/3362>: [java] ImplicitSwitchFallThrough should consider switch expressions * #5067 <https://github.com/pmd/pmd/issues/5067>: [java] CloseResource: False positive for FileSystems.getDefault() * #5244 <https://github.com/pmd/pmd/issues/5244>: [java] UselessOperationOnImmutable should detect java.time types * #5257 <https://github.com/pmd/pmd/issues/5257>: [java] NonCaseLabelInSwitch should consider switch expressions * java-performance * #5249 <https://github.com/pmd/pmd/issues/5249>: [java] TooFewBranchesForASwitchStatement false positive for Pattern Matching * #5250 <https://github.com/pmd/pmd/issues/5250>: [java] TooFewBranchesForASwitchStatement should consider Switch Expressions π¨ API Changes * java-bestpractices * The old rule name |JUnit4TestShouldUseAfterAnnotation| has been deprecated. Use the new name |UnitTestShouldUseAfterAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshoulduseafterannotation> instead. * The old rule name |JUnit4TestShouldUseBeforeAnnotation| has been deprecated. Use the new name |UnitTestShouldUseBeforeAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldusebeforeannotation> instead. * The old rule name |JUnit4TestShouldUseTestAnnotation| has been deprecated. Use the new name |UnitTestShouldUseTestAnnotation| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldusetestannotation> instead. * The old rule name |JUnitAssertionsShouldIncludeMessage| has been deprecated. Use the new name |UnitTestAssertionsShouldIncludeMessage| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestassertionsshouldincludemessage> instead. * The old rule name |JUnitTestContainsTooManyAsserts| has been deprecated. Use the new name |UnitTestContainsTooManyAsserts| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestcontainstoomanyasserts> instead. * The old rule name |JUnitTestsShouldIncludeAssert| has been deprecated. Use the new name |UnitTestShouldIncludeAssert| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#unittestshouldincludeassert> instead. * The old rule name |DefaultLabelNotLastInSwitch| has been deprecated. Use the new name |DefaultLabelNotLastInSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#defaultlabelnotlastinswitch> instead. * The old rule name |SwitchStmtsShouldHaveDefault| has been deprecated. USe the new name |NonExhaustiveSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_bestpractices.html#nonexhaustiveswitch> instead. * java-errorprone * The old rule name |NonCaseLabelInSwitchStatement| has been deprecated. Use the new name |NonCaseLabelInSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_errorprone.html#noncaselabelinswitch> instead. * java-performance * The old rule name |TooFewBranchesForASwitchStatement| has been deprecated. Use the new name |TooFewBranchesForSwitch| <https://docs.pmd-code.org/pmd-doc-7.7.0/pmd_rules_java_performance.html#toofewbranchesforswitch> instead. β¨ Merged pull requests * #4965 <https://github.com/pmd/pmd/pull/4965>: Fix #4532: [java] Rename JUnit rules with overly restrictive names - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5040 <https://github.com/pmd/pmd/pull/5040>: [cpp] Ignore literals and ignore identifiers capability to C++ CPD - Jakub Dupak <https://github.com/jdupak> (@jdupak) * #5225 <https://github.com/pmd/pmd/pull/5225>: Fix #5067: [java] CloseResource: False positive for FileSystems.getDefault() - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) * #5241 <https://github.com/pmd/pmd/pull/5241>: Ignore javacc code in coverage report - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5245 <https://github.com/pmd/pmd/pull/5245>: [java] Improve UnitTestShouldUse{After,Before}Annotation rules to support JUnit5 and TestNG - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5247 <https://github.com/pmd/pmd/pull/5247>: Fix #5030: [java] SwitchDensity false positive with pattern matching - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5248 <https://github.com/pmd/pmd/pull/5248>: Fix #3362: [java] ImplicitSwitchFallThrough should consider switch expressions - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5251 <https://github.com/pmd/pmd/pull/5251>: Fix #5249 and #5250: [java] TooFewBranchesForSwitch ignore pattern matching and support switch expressions - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5252 <https://github.com/pmd/pmd/pull/5252>: Fix #4813: [java] SwitchStmtsShouldHaveDefault false positive with pattern matching - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5255 <https://github.com/pmd/pmd/pull/5255>: [java] Rename rule DefaultLabelNotLastInSwitch - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5256 <https://github.com/pmd/pmd/pull/5256>: Fix #5257: [java] NonCaseLabelInSwitch - support switch expressions - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5258 <https://github.com/pmd/pmd/pull/5258>: Ignore generated antlr classes in coverage reports - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5264 <https://github.com/pmd/pmd/pull/5264>: Fix #5261: [java] Fix NPE with empty pattern list - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5267 <https://github.com/pmd/pmd/pull/5267>: [java] Rename rule SwitchStmtsShouldHaveDefault to NonExhaustiveSwitch - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5269 <https://github.com/pmd/pmd/pull/5269>: Fix #5253: [java] Support Boolean wrapper class for BooleanGetMethodName rule - Aryant Tripathi <https://github.com/Aryant-Tripathi> (@Aryant-Tripathi) * #5273 <https://github.com/pmd/pmd/pull/5273>: Fix #5270: [apex] AvoidNonRestrictiveQueries: Fix regex for detecting LIMIT clause - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5275 <https://github.com/pmd/pmd/pull/5275>: Use plugin-classpath to simplify javacc-wrapper.xml - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5278 <https://github.com/pmd/pmd/pull/5278>: [java] CouplingBetweenObjects: improve violation message - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5279 <https://github.com/pmd/pmd/pull/5279>: Fix #5244: [java] UselessOperationOnImmutable: consider java.time.* types - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) π¦ Dependency updates * #5234 <https://github.com/pmd/pmd/issues/5234>: Bump com.google.protobuf:protobuf-java from 3.25.3 to 4.28.2 * #5274 <https://github.com/pmd/pmd/issues/5274>: Bump org.junit from 5.8.2 to 5.11.2 * #5276 <https://github.com/pmd/pmd/issues/5276>: Bump org.checkerframework:checker-qual from 2.11.1 to 3.48.1 * #5280 <https://github.com/pmd/pmd/issues/5280>: Bump danger from 9.5.0 to 9.5.1 in the all-gems group across 1 directory * #5281 <https://github.com/pmd/pmd/issues/5281>: Bump org.scala-lang:scala-reflect from 2.13.13 to 2.13.15 π Stats * 98 commits * 32 closed tickets & PRs * Days since last release: 27 |
From: Andreas D. <and...@pm...> - 2024-09-27 10:22:46
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.6.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.6.0/ 27-September-2024 - 7.6.0 The PMD team is pleased to announce PMD 7.6.0. This is a minor release. Table Of Contents * π New and noteworthy <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#new-and-noteworthy> o New Git default branch - "main" <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#new-git-default-branch---main> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#api-changes> * β¨ Merged pull requests <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#merged-pull-requests> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2024/09/pmd-760-27-september-2024-released/#stats> π New and noteworthy New Git default branch - "main" We are joining the Git community and updating "master" to "main". Using the term "master" for the main development branch can be offensive to some people. Existing versions of Git have been always capable of working with any branch name and since 2.28.0 (July 2020) the default initial branch is configurable (|init.defaultBranch|). Since October 2020, the default branch for new repositories on GitHub is "main". Finally, PMD will also use this new name for the main branch in all our own repositories. Why "main"? PMD uses a very simple branching model - pull requests with feature branches and one main development branch, from which releases are created. That's why "main" is currently the best fitting name. More information: - https://sfconservancy.org/news/2020/jun/23/gitbranchname/ - https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/ What changes? - We change the default branch on GitHub, so that pull requests are automatically created against |main| from now on. - If you have already a local clone of PMD's repository, you'll need to rename the old master branch locally: |git branch --move master main git fetch origin git branch --set-upstream-to=origin/main main git remote set-head origin --auto| More info: https://git-scm.com/book/en/v2/Git-Branching-Branch-Management#_changing_master and https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch#updating-a-local-clone-after-a-branch-name-changes - If you created a fork on GitHub, you'll need to change the default branch in your fork to |main| as well (Settings > Default Branch). - Some time after this release, we'll delete the old master branch on GitHub. Then only |main| can be used. - This change is expanded to the other PMD repositories as well, e.g. pmd-designer and pmd-regression-tester. π Fixed Issues * apex * #5138 <https://github.com/pmd/pmd/issues/5138>: [apex] Various false-negatives since 7.3.0 when using triggers (ApexCRUDViolation, CognitiveComplexity, OperationWithLimitsInLoop) * #5163 <https://github.com/pmd/pmd/issues/5163>: [apex] Parser error when using toLabel in SOSL query * #5182 <https://github.com/pmd/pmd/issues/5182>: [apex] Parser error when using GROUPING in a SOQL query * #5218 <https://github.com/pmd/pmd/issues/5218>: [apex] Parser error when using nested subqueries in SOQL * #5228 <https://github.com/pmd/pmd/issues/5228>: [apex] Parser error when using convertCurrency() in SOQL * core * #5059 <https://github.com/pmd/pmd/issues/5059>: [core] xml output doesn't escape CDATA inside its own CDATA * #5201 <https://github.com/pmd/pmd/issues/5201>: [core] PMD sarif schema file points to nonexistent location * #5222 <https://github.com/pmd/pmd/issues/5222>: [core] RuleReference/RuleSetWriter don't handle changed default property values correctly * #5229 <https://github.com/pmd/pmd/issues/5229>: [doc] CLI flag |--show-suppressed| needs to mention xml, html, summaryhtml * java * #5190 <https://github.com/pmd/pmd/issues/5190>: [java] NPE in type inference * java-codestyle * #5046 <https://github.com/pmd/pmd/issues/5046>: [java] LocalVariableCouldBeFinal false positive with try/catch * java-errorprone * #5068 <https://github.com/pmd/pmd/issues/5068>: [java] MissingStaticMethodInNonInstantiatableClass: false positive with builder pattern * #5207 <https://github.com/pmd/pmd/issues/5207>: [java] CheckSkipResult: false positve for a private method |void skip(int)| in a subclass of FilterInputStream π¨ API Changes No changes. β¨ Merged pull requests * #5186 <https://github.com/pmd/pmd/pull/5186>: [java] Cleanup things about implicit classes - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5188 <https://github.com/pmd/pmd/pull/5188>: [apex] Use new apex-parser 4.2.0 - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5191 <https://github.com/pmd/pmd/pull/5191>: [java] Fix #5046 - FPs in LocalVariableCouldBeFinal - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5192 <https://github.com/pmd/pmd/pull/5192>: [java] Fix #5190 - NPE in type inference caused by null type - ClΓ©ment Fournier <https://github.com/oowekyala> (@oowekyala <https://sourceforge.net/u/oowekyala/profile/>) * #5195 <https://github.com/pmd/pmd/pull/5195>: [apex] Fix various FNs when using triggers - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5202 <https://github.com/pmd/pmd/pull/5202>: [core] Sarif format: refer to schemastore.org - David Schach <https://github.com/dschach> (@dschach) * #5208 <https://github.com/pmd/pmd/pull/5208>: [doc] Added Codety to "Tools / Integrations" - Tony <https://github.com/random1223> (@random1223) * #5210 <https://github.com/pmd/pmd/pull/5210>: [core] Fix PMD's XMLRenderer to escape CDATA - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5211 <https://github.com/pmd/pmd/pull/5211>: Change branch master to main - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5212 <https://github.com/pmd/pmd/pull/5212>: [java] Adjust signature matching in CheckSkipResultRule - Juan MartΓn Sotuyo Dodero <https://github.com/jsotuyod> (@jsotuyod) * #5223 <https://github.com/pmd/pmd/pull/5223>: [core] Fix RuleReference / RuleSetWriter handling of properties - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) * #5224 <https://github.com/pmd/pmd/pull/5224>: [java] Fix #5068: Class incorrectly identified as non-instantiatable - Lukas GrΓ€f <https://github.com/lukasgraef> (@lukasgraef) * #5230 <https://github.com/pmd/pmd/pull/5230>: [doc] Documentation update for --show-suppressed flag - David Schach <https://github.com/dschach> (@dschach) * #5237 <https://github.com/pmd/pmd/pull/5237>: [apex] Support convertCurrency() in SOQL/SOSL - Andreas Dangel <https://github.com/adangel> (@adangel <https://sourceforge.net/u/adangel/profile/>) π¦ Dependency updates * #5185 <https://github.com/pmd/pmd/issues/5185>: Bump checkstyle from 10.14.0 to 10.18.1 * #5187 <https://github.com/pmd/pmd/issues/5187>: Bump org.apache.maven.plugins:maven-install-plugin from 3.1.1 to 3.1.3 * #5199 <https://github.com/pmd/pmd/issues/5199>: Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.1 to 3.1.3 * #5216 <https://github.com/pmd/pmd/issues/5216>: Bump com.github.siom79.japicmp:japicmp-maven-plugin from 0.20.0 to 0.23.0 * #5226 <https://github.com/pmd/pmd/issues/5226>: Bump rouge from 4.3.0 to 4.4.0 in the all-gems group across 1 directory * #5227 <https://github.com/pmd/pmd/issues/5227>: Bump com.google.code.gson:gson from 2.10.1 to 2.11.0 * #5232 <https://github.com/pmd/pmd/issues/5232>: Bump com.google.protobuf:protobuf-java from 3.25.3 to 3.25.5 * #5233 <https://github.com/pmd/pmd/issues/5233>: Bump webrick from 1.8.1 to 1.8.2 in /docs π Stats * 60 commits * 27 closed tickets & PRs * Days since last release: 27 |
From: Andreas D. <and...@pm...> - 2024-08-30 09:06:38
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.5.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.5.0/ 30-August-2024 - 7.5.0 The PMD team is pleased to announce PMD 7.5.0. This is a minor release. Table Of Contents * π New: Java 23 Support <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#new-java-23-support> * π New Rules <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#new-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#api-changes> o Deprecations <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#deprecations> o Experimental <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#experimental> * β¨ External Contributions <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#external-contributions> * π¦ Dependency updates <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#dependency-updates> * π Stats <https://sourceforge.net/p/pmd/news/2024/08/pmd-750-30-august-2024-released/#stats> π New: Java 23 Support This release of PMD brings support for Java 23. There are no new standard language features, but a couple of preview language features: * JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview) <https://openjdk.org/jeps/455> * JEP 476: Module Import Declarations (Preview) <https://openjdk.org/jeps/476> * JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) <https://openjdk.org/jeps/477> * JEP 482: Flexible Constructor Bodies (Second Preview) <https://openjdk.org/jeps/482> Note that String Templates (introduced as preview in Java 21 and 22) are not supported anymore in Java 23, see JDK-8329949 <https://bugs.openjdk.org/browse/JDK-8329949> for details. In order to analyze a project with PMD that uses these preview language features, you'll need to enable it via the environment variable |PMD_JAVA_OPTS| and select the new language version |23-preview|: |exportPMD_JAVA_OPTS=--enable-preview pmdcheck--use-versionjava-23-preview... | Note: Support for Java 21 preview language features have been removed. The version "21-preview" are no longer available. π New Rules * The new Java rule |AvoidSynchronizedStatement| <https://docs.pmd-code.org/pmd-doc-7.5.0/pmd_rules_java_multithreading.html#avoidsynchronizedstatement> finds synchronization blocks that could cause performance issues with virtual threads due to pinning. * The new JavaScript rule |AvoidConsoleStatements| <https://docs.pmd-code.org/pmd-doc-7.5.0/pmd_rules_ecmascript_performance.html#avoidconsolestatements> finds any function calls on the Console API (e.g. |console.log|). Using these in production code might negatively impact performance. π Fixed Issues * apex-performance * #5139 <https://github.com/pmd/pmd/issues/5139>: [apex] OperationWithHighCostInLoop: false negative for triggers * java * #5062 <https://github.com/pmd/pmd/issues/5062>: [java] Support Java 23 * #5167 <https://github.com/pmd/pmd/issues/5167>: [java] java.lang.IllegalArgumentException: \<?> cannot be a wildcard bound * java-bestpractices * #3602 <https://github.com/pmd/pmd/issues/3602>: [java] GuardLogStatement: False positive when compile-time constant is created from external constants * #4731 <https://github.com/pmd/pmd/issues/4731>: [java] GuardLogStatement: Documentation is unclear why getters are flagged * #5145 <https://github.com/pmd/pmd/issues/5145>: [java] UnusedPrivateMethod: False positive with method calls inside lambda * #5151 <https://github.com/pmd/pmd/issues/5151>: [java] GuardLogStatement: Should not need to guard parameterized log messages where the replacement arg is a constant from another class * #5152 <https://github.com/pmd/pmd/issues/5152>: [java] GuardLogStatement: Should not need to guard parameterized log messages where the replacement arg is "this" * #5153 <https://github.com/pmd/pmd/issues/5153>: [java] GuardLogStatement: Should not need to guard parameterized log messages where the replacement arg is an array element * java-design * #5048 <https://github.com/pmd/pmd/issues/5084>: [java] CognitiveComplexity: Exception when using Map.of() * #5162 <https://github.com/pmd/pmd/issues/5162>: [java] SingularField: False-positive when preceded by synchronized block * java-multithreading * #5175 <https://github.com/pmd/pmd/issues/5175>: [java] Update AvoidSynchronizedAtMethodLevel message to mention ReentrantLock, new rule AvoidSynchronizedStatement * javascript-performance * #5105 <https://github.com/pmd/pmd/issues/5105>: [javascript] Prohibit any console methods * plsql * #5125 <https://github.com/pmd/pmd/pull/5125>: [plsql] Improve merge statement (order of merge insert/update flexible, allow prefixes in column names) * plsql-bestpractices * #5132 <https://github.com/pmd/pmd/issues/5132>: [plsql] TomKytesDespair: XPathException for more complex exception handler π¨ API Changes Deprecations * pmd-jsp * |JspParserImpl| <https://docs.pmd-code.org/apidocs/pmd-jsp/7.5.0/net/sourceforge/pmd/lang/jsp/ast/JspParserImpl.html#> is deprecated now. It should have been package-private because this is an implementation class that should not be used directly. * pmd-plsql * |MergeUpdateClausePrefix| <https://docs.pmd-code.org/apidocs/pmd-plsql/7.5.0/net/sourceforge/pmd/lang/plsql/ast/PLSQLParserImpl.html#MergeUpdateClausePrefix()> is deprecated. This production is not used anymore and will be removed. Note: The whole parser implementation class has been deprecated since 7.3.0, as it is supposed to be internalized. * pmd-velocity * |VtlParserImpl| <https://docs.pmd-code.org/apidocs/pmd-velocity/7.5.0/net/sourceforge/pmd/lang/velocity/ast/VtlParserImpl.html#> is deprecated now. It should have been package-private because this is an implementation class that should not be used directly. * pmd-visualforce * |VfParserImpl| <https://docs.pmd-code.org/apidocs/pmd-visualforce/7.5.0/net/sourceforge/pmd/lang/visualforce/ast/VfParserImpl.html#> is deprecated now. It should have been package-private because this is an implementation class that should not be used directly. Experimental * pmd-java * Renamed |isUnnamedClass()| to |ASTCompilationUnit#isSimpleCompilationUnit| <https://docs.pmd-code.org/apidocs/pmd-java/7.5.0/net/sourceforge/pmd/lang/java/ast/ASTCompilationUnit.html#isSimpleCompilationUnit()> * |ASTImplicitClassDeclaration| <https://docs.pmd-code.org/apidocs/pmd-java/7.5.0/net/sourceforge/pmd/lang/java/ast/ASTImplicitClassDeclaration.html#> * |ASTImportDeclaration#isModuleImport| <https://docs.pmd-code.org/apidocs/pmd-java/7.5.0/net/sourceforge/pmd/lang/java/ast/ASTImportDeclaration.html#isModuleImport()> * |JavaVisitorBase#visit(ASTImplicitClassDeclaration, P)| <https://docs.pmd-code.org/apidocs/pmd-java/7.5.0/net/sourceforge/pmd/lang/java/ast/JavaVisitorBase.html#visit(net.sourceforge.pmd.lang.java.ast.ASTImplicitClassDeclaration,P)> β¨ External Contributions * #5125 <https://github.com/pmd/pmd/pull/5125>: [plsql] Improve merge statement (order of merge insert/update flexible, allow prefixes in column names) - Arjen Duursma <https://github.com/duursma> (@duursma) * #5175 <https://github.com/pmd/pmd/pull/5175>: [java] Update AvoidSynchronizedAtMethodLevel message to mention ReentrantLock, new rule AvoidSynchronizedStatement - Chas Honton <https://github.com/chonton> (@chonton <https://sourceforge.net/u/chonton/profile/>) π¦ Dependency updates * #5100 <https://github.com/pmd/pmd/issues/5100>: Enable Dependabot * #5141 <https://github.com/pmd/pmd/issues/5141>: Bump org.apache.maven.plugins:maven-checkstyle-plugin from 3.3.1 to 3.4.0 * #5142 <https://github.com/pmd/pmd/issues/5142>: Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0 * #5144 <https://github.com/pmd/pmd/issues/5144>: Bump org.codehaus.mojo:versions-maven-plugin from 2.16.2 to 2.17.1 * #5148 <https://github.com/pmd/pmd/issues/5148>: Bump org.apache.commons:commons-text from 1.11.0 to 1.12.0 * #5149 <https://github.com/pmd/pmd/issues/5149>: Bump org.apache.maven.plugins:maven-site-plugin from 4.0.0-M13 to 4.0.0-M16 * #5160 <https://github.com/pmd/pmd/issues/5160>: Bump org.pcollections:pcollections from 3.2.0 to 4.0.2 * #5161 <https://github.com/pmd/pmd/issues/5161>: Bump danger from 9.4.3 to 9.5.0 in the all-gems group across 1 directory * #5164 <https://github.com/pmd/pmd/issues/5164>: Bump org.apache.maven.plugins:maven-dependency-plugin from 3.6.1 to 3.7.1 * #5165 <https://github.com/pmd/pmd/issues/5165>: Bump the all-gems group across 1 directory with 2 updates * #5171 <https://github.com/pmd/pmd/issues/5171>: Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.19 * #5180 <https://github.com/pmd/pmd/issues/5180>: Bump net.sf.saxon:Saxon-HE from 12.4 to 12.5 π Stats * 87 commits * 25 closed tickets & PRs * Days since last release: 35 |
From: David D. <dav...@or...> - 2024-08-23 12:47:21
|
Welcome to the latest OpenJDK Quality Outreach update! Everything is on track for the General Availability of Java 23 on September 17th [1] as the JDK 23 Release Candidate builds (RC2 - builds 37) are now available [2]. And before shifting your attention to JDK 24, make sure to check the Heads-Up below as it is related to an important JAXP update in JDK 23. The JVM Language Summit took place earlier this month in Santa Clara (California). During this unique conference, key updates around the Java platforms were presented and discussed. So, make sure to watch the JVMLS 2024 playlist [3] as videos are added regularly. And it's not really a surprise but Valhalla was a highly discussed topic. In his session [4], Brian Goetz (Java Language Architect) explained the proposed solution: value classes, null-restricted types, improved definite assignment analysis, and strict initialization. Around the same time-frame, Valhalla Early-Access builds implementing Value Classes and Objects were also made available [5], see the Release Notes [6] for the details. As usual, feedback should be reported to the proper mailing list [7]. [1] https://openjdk.org/projects/jdk/23/ [2] https://jdk.java.net/23/ [3] https://www.youtube.com/playlist?list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1 [4] https://www.youtube.com/watch?v=IF9l8fYfSnI [5] https://jdk.java.net/valhalla/ [6] https://openjdk.org/projects/valhalla/early-access [7] https://mail.openjdk.org/mailman/listinfo/valhalla-dev ## Heads-up - JDK 23: Prepare for a More Restrictive JAXP Configuration The Java platform supports XML processing with JAXP (Java APIs for XML Processing) that are based on a wide range of XML technologies and standards, which can make them challenging to secure. To mitigate risks, JAXP offers comprehensive security features [8], but the default settings of some security features are not strict, making them opt-in. To improve out-of-the-box security, future JDK releases will make XML processing more restrictive by default and JDKs 21 to 23 help developers prepare for these changes. ### JDK 21: JAXP Configuration File JDK 21 added `$JAVA_HOME/conf/jaxp.properties` as the default JAXP configuration file, property settings in this file reflect the current, built-in defaults for the JDK. JDK 21 also added the system property `java.xml.config.file` for specifying the location of a custom configuration file. For details, refer to JDK-8303530 [9] or the `java.xml` documentation [10]. ### JDK 23: Restrictive JAXP Configuration File Template JDK 23 adds `$JAVA_HOME/conf/jaxp-strict.properties.template`, a JAXP configuration file template that specifies more restrictive XML processing settings. It is recommended to test applications on these more restrictive settings to prepare them for a future JDK release that has them as default. The following steps should be used to test an application with that template: * copy the template file to a location outside of `$JAVA_HOME/conf`, e.g. `/<my_path>/jaxp-strict.properties` * run the application with the system property `java.xml.config.file` set to the file's path, e.g. `java -Djava.xml.config.file=/<my_path>/jaxp-strict.properties myApp` For details, please refer to JDK-8330542 [11]. [8] https://docs.oracle.com/en/java/javase/22/security/java-api-xml-processing-jaxp-security-guide.html#GUID-6E76FE41-A8C5-4F56-AB46-83A89B1E904A [9] https://bugs.openjdk.org/browse/JDK-8303530 [10] https://docs.oracle.com/en/java/javase/21/docs/api/java.xml/module-summary.html#Conf [11] https://bugs.openjdk.org/browse/JDK-8330542 ## JDK 24 Early-Access Builds The JDK 24 early-access builds 12 are available [12], and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [13]. ### Changes in recent JDK 24 builds that may be of interest: - JDK-8335638: Calling VarHandle.{access-mode} methods reflectively throws wrong exception - JDK-8329471: Remove GTK2 - JDK-8333772: Incorrect Kerberos behavior when udp_preference_limit = 0 - JDK-8304929: MethodTypeDesc throws an unchecked exception than ReflectiveOperationException ⦠- JDK-4966250: SSLSessionContext.setSessionTimeout() documentation could be updated - JDK-8337506: Disable "best-fit" mapping on Windows command line - JDK-8336479: Provide Process.waitFor(Duration) - JDK-8336999: Verification for resource area allocated data structures in C2 - JDK-8335480: Only deoptimize threads if needed when closing shared arena - JDK-8335939: Hide element writing across the ClassFile API - JDK-8336489: Track scoped accesses in JVMCI compiled code - JDK-8334492: DiagnosticCommands (jcmd) should accept %p in output filenames and substitute PID - JDK-8334495: Use FFM instead of jdk.internal.misc.Unsafe in java.desktop font implementation - JDK-8333396: Use StringBuilder internally for java.text.Format.* formatting - JDK-8336815: Several methods in java.net.Socket and ServerSocket do not s⦠Note: A more exhaustive list of changes can be found here [14]. [12] https://jdk.java.net/24/ [13] https://jdk.java.net/24/release-notes [14] https://github.com/openjdk/jdk/compare/jdk-24+7...jdk-24+12 # Project Loom New Early-Access Builds The latest Loom early access builds (Builds 24-loom+3-33 -2024/7/27) are now available [15]. These builds, based on an incomplete version of JDK 24, improve the implementation of Java monitors (synchronized methods) to work better with virtual threads. These builds are intended for developers looking to "kick the tires" and provide feedback or bug reports. Feedback should be reported to the Loom mailing list [16] (subscription required). [15] https://jdk.java.net/loom/ [16] http://mail.openjdk.org/mailman/listinfo/loom-dev # JavaFX Early-Access Builds These are early access builds of the JavaFX 23 and 24 Runtime built from openjdk/jfx [17]. These builds enable JavaFX application developers to build and test their applications with JavaFX 23 and 24 on JDK 23 and 24 respectively. And although these builds are designed to work with JDK 23 EA, they are also known to work with JDK 21 and later versions. The latest early access builds of JavaFX 23 (Builds 27) are available [18], under the GNU General Public License, version 2, with the Classpath Exception. And similarly, the latest early access builds of JavaFX 24 (Builds 4) are available here [19]. [17] https://github.com/openjdk/jfx [18] https://jdk.java.net/javafx23/ [19] https://jdk.java.net/javafx24/ ## Topics of Interest - JDK 23 G1/Parallel/Serial GC changes https://tschatzl.github.io/2024/07/22/jdk23-g1-serial-parallel-gc-changes.html - How to Read a JDK Enhancement Proposal https://inside.java/2024/08/01/newscast-74/ - JFR Event to Detect Invocations of Deprecated Methods https://egahlin.github.io/2024/05/31/deprecated-event.html - JVMLS: Valhalla - Where Are We? https://www.youtube.com/watch?v=IF9l8fYfSnI - JVMLS: An Opinionated Overview on Static Analysis for Java https://inside.java/2024/08/20/jvmls-static-analysis/ - JVMLS: Rethinking Java String Concatenation https://inside.java/2024/08/19/jvmls-string-concatention/ - JVMLS: Project Babylon - Code Reflection https://inside.java/2024/08/14/jvmls-code-reflection/ - JVMLS: A Code Reflection Example - Translating Java to SPIR-V https://inside.java/2024/08/16/jvmls-spir-v/ - JVMLS: Java in 2024 Keynote https://inside.java/2024/08/12/jvmls-keynote/ ~ As always, please ping me if you encounter issues with an early-access build. And see you next month for the Java 23 launch! --David |
From: Andreas D. <and...@pm...> - 2024-07-26 09:07:28
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.4.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.4.0/ 26-July-2024 - 7.4.0 The PMD team is pleased to announce PMD 7.4.0. This is a minor release. Table Of Contents * π New and changed rules <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#new-and-changed-rules> o New Rules <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#new-rules> o Changed rules <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#changed-rules> o Renamed rules <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#renamed-rules> * π Fixed Issues <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#fixed-issues> * π¨ API Changes <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#api-changes> * β¨ External Contributions <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#external-contributions> * π Stats <https://sourceforge.net/p/pmd/news/2024/07/pmd-740-26-july-2024-released/#stats> π New and changed rules New Rules * The new Apex rule |AvoidNonRestrictiveQueries| <https://docs.pmd-code.org/pmd-doc-7.4.0/pmd_rules_apex_performance.html#avoidnonrestrictivequeries> finds SOQL and SOSL queries without a where or limit statement. This can quickly cause governor limit exceptions. Changed rules * |ClassNamingConventions| <https://docs.pmd-code.org/pmd-doc-7.4.0/pmd_rules_apex_codestyle.html#classnamingconventions> (Apex Codestyle): Two new properties to configure different patterns for inner classes and interfaces: |innerClassPattern| and |innerInterfacePattern|. Renamed rules * |InaccurateNumericLiteral| <https://docs.pmd-code.org/pmd-doc-7.4.0/pmd_rules_ecmascript_errorprone.html#inaccuratenumericliteral> (JavaScript Error Prone) has been renamed from |InnaccurateNumericLiteral|. The old rule name still works but is deprecated. π Fixed Issues * apex o #5094 <https://github.com/pmd/pmd/issues/5094>: [apex] "No adapter exists for type" error message printed to stdout instead of stderr * apex-bestpractices o #5095 <https://github.com/pmd/pmd/issues/5095>: [apex] ApexUnitTestShouldNotUseSeeAllDataTrue false negative due to casing (regression in PMD 7) * apex-codestyle o #4800 <https://github.com/pmd/pmd/issues/4800>: [apex] ClassNamingConvention: Support naming convention for /inner/ classes * apex-performance o #635 <https://github.com/pmd/pmd/issues/635>: [apex] New Rule: Avoid soql/sosl queries without a where clause or limit statement * java-bestpractices o #5106 <https://github.com/pmd/pmd/issues/5106>: [java] AccessorClassGeneration: Node was null for default constructor o #5110 <https://github.com/pmd/pmd/issues/5110>: [java] UnusedPrivateMethod for method referenced by lombok.Builder.ObtainVia o #5117 <https://github.com/pmd/pmd/issues/5117>: [java] UnusedPrivateMethod for methods annotated with jakarta.annotation.PostConstruct or PreDestroy * java-errorprone o #1488 <https://github.com/pmd/pmd/issues/1488>: [java] MissingStaticMethodInNonInstantiatableClass: False positive with Lombok Builder on Constructor * javascript-errorprone o #2367 <https://github.com/pmd/pmd/issues/2367>: [javascript] InnaccurateNumericLiteral is misspelled o #4716 <https://github.com/pmd/pmd/issues/4716>: [javascript] InaccurateNumericLiteral with number 259200000 * plsql o #5086 <https://github.com/pmd/pmd/pull/5086>: [plsql] Fixed issue with missing optional table alias in MERGE usage o #5087 <https://github.com/pmd/pmd/pull/5087>: [plsql] Add support for SQL_MACRO o #5088 <https://github.com/pmd/pmd/pull/5088>: [plsql] Add support for 'DEFAULT' clause on the arguments of some oracle functions o #5133 <https://github.com/pmd/pmd/issues/5133>: [plsql] AssertionError: Root of the tree should implement RootNode for a PL/SQL type declaration * cli o #5120 <https://github.com/pmd/pmd/issues/5120>: [cli] Can't start designer under Windows * core o #5091 <https://github.com/pmd/pmd/issues/5091>: [core] PMD CPD v7.3.0 gives deprecation warning for skipLexicalErrors even when not used π¨ API Changes * javascript o The old rule name |InnaccurateNumericLiteral| has been deprecated. Use the new name |InaccurateNumericLiteral| <https://docs.pmd-code.org/pmd-doc-7.4.0/pmd_rules_ecmascript_errorprone.html#inaccuratenumericliteral> instead. β¨ External Contributions * #5048 <https://github.com/pmd/pmd/pull/5048>: [apex] Added Inner Classes to Apex Class Naming Conventions Rule - Justin Stroud <https://github.com/justinstroudbah> (@justinstroudbah / @sgnl-labs) * #5086 <https://github.com/pmd/pmd/pull/5086>: [plsql] Fixed issue with missing optional table alias in MERGE usage - Arjen Duursma <https://github.com/duursma> (@duursma) * #5087 <https://github.com/pmd/pmd/pull/5087>: [plsql] Add support for SQL_MACRO - Arjen Duursma <https://github.com/duursma> (@duursma) * #5088 <https://github.com/pmd/pmd/pull/5088>: [plsql] Add support for 'DEFAULT' clause on the arguments of some oracle functions - Arjen Duursma <https://github.com/duursma> (@duursma) * #5107 <https://github.com/pmd/pmd/pull/5107>: [doc] Update maven.md - Typo fixed for maven target - karthikaiyasamy <https://github.com/karthikaiyasamy> (@karthikaiyasamy) * #5109 <https://github.com/pmd/pmd/pull/5109>: [java] Exclude constructor with lombok.Builder for MissingStaticMethodInNonInstantiatableClass - Krzysztof Debski <https://github.com/kdebski85> (@kdebski85) * #5111 <https://github.com/pmd/pmd/pull/5111>: [java] Fix UnusedPrivateMethod for @lombok.Builder.ObtainVia - Krzysztof Debski <https://github.com/kdebski85> (@kdebski85) * #5118 <https://github.com/pmd/pmd/pull/5118>: [java] FP for UnusedPrivateMethod with Jakarta @PostConstruct/PreDestroy annotations - Krzysztof Debski <https://github.com/kdebski85> (@kdebski85) * #5121 <https://github.com/pmd/pmd/pull/5121>: [plsql] Fixed issue with missing optional table alias in MERGE usage - Arjen Duursma <https://github.com/duursma> (@duursma) π Stats * 81 commits * 32 closed tickets & PRs * Days since last release: 27 |
From: David D. <dav...@or...> - 2024-07-22 05:53:14
|
Welcome to the OpenJDK Quality Outreach summer update. JDK 23 is now in Rampdown Phase Two [1], its overall feature has been frozen a few weeks ago. Per the JDK Release Process, we have now turned our focus to P1 and P2 bugs, which can be fixed with approval [2]. Late enhancements are still possible, with approval, but the bar is now extraordinarily high. That also means that the JDK 23 Initial Release Candidates are fast approaching, i.e., August 8th [3]! So, and in addition to testing your projects with the latest JDK 23 early-access builds, it is now a good time to start testing with the JDK 24 early-access builds. Make sure to also check the heads-up below as some are related to JDK 23 and might have some impact, i.e., the first one being related to the eventual removal of the Security Manager and the second one discusses the removal of the legacy COMPAT locale provider. [1] https://mail.openjdk.org/pipermail/jdk-dev/2024-July/009252.html [2] https://openjdk.org/jeps/3#rdp-2 [3] https://openjdk.org/projects/jdk/23/ ## Heads-up - JDK 23: Subject.getSubject API Requires Allowing the Security Manager In JDK 17 and as announced in JEP 411 [4], the Security Manager was deprecated for removal. As part of that change, several Security Manager APIs, such as `AccessControlContext`, were deprecated for removal. The `Subject::doAs` and `Subject::getSubject` APIs depend on Security Manager related APIs even though they do not require Security Manager to be installed to use them. As of JDK 23 [5], to help applications prepare for the eventual removal of the Security Manager, subject authorization and the Subject APIs' behavior depend on allowing the Security Manager: - If the system property `java.security.manager` is set on the command line to the empty string, a class name, or the value `allow` then there is no behavior change compared to previous releases. - If the system property `java.security.manager` is not set on the command line or has been set on the command line to the value `disallow`, invoking the `Subject.getSubject` method will throw `UnsupportedOperationException`. Yet, running an application with `-Djava.security.manager=allow` is a temporary workaround to keep older code working. Maintainers of code using `Subject.doAs` and `Subject.getSubject` are strongly encouraged to migrate it with utmost priority to the replacement APIs, `Subject.callAs` and `Subject.current`. Make sure to check [5] and [6] for additional details. The jdeprscan tool [7] scans a JAR file for usage of deprecated API elements and is helpful to find code using these methods. Additionally, consider migrating as soon as possible code that stores a `Subject` in an `AccessControlContext` and invokes `AccessController.doPrivileged` with that context. Such code will stop working when the Security Manager is removed. [4] https://openjdk.org/jeps/411 [5] https://jdk.java.net/23/release-notes#b15 [6] https://inside.java/2024/07/08/quality-heads-up/ [7] https://dev.java/learn/jvm/tools/core/jdeprscan/ ## Heads-up - JDK 23: Unicode / Removal of COMPAT Locale Provider ### A Quick History of Locale Data in the JDK Before the Unicode Consortium created the Common Locale Data Repository (CLDR) in 2003 to manage locale data, the JDK had to provide its own collection. It did so successfully and in JDK 8 supported about 160 locales. To reduce maintenance effort, allow better interoperability between platforms, and improve locale data quality, the JDK started to move towards CLDR in 2014: - JDK 8 comes with two locale data providers, which can be selected with the system property java.locale.providers: . JRE/COMPAT for the JDKβs legacy data collection (default) . CLDR for the CLDR data . a custom locale provider can be implemented - JDK 9 picks CLDR by default - JDK 21 issues a warning on JRE/COMPAT There are plenty of minor and a few notable differences between the legacy data and CLDR - the recently rewritten JEP 252 [8] lists a few of them. ### Locale Data in JDK 23 JDK 23 [9] removes legacy locale data. As a consequence, setting java.locale.providers to JRE or COMPAT has no effect. Projects that are still using legacy locale data are highly encouraged to switch to CLDR as soon as possible. Where that is infeasible, two alternatives remain: - Create custom formatters with patterns that mimic the legacy behavior and use them everywhere where locale-sensitive data is written or parsed. - Implement a custom locale data provider [10]. For more details on that as well as on CLDR in the JDK in general, please check JEP 252 [8] that has been recently rewritten to provide better information and guidance. [8] https://openjdk.org/jeps/252 [9] https://bugs.openjdk.org/browse/JDK-8325568 [10] https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/spi/LocaleServiceProvider.html ## Heads-up - JDK 23: Initial Leyden Early-Access Builds Project Leyden published its first early-access builds (24-leyden+2-8 2024/6/20) [11]. The initial release is focused on improving Java applications start-up time, but other Leyden optimizations will be explored in future releases. Below are some of the highlights of these Leyden EA builds: - Ahead-of-time compilation of Java methods to natively execute them as soon as the application starts up in the production run; - Ahead-of-time resolution of constant pool entries allows the AOT compiler to generate better code and for your application to start faster; - Ahead-of-time generation of Dynamic Proxies and reflection data as frameworks use those extensively during start-up time; - A unified Cache Data Store (CDS) archive to simplify the creation of the CDS archive, while supporting multiple types of optimization artifacts; - Loaded Classes in the CDS archive as soon the application starts up; - Class loader lookup cache to help application frameworks perform repeated lookups without repeatedly scanning the classpath; - Archived Method Profiles to reach Java application peak performance faster. The easiest way to start with Leyden features is by using the java program in the Leyden Early Access Release with the -XX:CacheDataStore flag. More details of this Leyden EA Build can be found in the release notes [12]. [11] https://jdk.java.net/leyden/ [12] https://github.com/openjdk/leyden/blob/leyden-ea1-release-notes/README.md ## JDK 23 Early-Access Builds The JDK 23 early-access builds 32 are available [13], and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [14] and the Javadoc here [15]. [13] https://jdk.java.net/23/ [14] https://jdk.java.net/23/release-notes [15] https://download.java.net/java/early_access/jdk23/docs/api/ ## JDK 24 Early-Access Builds The JDK 24 early-access builds 7 are available [16], and are provided under the GNU General Public License v2, with the Classpath Exception. The Release Notes are available here [17]. ### Changes in recent JDK 24 builds that may be of interest: - JDK-8334299: Deprecate LockingMode option, along with LM_LEGACY and LM_MONITOR - JDK-8330846: Add stacks of mounted virtual threads to the HotSpot thread β¦ - JDK-8333649: Allow different NativeCall encodings - JDK-8333755: NumberFormat integer only parsing breaks when format has suffix - JDK-8330842: Support AES CBC with Ciphertext Stealing (CTS) in SunPKCS11 - JDK-8327793: Deprecate jstatd for removal - JDK-8248981: Specify list of standard message digest and mgf algorithms for RSASSA-PSS signature - JDK-8334580: Deprecate no-arg constructor BasicSliderUI() for removal - JDK-8320448: Accelerate IndexOf using AVX2 - JDK-8333749: Consolidate ConstantDesc conversion in java.base - JDK-8329141: Obsolete RTM flags and code - JDK-8330198: Add some class loading related perf counters to measure VM startup - JDK-8330699: Obsolete -XX:+UseEmptySlotsInSupers - JDK-8334734: Remove specialized readXxxEntry methods from ClassReader This is only a curated list, a complete list of changes can be found here [18]. [16] https://jdk.java.net/24/ [17] https://jdk.java.net/24/release-notes [18] https://github.com/openjdk/jdk/compare/jdk-24+0...jdk-24+7 ## Topics of Interest - Integrity by Default - Inside Java Newscast https://inside.java/2024/07/18/newscast-73/ - Java and AI? - Inside Java Newscast https://inside.java/2024/07/04/newscast-72/ - What Happened to String Templates? - Inside Java Newscast https://inside.java/2024/06/20/newscast-71/ - Java Language Futures - Spring 2024 Edition https://inside.java/2024/07/01/java-language-futures/ - Project Loom - Structured Concurrency https://inside.java/2024/07/13/structured-concurrency/ - How to Build Custom Java Runtimes with Jlink https://inside.java/2024/06/21/build-runtimes-with-jlink/ ## July 2024 Critical Patch Update Released As part of the July 2024 CPU, Oracle released OpenJDK 22.0.2, JavaFX 22.0.2, JDK 22.0.2, JDK 21.0.4 LTS, JDK 17.0.12 LTS, JDK 11.0.24 LTS, JDK 8u421 as as well as JDK 8u421-perf. ~ We still have a few days before JDK 23 enters into the Release Candidate phase so please make sure to test your projects on the latest early-access builds and report any issueβ¦ but that shouldn't be a reason to not enjoy the summer and recharge your batteries! π --David |