rspec/rules/S1312/java/rule.adoc
Fred Tingaud 51369b610e
Make sure that includes are always surrounded by empty lines (#2270)
When an include is not surrounded by empty lines, its content is inlined
on the same line as the adjacent content. That can lead to broken tags
and other display issues.
This PR fixes all such includes and introduces a validation step that
forbids introducing the same problem again.
2023-06-22 10:38:01 +02:00

47 lines
1.3 KiB
Plaintext

== Why is this an issue?
Regardless of the logging framework in use (logback, log4j, commons-logging, java.util.logging, ...), loggers should be:
* ``++private++``: never be accessible outside of its parent class. If another class needs to log something, it should instantiate its own logger.
* ``++static++``: not be dependent on an instance of a class (an object). When logging something, contextual information can of course be provided in the messages but the logger should be created at class level to prevent creating a logger along with each object.
* ``++final++``: be created once and only once per class.
=== Noncompliant code example
With a default regular expression of ``++LOG(?:GER)?++``:
[source,java]
----
public Logger logger = LoggerFactory.getLogger(Foo.class); // Noncompliant
----
=== Compliant solution
[source,java]
----
private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
----
=== Exceptions
Variables of type ``++org.apache.maven.plugin.logging.Log++`` are ignored.
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::../parameters.adoc[]
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]