import java.security.MessageDigest;
import java.util.Observable;
class A { // Compliant
void foo() {
MessageDigest md = new MessageDigest() { // Noncompliant [[sc=28;ec=41]] {{Use a standard algorithm instead of creating a custom one.}}
};
}
}
abstract class B extends MessageDigest { // Noncompliant [[sc=16;ec=17]] {{Use a standard algorithm instead of creating a custom one.}}
protected B(String algorithm) {
super(algorithm);
}
}
abstract class C extends java.security.MessageDigest { // Noncompliant
protected C(String algorithm) {
super(algorithm);
}
}
abstract class D extends B { // Noncompliant
protected D(String algorithm) {
super(algorithm);
}
}
class E extends Observable { // Compliant
}