如何在Eclipse中抑制SonarLint警告且避免'Unsupported @SuppressWarnings'问题
我使用Eclipse 2022-12(4.26.0)搭配SonarLint for Eclipse 7.7.0.60863,代码中写了一个信任所有SSL证书的方法,触发了SonarLint的警告:Server certificates should be verified during SSL/TLS connections (java:S4830)。由于该问题仅在开发环境存在且已处理,我按照官方推荐用@SuppressWarnings({"java:S4830"})注解抑制警告,结果Eclipse又弹出新警告:Unsupported @SuppressWarnings("java:S4830")。换成@SuppressWarnings({"squid:S4830"})能消除SonarLint的警告,但同样会触发Eclipse的“不支持该注解参数”警告。我不想用//NOSONAR禁用所有警告,复现代码如下:
@SuppressWarnings({"java:S4830"}) private void setSslToTrustAll() throws NoSuchAlgorithmException, KeyManagementException { X509TrustManager trustAllManager = new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkServerTrusted(X509Certificate[] chain, String authType){ // trust all } @Override public void checkClientTrusted(X509Certificate[] chain, String authType){ // trust all } }; TrustManager[] trustManagers = new TrustManager[] {trustAllManager}; SSLContext sslContect = SSLContext.getDefault(); sslContect.init(null, trustManagers, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sslContect.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true); }
配置Eclipse支持SonarLint的警告码
打开Eclipse偏好设置:Window > Preferences > Java > Compiler > Errors/Warnings,找到Annotations分类下的Unsupported @SuppressWarnings选项,点击右侧的Configure按钮,在弹出窗口中将java:S4830和squid:S4830添加到“支持的警告名称”列表,保存配置后,Eclipse就不会再提示该注解参数不支持的警告。用SonarLint专属注释替代注解
若不想修改Eclipse配置,可在方法上方添加SonarLint专属单行注释:// SONAR_IGNORE_WARNING: java:S4830,该注释仅被SonarLint识别,Eclipse不会报不支持警告,且能精准抑制指定问题。
内容的提问来源于stack exchange,提问作者Piro

