代码质量管理 开源平台 SonarQube Java v3.14 发布
jopen 8年前
<p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/908b93970815c1d19fef55509d3aadd7.jpg" /></p> <p>Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。</p> <h2>更新日志</h2> <h3>Bug修复</h3> <ul> <li>[<a href="/misc/goto?guid=4958990984526736238">SONARJAVA-1548</a>] - FP on S2391 about naming of methods and visibility</li> <li>[<a href="/misc/goto?guid=4958990984619237300">SONARJAVA-1635</a>] - FP S1854 : Dead store in try with resource</li> <li>[<a href="/misc/goto?guid=4958990984706960382">SONARJAVA-1636</a>] - Getters returning Boolean (wrapper type) are not considered as being public API</li> <li>[<a href="/misc/goto?guid=4958990984800692844">SONARJAVA-1637</a>] - SE: Exploded graph walker is executing method declared in anonymous classes</li> <li>[<a href="/misc/goto?guid=4958990984888151856">SONARJAVA-1639</a>] - Parametrized methods: substitution validation blocked in infinite loop</li> <li>[<a href="/misc/goto?guid=4958990984976447958">SONARJAVA-1647</a>] - Rules Profile should be loaded from dedicated JSON</li> <li>[<a href="/misc/goto?guid=4958990985067424501">SONARJAVA-1648</a>] - NPE on S2637 on void method annotated with @Nonnull using empty return statement</li> <li>[<a href="/misc/goto?guid=4958990985161117800">SONARJAVA-1653</a>] - S1217 should only target subclasses of Thread, and not all the subclasses of Runnable</li> <li>[<a href="/misc/goto?guid=4958990985253991003">SONARJAVA-1658</a>] - FP on S2699: The rule should handle Mockito verifyZeroInteractions</li> <li>[<a href="/misc/goto?guid=4958990985336252138">SONARJAVA-1659</a>] - FP on S1153 String.valueOf(char[]) should not raise an issue</li> <li>[<a href="/misc/goto?guid=4958990985436156033">SONARJAVA-1660</a>] - NPE on CallToDeprecatedMethod S1874 when no semantic available</li> <li>[<a href="/misc/goto?guid=4958990985517734185">SONARJAVA-1662</a>] - FP on S1641 : Collections.unmodifiableSet returns a view of the correct set</li> <li>[<a href="/misc/goto?guid=4958990985610241357">SONARJAVA-1665</a>] - FP on S3398 : constructors should be excluded</li> <li>[<a href="/misc/goto?guid=4958990985706521267">SONARJAVA-1671</a>] - Semantic: Strict arity invocation on variadic method is wrong</li> <li>[<a href="/misc/goto?guid=4958990985797429821">SONARJAVA-1675</a>] - Constructors of a non-private inner member class have an implicit first formal parameter with type of the immediately enclosing class</li> <li>[<a href="/misc/goto?guid=4958990985876604955">SONARJAVA-1676</a>] - inner interfaces should be static</li> <li>[<a href="/misc/goto?guid=4958990985972761185">SONARJAVA-1677</a>] - Type inference in wildcard bounds</li> <li>[<a href="/misc/goto?guid=4958990986061361034">SONARJAVA-1679</a>] - Semantic: infering on defered type lead to unresolved method</li> <li>[<a href="/misc/goto?guid=4958990986161054466">SONARJAVA-1690</a>] - FP on S1481 : unused variable from try-with-resources should be ignored</li> <li>[<a href="/misc/goto?guid=4958990986240551623">SONARJAVA-1694</a>] - Checking linear sqale should not fail if there are no json file nor sqale annotation</li> <li>[<a href="/misc/goto?guid=4958990986330040986">SONARJAVA-1695</a>] - NPE on S2142: interrupted exception check should not fail when encountering unknownSymbol</li> <li>[<a href="/misc/goto?guid=4958990986423756852">SONARJAVA-1696</a>] - XML secondary locations are creating empty text span</li> </ul> <h3>改进</h3> <ul> <li>[<a href="/misc/goto?guid=4958990986521382941">SONARJAVA-877</a>] - Resolve method of method reference</li> <li>[<a href="/misc/goto?guid=4958990986609869641">SONARJAVA-1478</a>] - FP on S2095 : Close resource should not raise issue on Autocloseable resource not holding resource</li> <li>[<a href="/misc/goto?guid=4958990986701719002">SONARJAVA-1581</a>] - Parametrized methods: return type not correctly inferred when depending of the call site</li> <li>[<a href="/misc/goto?guid=4958990986798072016">SONARJAVA-1615</a>] - Introduce issue filtering mechanism to avoid modifying multiple rules when handling frameworks</li> <li>[<a href="/misc/goto?guid=4958990986884292132">SONARJAVA-1642</a>] - Filter issues related to Lombok annotations with a dedicated issue filter</li> <li>[<a href="/misc/goto?guid=4958990986973540666">SONARJAVA-1643</a>] - Make the current SupressWarning issue filter rely on new filtering process</li> <li>[<a href="/misc/goto?guid=4958990987060751316">SONARJAVA-1644</a>] - Type of Lambda expression should be infered properly</li> <li>[<a href="/misc/goto?guid=4958990987157087213">SONARJAVA-1645</a>] - Type of parameters of lamdba expression should be properly infered</li> <li>[<a href="/misc/goto?guid=4958990987239247118">SONARJAVA-1649</a>] - NPE are not detected in throw statement</li> <li>[<a href="/misc/goto?guid=4958990987330544668">SONARJAVA-1656</a>] - FP on S2440: all supertypes should be checked, not only super class</li> <li>[<a href="/misc/goto?guid=4958990987420023581">SONARJAVA-1657</a>] - Type inference should also be applied to constructors when diamond operator is used</li> <li>[<a href="/misc/goto?guid=4958990987516122439">SONARJAVA-1664</a>] - FP on S1994 : no issue should be raised if the stop condition is omitted</li> <li>[<a href="/misc/goto?guid=4958990987610006324">SONARJAVA-1668</a>] - Type of functional interface should respect JLS for wildcards</li> <li>[<a href="/misc/goto?guid=4958990987689567044">SONARJAVA-1669</a>] - Update Rule S2333: add 'private' on enum constructor</li> <li>[<a href="/misc/goto?guid=4958990987795769155">SONARJAVA-1672</a>] - Update Rule S2384 to ignore unmodifiable Collections</li> <li>[<a href="/misc/goto?guid=4958990987872594860">SONARJAVA-1673</a>] - S2699 should support easyMock</li> <li>[<a href="/misc/goto?guid=4958990987968678107">SONARJAVA-1674</a>] - Type parameters are ignored when resolving constructor with enclosing expression</li> <li>[<a href="/misc/goto?guid=4958990988058063753">SONARJAVA-1684</a>] - Visit of innerclass from bytecode should not trigger completion of outer class to get flags</li> </ul> <h2>新特性</h2> <ul> <li>[<a href="/misc/goto?guid=4958990988153791475">SONARJAVA-1594</a>] - Rule S2886: Getters and setters should be synchronized in pairs</li> <li>[<a href="/misc/goto?guid=4958990988243656768">SONARJAVA-1597</a>] - Rule S899: Return values should not be ignored when they contain the operation status code</li> <li>[<a href="/misc/goto?guid=4958990988349693511">SONARJAVA-1599</a>] - Rule S3020: "toArray" should be passed an array of the proper type</li> <li>[<a href="/misc/goto?guid=4958990988430622615">SONARJAVA-1600</a>] - Rule S2141: Classes that don't define "hashCode()" should not be used in hashes</li> </ul> <h2>Task</h2> <ul> <li>[<a href="/misc/goto?guid=4958990988520478648">SONARJAVA-1431</a>] - Handle rule metadata in external files</li> <li>[<a href="/misc/goto?guid=4958990988612047466">SONARJAVA-1638</a>] - Upgrade SQ Api to 4.5.7</li> <li>[<a href="/misc/goto?guid=4958990988708984275">SONARJAVA-1661</a>] - Expression statement should not have a type</li> <li>[<a href="/misc/goto?guid=4958990988802956840">SONARJAVA-1693</a>] - Upgrade to parent pom 32</li> </ul> <h2>Sub-task</h2> <ul> <li>[<a href="/misc/goto?guid=4958990988895434408">SONARJAVA-1640</a>] - Filter issues of S1444 and ClassVariableVisibilityCheck when dealing with Eclipse I18N framework</li> </ul> <h2>下载</h2> <ul> <li><a href="/misc/goto?guid=4958990988988748495">sonar-java-plugin-3.14.jar</a></li> </ul>