rspec/rules/S3218/java/rule.adoc
2023-06-09 11:33:53 +02:00

65 lines
1.1 KiB
Plaintext

include::../why.adoc[]
[source,java,diff-id=1,diff-type=noncompliant]
----
class Outer
{
public static int A;
public class Inner
{
public int A; // Noncompliant
public int MyProp
{
get { return A; } // Returns inner A. Was that intended?
}
}
}
----
Here's an example of compliant code after renaming the inner class member, this way the property will return the `Outer` A:
[source,java,diff-id=1,diff-type=compliant]
----
class Outer
{
public static int A; // Compliant
public class Inner
{
public int B;
public int MyProp
{
get { return A; } // Returns inner A
}
}
}
----
Or if you want to reference the `Inner` A field:
[source,java]
----
class Outer
{
public static int B;
public class Inner
{
public int A; // Compliant
public int MyProp
{
get { return A; } // Returns inner A
}
}
}
----
== Resources
=== Documentation
* https://wiki.sei.cmu.edu/confluence/x/5DVGBQ[CERT, DCL51-J.] - Do not shadow or obscure identifiers in subscopes
* https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html[Nested and Inner classes]
include::../rspecator.adoc[]