Merge branch '7.0.x' into wire-processing-stages
@ -60,9 +60,14 @@ elif travis_isPullRequest; then
|
||||
log_info "This is a pull-request build"
|
||||
./mvnw verify $MVN_BUILD_FLAGS
|
||||
(
|
||||
set +e
|
||||
log_info "Running danger"
|
||||
bundle exec danger --verbose
|
||||
set +e
|
||||
# Create a corresponding remote branch locally
|
||||
if ! git show-ref --verify --quiet refs/heads/${TRAVIS_BRANCH}; then
|
||||
git fetch --no-tags origin +refs/heads/${TRAVIS_BRANCH}:refs/remotes/origin/${TRAVIS_BRANCH}
|
||||
git branch ${TRAVIS_BRANCH} origin/${TRAVIS_BRANCH}
|
||||
fi
|
||||
log_info "Running danger"
|
||||
bundle exec danger --verbose
|
||||
)
|
||||
|
||||
elif travis_isPush; then
|
||||
|
@ -1,21 +1,18 @@
|
||||
#
|
||||
# Original sources:
|
||||
# Linux: https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/jdk-11.0.3%2B7/
|
||||
# https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-x64_linux_11.0.3_7.tar.gz
|
||||
# MacOSX: https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/jdk-11.0.3%2B7/
|
||||
# https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_mac_hotspot_11.0.3_7.tar.gz
|
||||
# AdoptOpenJDK Builds from:
|
||||
# https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/tag/jdk-11.0.4%2B11
|
||||
#
|
||||
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
OPENJDK_ARCHIVE=OpenJDK11U-jdk_x64_mac_hotspot_11.0.3_7.tar.gz
|
||||
DOWNLOAD_URL=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_mac_hotspot_11.0.4_11.tar.gz
|
||||
COMPONENTS_TO_STRIP=3 # e.g. jdk-11.0.3+7/Contents/Home/bin/java
|
||||
else
|
||||
OPENJDK_ARCHIVE=OpenJDK11U-x64_linux_11.0.3_7.tar.gz
|
||||
DOWNLOAD_URL=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz
|
||||
COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java
|
||||
fi
|
||||
|
||||
DOWNLOAD_URL=https://pmd-code.org/${OPENJDK_ARCHIVE}
|
||||
OPENJDK_ARCHIVE=$(basename $DOWNLOAD_URL)
|
||||
|
||||
LOCAL_DIR=${HOME}/.cache/openjdk
|
||||
TARGET_DIR=${HOME}/openjdk11
|
||||
|
||||
|
@ -12,7 +12,7 @@ unnecessary object creation, and so forth. It supports Java, JavaScript, Salesfo
|
||||
XML, XSL.
|
||||
|
||||
Additionally it includes **CPD**, the copy-paste-detector. CPD finds duplicated code in
|
||||
C/C++, C#, Dart, Fortran, Go, Groovy, Java, JavaScript, JSP, Kotlin, Matlab,
|
||||
C/C++, C#, Dart, Fortran, Go, Groovy, Java, JavaScript, JSP, Kotlin, Lua, Matlab,
|
||||
Objective-C, Perl, PHP, PLSQL, Python, Ruby, Salesforce.com Apex, Scala, Swift and Visualforce.
|
||||
|
||||
## Source and Documentation
|
||||
|
@ -1,9 +1,9 @@
|
||||
repository: pmd/pmd
|
||||
|
||||
pmd:
|
||||
version: 6.15.0
|
||||
previous_version: 6.14.0
|
||||
date: ??-May-2019
|
||||
version: 6.18.0
|
||||
previous_version: 6.17.0
|
||||
date: ??-August-2019
|
||||
release_type: minor
|
||||
|
||||
# release types: major, minor, bugfix
|
||||
|
@ -67,6 +67,9 @@ entries:
|
||||
- title: Writing XPath rules
|
||||
url: /pmd_userdocs_extending_writing_xpath_rules.html
|
||||
output: web, pdf
|
||||
- title: Rule designer reference
|
||||
url: /pmd_userdocs_extending_designer_reference.html
|
||||
output: web, pdf
|
||||
- title: Defining rule properties
|
||||
url: /pmd_userdocs_extending_defining_properties.html
|
||||
output: web, pdf
|
||||
@ -253,6 +256,21 @@ entries:
|
||||
- title: Security
|
||||
output: web, pdf
|
||||
url: /pmd_rules_vf_security.html
|
||||
- title: null
|
||||
output: web, pdf
|
||||
subfolders:
|
||||
- title: Swift Rules
|
||||
output: web, pdf
|
||||
subfolderitems:
|
||||
- title: Index
|
||||
output: web, pdf
|
||||
url: /pmd_rules_swift.html
|
||||
- title: Best Practices
|
||||
output: web, pdf
|
||||
url: /pmd_rules_swift_bestpractices.html
|
||||
- title: Error Prone
|
||||
output: web, pdf
|
||||
url: /pmd_rules_swift_errorprone.html
|
||||
- title: null
|
||||
output: web, pdf
|
||||
subfolders:
|
||||
|
22
docs/_plugins/details_block.rb
Normal file
@ -0,0 +1,22 @@
|
||||
# Mimics an HTML <details> element
|
||||
# Courtesy of https://github.com/towbi (https://gist.github.com/towbi/a67fda47e075d2b7fa4764bb42605063)
|
||||
class DetailsTag < Liquid::Block
|
||||
|
||||
def initialize(tag_name, markup, tokens)
|
||||
super
|
||||
@caption = markup
|
||||
end
|
||||
|
||||
def render(context)
|
||||
site = context.registers[:site]
|
||||
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
|
||||
# below Jekyll 3.x use this:
|
||||
# converter = site.getConverterImpl(::Jekyll::Converters::Markdown)
|
||||
caption = converter.convert(@caption).gsub(/<\/?p[^>]*>/, '').chomp
|
||||
body = converter.convert(super(context))
|
||||
"<details><summary>#{caption}</summary>#{body}</details>"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Liquid::Template.register_tag('details', DetailsTag)
|
@ -19,4 +19,36 @@
|
||||
top: 50px; /* height of the nav bar */
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
details {
|
||||
border-radius: 3px;
|
||||
background: #EEE;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
details p {
|
||||
padding: 5px 10px 5px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
details summary {
|
||||
font-size: 11pt;
|
||||
vertical-align: top;
|
||||
background: #d2d2d2;
|
||||
color: black;
|
||||
border-radius: 3px;
|
||||
padding: 5px 10px;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
details summary::after {
|
||||
content: "...";
|
||||
}
|
||||
|
||||
details[open] summary {
|
||||
background-color: #347DBE;
|
||||
color: white;
|
||||
}
|
||||
|
BIN
docs/images/designer/bottom-ui.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/images/designer/demo.gif
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
docs/images/designer/designer-top.png
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
docs/images/designer/designer.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
docs/images/designer/empty-tests.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/designer/export-example.gif
Normal file
After Width: | Height: | Size: 181 KiB |
BIN
docs/images/designer/hover-selection.gif
Normal file
After Width: | Height: | Size: 283 KiB |
BIN
docs/images/designer/parents-bar.gif
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/designer/property-defs.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/designer/property-edit.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/designer/tests/add-violation.gif
Normal file
After Width: | Height: | Size: 179 KiB |
BIN
docs/images/designer/tests/all-green.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
docs/images/designer/tests/export.gif
Normal file
After Width: | Height: | Size: 275 KiB |
BIN
docs/images/designer/tests/failing.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
docs/images/designer/tests/import.gif
Normal file
After Width: | Height: | Size: 246 KiB |
BIN
docs/images/designer/tests/load.gif
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
docs/images/designer/tests/property.gif
Normal file
After Width: | Height: | Size: 161 KiB |
BIN
docs/images/designer/tests/toolbar.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
docs/images/designer/usages.gif
Normal file
After Width: | Height: | Size: 71 KiB |
@ -19,6 +19,27 @@ This is a {{ site.pmd.release_type }} release.
|
||||
|
||||
### New and noteworthy
|
||||
|
||||
#### Full Antlr support
|
||||
|
||||
Languages backed by an Antlr grammar are now fully supported. This means, it's now possible not only to use Antlr grammars for CPD,
|
||||
but we can actually build full-fledged PMD rules for them as well. Both the traditional Java visitor rules, and the simpler
|
||||
XPath rules are available to users.
|
||||
|
||||
We expect this to enable both our dev team and external contributors to largely extend PMD usage for more languages.
|
||||
|
||||
#### Swift support
|
||||
|
||||
Given the full Antlr support, PMD now fully supports Swift. We are pleased to announce we are shipping a number of rules starting with PMD 7.
|
||||
|
||||
* {% rule "swift/errorprone/ForceCast" %} (`swift-errorprone`) flags all force casts, making sure you are defensively considering all types.
|
||||
Having the application crash shouldn't be an option.
|
||||
* {% rule "swift/errorprone/ForceTry" %} (`swift-errorprone`) flags all force tries, making sure you are defensively handling exceptions.
|
||||
Having the application crash shouldn't be an option.
|
||||
* {% rule "swift/bestpractices/ProhibitedInterfaceBuilder" %} (`swift-bestpractices`) flags any usage of interface builder. Interface builder
|
||||
files are prone to merge conflicts, and are impossible to code review, so larger teams usually try to avoid it or reduce it's usage.
|
||||
* {% rule "swift/bestpractices/UnavailableFunction" %} (`swift-bestpractices`) flags any function throwing a `fatalError` not marked as
|
||||
`@available(*, unavailable)` to ensure no calls are actually performed in the codebase.
|
||||
|
||||
### Fixed Issues
|
||||
|
||||
### API Changes
|
||||
@ -34,7 +55,11 @@ This is a {{ site.pmd.release_type }} release.
|
||||
|
||||
### External Contributions
|
||||
|
||||
* [#1658](https://github.com/pmd/pmd/pull/1658/): \[core] Node support for Antlr-based languages
|
||||
* [#1658](https://github.com/pmd/pmd/pull/1658): \[core] Node support for Antlr-based languages - [Matías Fraga](https://github.com/matifraga)
|
||||
* [#1698](https://github.com/pmd/pmd/pull/1698): \[core] [swift] Antlr Base Parser adapter and Swift Implementation - [Lucas Soncini](https://github.com/lsoncini)
|
||||
* [#1774](https://github.com/pmd/pmd/pull/1774): \[core] Antlr visitor rules - [Lucas Soncini](https://github.com/lsoncini)
|
||||
* [#1877](https://github.com/pmd/pmd/pull/1877): \[swift] Feature/swift rules - [Matias Fraga](https://github.com/matifraga)
|
||||
* [#1882](https://github.com/pmd/pmd/pull/1882): \[swift] UnavailableFunction Swift rule - [Tomás de Lucca](https://github.com/tomidelucca)
|
||||
|
||||
{% endtocmaker %}
|
||||
|
||||
|
@ -73,6 +73,52 @@ the breaking API changes will be performed in 7.0.0.
|
||||
an API is tagged as `@Deprecated` or not in the latest minor release. During the development of 7.0.0,
|
||||
we may decide to remove some APIs that were not tagged as deprecated, though we'll try to avoid it." %}
|
||||
|
||||
#### 6.17.0
|
||||
|
||||
No changes.
|
||||
|
||||
#### 6.16.0
|
||||
|
||||
##### Deprecated APIs
|
||||
|
||||
> Reminder: Please don't use members marked with the annotation {% jdoc core::annotation.InternalApi %}, as they will likely be removed, hidden, or otherwise intentionally broken with 7.0.0.
|
||||
|
||||
|
||||
###### In ASTs
|
||||
|
||||
As part of the changes we'd like to do to AST classes for 7.0.0, we would like to
|
||||
hide some methods and constructors that rule writers should not have access to.
|
||||
The following usages are now deprecated **in the Java AST** (with other languages to come):
|
||||
|
||||
* Manual instantiation of nodes. **Constructors of node classes are deprecated** and marked {% jdoc core::annotation.InternalApi %}. Nodes should only be obtained from the parser, which for rules, means that never need to instantiate node themselves. Those constructors will be made package private with 7.0.0.
|
||||
* **Subclassing of abstract node classes, or usage of their type**. Version 7.0.0 will bring a new set of abstractions that will be public API, but the base classes are and will stay internal. You should not couple your code to them.
|
||||
* In the meantime you should use interfaces like {% jdoc java::lang.java.ast.JavaNode %} or {% jdoc core::lang.ast.Node %}, or the other published interfaces in this package, to refer to nodes generically.
|
||||
* Concrete node classes will **be made final** with 7.0.0.
|
||||
* Setters found in any node class or interface. **Rules should consider the AST immutable**. We will make those setters package private with 7.0.0.
|
||||
|
||||
Please look at {% jdoc_package java::lang.java.ast %} to find out the full list
|
||||
of deprecations.
|
||||
|
||||
|
||||
#### 6.15.0
|
||||
|
||||
##### Deprecated APIs
|
||||
|
||||
###### For removal
|
||||
|
||||
* The `DumpFacades` in all languages, that could be used to transform a AST into a textual representation,
|
||||
will be removed with PMD 7. The rule designer is a better way to inspect nodes.
|
||||
* {% jdoc !q!apex::lang.apex.ast.DumpFacade %}
|
||||
* {% jdoc !q!java::lang.java.ast.DumpFacade %}
|
||||
* {% jdoc !q!javascript::lang.ecmascript.ast.DumpFacade %}
|
||||
* {% jdoc !q!jsp::lang.jsp.ast.DumpFacade %}
|
||||
* {% jdoc !q!plsql::lang.plsql.ast.DumpFacade %}
|
||||
* {% jdoc !q!visualforce::lang.vf.ast.DumpFacade %}
|
||||
* {% jdoc !q!vm::lang.vm.ast.AbstractVmNode#dump(String, boolean, Writer) %}
|
||||
* {% jdoc !q!xml::lang.xml.ast.DumpFacade %}
|
||||
* The method {% jdoc !c!core::lang.LanguageVersionHandler#getDumpFacade(Writer, String, boolean) %} will be
|
||||
removed as well. It is deprecated, along with all its implementations in the subclasses of {% jdoc core::lang.LanguageVersionHandler %}.
|
||||
|
||||
#### 6.14.0
|
||||
|
||||
No changes.
|
||||
|
@ -6,6 +6,24 @@ author: Tom Copeland <tom@infoether.org>
|
||||
|
||||
## Sites/Articles about PMD
|
||||
|
||||
|
||||
### Salesforce / Apex Language Module
|
||||
|
||||
* June 2019 - [Pluralsight](https://www.pluralsight.com/authors/don-robins) Course about leveraging PMD usage for Salesforce by [Robert Sösemann](https://github.com/rsoesemann) (Apex Language Module Contributor) [Play by Play: Automated Code Analysis in Salesforce - a Tools Deep-Dive](https://www.pluralsight.com/courses/play-by-play-automated-code-analysis-in-salesforce)
|
||||
|
||||
* June 2018 - [Salesforce Way Podcast](https://salesforceway.com/podcast/podcast/) with [Robert Sösemann](https://github.com/rsoesemann) [Static Code Analysis with PMD for Apex](https://salesforceway.com/podcast/podcast/static-code-analysis-with-pmd-for-apex/)
|
||||
|
||||
* January 2018 - [Webinar: How to contribute Apex rules to PMD with Robert Sösemann](https://www.youtube.com/watch?v=7_Ex9WWS_3Q)
|
||||
|
||||
* August 2017 - Webinar about how to use PMD with The Welkin Suite Salesforce IDE - Author [Robert Sösemann](https://github.com/rsoesemann) - [Improving your Apex Code Quality with PMD in The Welkin Suite](https://www.youtube.com/watch?v=Ypyiy5b6huc)
|
||||
|
||||
* November 2016 - Recording of [Robert Sösemann](https://github.com/rsoesemann)'s Session at Salesforce Dreamforce Conference about enforcing Clean Code in the Salesforce world using PMD and other tools [Clean Apex Code with Automatic Code Metrics](https://www.youtube.com/watch?v=bW7m6y6bEug)
|
||||
|
||||
|
||||
### PMD in general and other Language Modules
|
||||
|
||||
* May 2019 - [Code quality assurance with PMD – An extensible static code analyser for Java and other languages](https://www.datarespons.com/code-quality-assurance-with-pmd/)
|
||||
|
||||
* February 2012 - Romain Pelisse's lightning talk at FOSDEM 2012 about "PMD5: What can it do for you?".
|
||||
[Video recording is available](http://video.fosdem.org/2012/lightningtalks/PMD5.webm).
|
||||
|
||||
@ -27,7 +45,7 @@ author: Tom Copeland <tom@infoether.org>
|
||||
PMD/CPD analyses of Azureus and Columba.
|
||||
|
||||
* April 2006 - John Ferguson Smart's article "PMD Squashes Code Bugs" on
|
||||
[DevX](http://www.devx.com/Java/Article/31286) discusses PMD and the Eclipse plugin. Lots of screenshots!
|
||||
[DevX](https://web.archive.org/web/20140214143838/http://www.devx.com/Java/Article/31286) discusses PMD and the Eclipse plugin. Lots of screenshots!
|
||||
|
||||
* November 2005 - Mike Clark's article "Staying Out of Code Debt" on
|
||||
[StickyMinds](http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=9860&tth=DYN&tt=siteemail&iDyn=2)
|
||||
@ -45,7 +63,7 @@ author: Tom Copeland <tom@infoether.org>
|
||||
[Doctor Dobb's Journal](http://www.drdobbs.com/benefits-of-the-build/184415286) mentions PMD as a way
|
||||
to automate code reviews
|
||||
|
||||
* February 2005 - [Java Is Well-Suited for Open-Source Projects](http://www.eweek.com/c/a/Application-Development/Java-Is-WellSuited-for-OpenSource-Projects/) -
|
||||
* February 2005 - [Java Is Well-Suited for Open-Source Projects](https://webcache.googleusercontent.com/search?q=cache:aEL-9Ncx2RgJ:https://www.eweek.com/development/java-is-well-suited-for-open-source-projects) -
|
||||
Peter Coffee's eWeek article on open source, Java, and PMD
|
||||
|
||||
* January 2005 - [Zap bugs with PMD](http://www.ibm.com/developerworks/java/library/j-pmd/) - Elliotte Rusty
|
||||
|
@ -22,13 +22,17 @@ folder: pmd/rules
|
||||
|
||||
{% include callout.html content="Rules which enforce a specific coding style." %}
|
||||
|
||||
* [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions): Class names should always begin with an upper case character.
|
||||
* [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions): Configurable naming conventions for type declarations. This rule reports type declarat...
|
||||
* [FieldNamingConventions](pmd_rules_apex_codestyle.html#fieldnamingconventions): Configurable naming conventions for field declarations. This rule reports variable declarations ...
|
||||
* [ForLoopsMustUseBraces](pmd_rules_apex_codestyle.html#forloopsmustusebraces): Avoid using 'for' statements without using surrounding braces. If the code formatting orindentati...
|
||||
* [FormalParameterNamingConventions](pmd_rules_apex_codestyle.html#formalparameternamingconventions): Configurable naming conventions for formal parameters of methods. This rule reports fo...
|
||||
* [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces): Avoid using if..else statements without using surrounding braces. If the code formattingor indent...
|
||||
* [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces): Avoid using if statements without using braces to surround the code block. If the codeformatting ...
|
||||
* [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions): Method names should always begin with a lower case character, and should not contain underscores.
|
||||
* [LocalVariableNamingConventions](pmd_rules_apex_codestyle.html#localvariablenamingconventions): Configurable naming conventions for local variable declarations. This rule reports var...
|
||||
* [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions): Configurable naming conventions for method declarations. This rule reports method decl...
|
||||
* [OneDeclarationPerLine](pmd_rules_apex_codestyle.html#onedeclarationperline): Apex allows the use of several variables declaration of the same type on one line. However, itcan...
|
||||
* [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions): A variable naming conventions rule - customize this to your liking. Currently, itchecks for fina...
|
||||
* [PropertyNamingConventions](pmd_rules_apex_codestyle.html#propertynamingconventions): Configurable naming conventions for property declarations. This rule reports property ...
|
||||
* [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> A variable naming conventions rule - customize this to your liking. Currently, itchecks for fina...
|
||||
* [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces): Avoid using 'while' statements without using braces to surround the code block. If the codeformat...
|
||||
|
||||
## Design
|
||||
@ -116,7 +120,7 @@ folder: pmd/rules
|
||||
|
||||
[AvoidDeeplyNestedIfStmts](pmd_rules_apex_design.html#avoiddeeplynestedifstmts), [ExcessiveClassLength](pmd_rules_apex_design.html#excessiveclasslength), [ExcessiveParameterList](pmd_rules_apex_design.html#excessiveparameterlist), [ExcessivePublicCount](pmd_rules_apex_design.html#excessivepubliccount), [NcssConstructorCount](pmd_rules_apex_design.html#ncssconstructorcount), [NcssMethodCount](pmd_rules_apex_design.html#ncssmethodcount), [NcssTypeCount](pmd_rules_apex_design.html#ncsstypecount), [StdCyclomaticComplexity](pmd_rules_apex_design.html#stdcyclomaticcomplexity), [TooManyFields](pmd_rules_apex_design.html#toomanyfields)
|
||||
|
||||
* Default ruleset used by the CodeClimate Engine for Salesforce.com Apex (`rulesets/apex/ruleset.xml`):
|
||||
* Default ruleset for Salesforce.com Apex (`rulesets/apex/ruleset.xml`):
|
||||
|
||||
<span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> This ruleset is for backwards compatibility.
|
||||
|
||||
@ -154,7 +158,7 @@ folder: pmd/rules
|
||||
|
||||
It contains the following rules:
|
||||
|
||||
[ApexBadCrypto](pmd_rules_apex_security.html#apexbadcrypto), [ApexCRUDViolation](pmd_rules_apex_security.html#apexcrudviolation), [ApexCSRF](pmd_rules_apex_security.html#apexcsrf), [ApexDangerousMethods](pmd_rules_apex_security.html#apexdangerousmethods), [ApexDoc](pmd_rules_apex_documentation.html#apexdoc), [ApexInsecureEndpoint](pmd_rules_apex_security.html#apexinsecureendpoint), [ApexOpenRedirect](pmd_rules_apex_security.html#apexopenredirect), [ApexSharingViolations](pmd_rules_apex_security.html#apexsharingviolations), [ApexSOQLInjection](pmd_rules_apex_security.html#apexsoqlinjection), [ApexSuggestUsingNamedCred](pmd_rules_apex_security.html#apexsuggestusingnamedcred), [ApexUnitTestClassShouldHaveAsserts](pmd_rules_apex_bestpractices.html#apexunittestclassshouldhaveasserts), [ApexUnitTestShouldNotUseSeeAllDataTrue](pmd_rules_apex_bestpractices.html#apexunittestshouldnotuseseealldatatrue), [ApexXSSFromEscapeFalse](pmd_rules_apex_security.html#apexxssfromescapefalse), [ApexXSSFromURLParam](pmd_rules_apex_security.html#apexxssfromurlparam), [AvoidDeeplyNestedIfStmts](pmd_rules_apex_design.html#avoiddeeplynestedifstmts), [AvoidDirectAccessTriggerMap](pmd_rules_apex_errorprone.html#avoiddirectaccesstriggermap), [AvoidDmlStatementsInLoops](pmd_rules_apex_performance.html#avoiddmlstatementsinloops), [AvoidGlobalModifier](pmd_rules_apex_bestpractices.html#avoidglobalmodifier), [AvoidHardcodingId](pmd_rules_apex_errorprone.html#avoidhardcodingid), [AvoidLogicInTrigger](pmd_rules_apex_bestpractices.html#avoidlogicintrigger), [AvoidNonExistentAnnotations](pmd_rules_apex_errorprone.html#avoidnonexistentannotations), [AvoidSoqlInLoops](pmd_rules_apex_performance.html#avoidsoqlinloops), [AvoidSoslInLoops](pmd_rules_apex_performance.html#avoidsoslinloops), [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions), [CyclomaticComplexity](pmd_rules_apex_design.html#cyclomaticcomplexity), [EmptyCatchBlock](pmd_rules_apex_errorprone.html#emptycatchblock), [EmptyIfStmt](pmd_rules_apex_errorprone.html#emptyifstmt), [EmptyStatementBlock](pmd_rules_apex_errorprone.html#emptystatementblock), [EmptyTryOrFinallyBlock](pmd_rules_apex_errorprone.html#emptytryorfinallyblock), [EmptyWhileStmt](pmd_rules_apex_errorprone.html#emptywhilestmt), [ExcessiveClassLength](pmd_rules_apex_design.html#excessiveclasslength), [ExcessiveParameterList](pmd_rules_apex_design.html#excessiveparameterlist), [ExcessivePublicCount](pmd_rules_apex_design.html#excessivepubliccount), [ForLoopsMustUseBraces](pmd_rules_apex_codestyle.html#forloopsmustusebraces), [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces), [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces), [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions), [MethodWithSameNameAsEnclosingClass](pmd_rules_apex_errorprone.html#methodwithsamenameasenclosingclass), [NcssConstructorCount](pmd_rules_apex_design.html#ncssconstructorcount), [NcssMethodCount](pmd_rules_apex_design.html#ncssmethodcount), [NcssTypeCount](pmd_rules_apex_design.html#ncsstypecount), [OneDeclarationPerLine](pmd_rules_apex_codestyle.html#onedeclarationperline), [StdCyclomaticComplexity](pmd_rules_apex_design.html#stdcyclomaticcomplexity), [TooManyFields](pmd_rules_apex_design.html#toomanyfields), [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions), [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces)
|
||||
[ApexBadCrypto](pmd_rules_apex_security.html#apexbadcrypto), [ApexCRUDViolation](pmd_rules_apex_security.html#apexcrudviolation), [ApexCSRF](pmd_rules_apex_security.html#apexcsrf), [ApexDangerousMethods](pmd_rules_apex_security.html#apexdangerousmethods), [ApexDoc](pmd_rules_apex_documentation.html#apexdoc), [ApexInsecureEndpoint](pmd_rules_apex_security.html#apexinsecureendpoint), [ApexOpenRedirect](pmd_rules_apex_security.html#apexopenredirect), [ApexSharingViolations](pmd_rules_apex_security.html#apexsharingviolations), [ApexSOQLInjection](pmd_rules_apex_security.html#apexsoqlinjection), [ApexSuggestUsingNamedCred](pmd_rules_apex_security.html#apexsuggestusingnamedcred), [ApexUnitTestClassShouldHaveAsserts](pmd_rules_apex_bestpractices.html#apexunittestclassshouldhaveasserts), [ApexUnitTestShouldNotUseSeeAllDataTrue](pmd_rules_apex_bestpractices.html#apexunittestshouldnotuseseealldatatrue), [ApexXSSFromEscapeFalse](pmd_rules_apex_security.html#apexxssfromescapefalse), [ApexXSSFromURLParam](pmd_rules_apex_security.html#apexxssfromurlparam), [AvoidDeeplyNestedIfStmts](pmd_rules_apex_design.html#avoiddeeplynestedifstmts), [AvoidDirectAccessTriggerMap](pmd_rules_apex_errorprone.html#avoiddirectaccesstriggermap), [AvoidDmlStatementsInLoops](pmd_rules_apex_performance.html#avoiddmlstatementsinloops), [AvoidGlobalModifier](pmd_rules_apex_bestpractices.html#avoidglobalmodifier), [AvoidHardcodingId](pmd_rules_apex_errorprone.html#avoidhardcodingid), [AvoidLogicInTrigger](pmd_rules_apex_bestpractices.html#avoidlogicintrigger), [AvoidNonExistentAnnotations](pmd_rules_apex_errorprone.html#avoidnonexistentannotations), [AvoidSoqlInLoops](pmd_rules_apex_performance.html#avoidsoqlinloops), [AvoidSoslInLoops](pmd_rules_apex_performance.html#avoidsoslinloops), [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions), [CyclomaticComplexity](pmd_rules_apex_design.html#cyclomaticcomplexity), [EmptyCatchBlock](pmd_rules_apex_errorprone.html#emptycatchblock), [EmptyIfStmt](pmd_rules_apex_errorprone.html#emptyifstmt), [EmptyStatementBlock](pmd_rules_apex_errorprone.html#emptystatementblock), [EmptyTryOrFinallyBlock](pmd_rules_apex_errorprone.html#emptytryorfinallyblock), [EmptyWhileStmt](pmd_rules_apex_errorprone.html#emptywhilestmt), [ExcessiveClassLength](pmd_rules_apex_design.html#excessiveclasslength), [ExcessiveParameterList](pmd_rules_apex_design.html#excessiveparameterlist), [ExcessivePublicCount](pmd_rules_apex_design.html#excessivepubliccount), [FieldNamingConventions](pmd_rules_apex_codestyle.html#fieldnamingconventions), [ForLoopsMustUseBraces](pmd_rules_apex_codestyle.html#forloopsmustusebraces), [FormalParameterNamingConventions](pmd_rules_apex_codestyle.html#formalparameternamingconventions), [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces), [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces), [LocalVariableNamingConventions](pmd_rules_apex_codestyle.html#localvariablenamingconventions), [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions), [MethodWithSameNameAsEnclosingClass](pmd_rules_apex_errorprone.html#methodwithsamenameasenclosingclass), [NcssConstructorCount](pmd_rules_apex_design.html#ncssconstructorcount), [NcssMethodCount](pmd_rules_apex_design.html#ncssmethodcount), [NcssTypeCount](pmd_rules_apex_design.html#ncsstypecount), [OneDeclarationPerLine](pmd_rules_apex_codestyle.html#onedeclarationperline), [PropertyNamingConventions](pmd_rules_apex_codestyle.html#propertynamingconventions), [StdCyclomaticComplexity](pmd_rules_apex_design.html#stdcyclomaticcomplexity), [TooManyFields](pmd_rules_apex_design.html#toomanyfields), [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces)
|
||||
|
||||
* Security (`rulesets/apex/security.xml`):
|
||||
|
||||
|