来自pmd的Java UR异常和DR异常:DataflowAnomalyAnalysis sslContext

问题描述

当我在试图构造Netty SslContext的代码上运行SonarQube时,为什么我会从pmd:DataflowAnomalyAnalysis同时获得UR异常和DR异常?

代码运行正常,但是我在keystorePath和truststorePath变量上同时获得了UR和DR。

请一些指针吗? 谢谢

@Value("${server.ssl.key-store}") private String keyStorePath;
    @Value("${server.ssl.key-store-password}") private String keyStorePassphrase;
    @Value("${server.ssl.key-password}") private String keyPassphrase;
    @Value("${server.ssl.key-store-type}") private String keyStoreType;
    @Value("${server.ssl.trust-store}") private String trustStorePath;
    @Value("${server.ssl.trust-store-password}") private String trustStorePassphrase;
    @Value("${server.ssl.trust-store-type}") private String trustStoreType;

    public SslContext getSslContext() {
        try {
            final Path     keystorePath = Paths.get(keyStorePath);
            final KeyStore keyStore     = KeyStore.getInstance(keyStoreType);
            try (InputStream keyStoreFile = Files.newInputStream(keystorePath)) {
                keyStore.load(keyStoreFile,keyStorePassphrase.tochararray());
            }
            final KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyManagerFactory.init(keyStore,keyPassphrase.tochararray());

            final Path     truststorePath = Paths.get(trustStorePath);
            final KeyStore trustStore     = KeyStore.getInstance(trustStoreType);
            try (InputStream trustStoreFile = Files.newInputStream(truststorePath)) {
                trustStore.load(trustStoreFile,trustStorePassphrase.tochararray());
            }
            final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            trustManagerFactory.init(trustStore);

            return SslContextBuilder.forClient().keyManager(keyManagerFactory).trustManager(trustManagerFactory).build();
        } catch (KeyStoreException | IOException | UnrecoverableKeyException | NoSuchAlgorithmException | CertificateException e) {
            e.printstacktrace();
            return null;
        }
    }

解决方法

根据评论,此规则确实已被最新的 PMD 7+ 版本弃用