来自 pmd:DataflowAnomalyAnalysis sslContext 的 Java UR-anomaly 和 DR-anomaly

Posted

技术标签:

【中文标题】来自 pmd:DataflowAnomalyAnalysis sslContext 的 Java UR-anomaly 和 DR-anomaly【英文标题】:Java UR-anomaly and DR-anomaly from pmd:DataflowAnomalyAnalysis sslContext 【发布时间】:2020-12-19 13:02:59 【问题描述】:

当我在尝试构建 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 已弃用此规则。 感谢您的评论@fernal73。不过,是否有可能帮助解决这个问题?是否有可能知道为什么 SonarQube 仍在使用这种恶作剧? 不知道 Sonar Cube。我从未接触过它。至于回答你的问题,*** 上也有类似的查询。也许,你会在那里找到答案。 ***.com/questions/16718514/… ***.com/a/40104867/3924108 【参考方案1】:

基于cmets,这个规则确实被最新的PMD 7+版本弃用了

【讨论】:

以上是关于来自 pmd:DataflowAnomalyAnalysis sslContext 的 Java UR-anomaly 和 DR-anomaly的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WCF 服务能够处理来自不同进程的调用而不是来自线程的调用

来自 viewDidAppear 的 Segue 调用有效,但不是来自 viewWillAppear

求职作业帮 C++方向面经

来自 CWnd 的 ReleaseDC 覆盖来自 winuser 的 ReleaseDC

来自麦克风的声音与来自扬声器的声音

Liferay,来自搜索的 Freemarker 错误模板,但不是来自其他链接