Releases: SonarOpenCommunity/sonar-cxx
V2.0.0
We are pleased to announce the SonarQube C++ Community Plugin version 2.0.0.
See lists below for features added and bugs fixed in this release.
The version 2.0 of the cxx plugin is basically a completely new plugin. In version 2 the experiences from the previous versions have been considered and there were also numerous API and UI changes on the side of SonarQube that had to be taken into account.
Make sure to read the Upgrade Instructions before you get started.
SonarQube compability
- tested and released for SonarQube 7.9 LTS and SonarQube 8.7 LTS with Java 11
- see also SonarQube compatibility matrix
- Installation Instructions
- Upgrade Instructions
Enhancements
with effect on configuration:
- new language key
cxx(c++deprecated) #1860 - use
sonar.cxx.file.suffixesinstead ofsonar.cxx.suffixes.sourcesandsonar.cxx.suffixes.headers#1829 - using
xxx.reportPathsin all report sensors #1869 #1219 - allow to turn off CXX language analysis (
sonar.cxx.file.suffixes=-) #1841 #1807 - add a sensor to detect outdated configuration settings and add a warning to the LOG file #1869
other:
- completely revised Wiki for cxx plugin 2.0
- report sensors support SonarCFamily plugin #2018 #1784
- C++20 support #1985
- add MISRA C 2012 Amendment 1 rules supported by PC-Lint #1857 #1856
- add support of Facebook Infer static analyzer #1868
- support Visual Studio (VS2019 / msvc-160) warnings #1981 #1488
- support Cppcheck 2.41 warnings #2076 #2091
- support Clang Static Analyzer v11 warnings #2088
- support Clang-Tidy v11 support #2077 warnings #2088
- support _ in Clang-Tidy rule ids [A-Z0-9-._] #1952 #1951
- support
blockelements of BullsEye covxml 8.20.0 version #1978 #1977 - evaluate BOM from text file reports #2020 #1859
- make filtering in the UI for issues from one tool possible (add a tool tag) #1929 #1922
- properties
sonar.cxx.funccomplexity.thresholdandsonar.cxx.funcsize.thresholdrenamed to make clear that they are metrics and no rule thresholds #1538 #2029 - split coverage sensors to run them in parallel (
sonar.cxx.coverage.reportPath) #1895
no more supported:
- removed: Cppcheck XML format V1 support #1837 #1247
- removed:
CoreMetrics.COMMENT_LINES_DATA_KEY#1816 #1766 - removed:
sonar.cxx.cFilesPatternsparameter #1833 - removed: module and multi-module support #1822
- removed: sonar-c-plugin #1809
Bugfixes
- parsing of nested templates is slow: template
<... template<...>>#1685 #2128 cxx:FileHeadersupport files with BOMs #2118 #2121- handle type traits
...::type#2116 #793 - support macros and function calls as template parameter #2115 #2009
- parsing functions with default template parameter fail with non-POD return types #2025 #2102
- initialization of data attribute with braces is mistakenly consider as a method #2030 #2027
extern "C" { ... }public api detection #1982 #1979- add exception when Lint file is invalid XML #1865
- Squid Sensor fails to parse files with
#definecontaining "/*"` #1903 - recursive parsing does not seem to propagate compilation unit settings #1489 #1984
Known Issues
For an up to date list of known issues see the issue tracker.
- only tested with Java 11
- Message "The plugin [cxx] does not support Java 1.8.0, UnsupportedClassVersionError". To solve this download OpenJDK 11 und unzip it (http://jdk.java.net/archive/). Point with the JAVA_HOME environment variable to the Java 11 location.
- In SonarQube, each file extension must be uniquely assigned to one programming language. When operating several C/C++ plugins in parallel, this must be taken into account during configuration. To avoid problems on a server with multiple C++ plugins, the CXX programming language sensor is disabled by default.
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable rules for external tools per default.
- Message: "C++ cannot be analyzed with current SonarQube edition. Please consider upgrading...". SonarQube issues this message when an input file with the file extension .c, .cc, .cpp, .cxx or .c++ is read in the Community Edition. Select "Dismiss permanently" to continue without the message.
- C (Community) plugin is no longer shipped.
Thanks ....
go to all contributors (in alphabetical order):
@Dkapps
@Dudenman
@JuPrgn
@StanleySweet
@VirtualTim
@apriori
@begarco
@farshield
@guwirth
@kgiloo
@phcouton
@rufinio
@slebedev
@srpgilles
@tisoft
... and all people which were active on the issue tracker!
V1.3.3
V1.3.2
We are pleased to announce the SonarQube C++ Community Plugin version 1.3.2.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS with Java 8 and SonarQube 7.9 LTS with Java 11
- see also SonarQube compatibility matrix
- Installation Instructions
- Upgrade Instructions
Enhancements
- improved JSON Compilation Database support:
- Cppcheck 1.90 support #1783 #1778
- duplicate issues with different relative paths resulting in same absolute path are only added once now #1776 #1777
- customRules no more supported #1781 #1548
- cxx-lint no more supported #1780
- refactoring #1804
Bugfixes
- fix syntax highlighting for Raw strings #1803 #1768
- parser fix: improved literal-operator-id support #1798 #1785
- fix multi-values/property warning #1782 #1775
Known Issues
For an up to date list of known issues see the issue tracker.
- not tested with Java 9, 10 and 12
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable rules for external tools per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
duplicated_lines_densityvalues are different with SQ 7.5- project's duplication density value will likely rise with SQ 7.8 (SONAR-12188)
- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
... and all people which were active on the issue tracker!
V1.3.1
We are pleased to announce the SonarQube C++ Community Plugin version 1.3.1.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS with Java 8 and SonarQube 7.9 LTS with Java 11
- see also SonarQube compatibility matrix
- Installation Instructions
- Upgrade Instructions
Enhancements
- rules from external tools are deactivated in plugin default profile #1752
- improved inline assembler support for VC & GCC #1761 #1760 #1759
- GCC ASM label extension support #1657
- NOSONAR support #1758 #1300
- clang-tidy: 'clang-diagnostic-error' rule support #1754 #1747
- test on Travis with Java 8 & 11 #1750 #1735
- refactoring #1756 #1755
Bugfixes
- create debug message in case of Cppcheck parsing error #1753 #1718
- fixed raw string parsing #1749 #1748
Known Issues
For an up to date list of known issues see the issue tracker.
- not tested with Java 9, 10 and 12
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable rules for external tools per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
duplicated_lines_densityvalues are different with SQ 7.5- project's duplication density value will likely rise with SQ 7.8 (SONAR-12188)
- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
... and all people which were active on the issue tracker!
V1.3.0
We are pleased to announce the SonarQube C++ Community Plugin version 1.3.0.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- SQ 7.7 support #1696 #1695
- SQ 7.8 support #1731 #1738
- minimal supported SQ API is 6.7 #1317
- Cppcheck 1.88 support #1733 #1739 #1741
- Clang-Tidy:
- Clang Static Analyzer
- GCC
- PC-Lint
- Visual Studio / Msbuild LOG file analysis:
- use of scanner 4.0 #1736
- use of parent POM 51
- static code analysis checks are removed #1704
- BooleanEqualityComparisonCheck, CollapsibleIfCandidateCheck, CommentedCodeCheck, HardcodedAccountCheck, HardcodedIpCheck, MagicNumberCheck, MissingCurlyBracesCheck, NestedStatementsCheck, ReservedNamesCheck, SafetyTagCheck, StringLiteralDuplicatedCheck, SwitchLastCaseIsDefaultCheck, UnnamedNamespaceInHeaderCheck, UseCorrectIncludeCheck, UseCorrectTypeCheck, UselessParenthesesCheck, UsingNamespaceInHeaderCheck
- use external tools like CppCheck, Clang, .... instead
- seperate cxx-lint tool into own JAR (no more part of cxx plugin) #1705
- refactoring #1737 #1691 #1690 #1689
Bugfixes
- fixing OpenCppCoverage coverage report: not working since upgrade to 1.2.x #1669 #1709
- fixing typo Highligthing => Highlighting #1724 #1723
- support real paths in coverage sensor for C++/CLI #1701 #1688
- Clang-Tidy: modernize-use-nodiscard check message breaks regex #1719 #1742
- Clang-Tidy: missing rule [clang-diagnostic-warning] #1702
Known Issues
For an up to date list of known issues see the issue tracker.
- not tested with Java 9, 10, 11
- not tested with SonarQube 7.9.x LTS
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
duplicated_lines_densityvalues are different with SQ 7.5- project's duplication density value will likely rise with SQ 7.8 (SONAR-12188)
- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
@Bertk
@bloodlee
@guwirth
@ivangalkin
@romanek-adam
@rudolfgrauberger
@stalb
... and all people which were active on the issue tracker!
V1.2.2
We are pleased to announce the SonarQube C++ Community Plugin version 1.2.2.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- SQ 7.6 support #1674
- minimal supported SQ API is 6.7 #1317
- Cppcheck 1.87 support #1687
- lowercase filenames in sensors are supported #1651 #1653 #1678 #1682 #1679 #1682
- {Aggregate|Density} MeasureComputer: reduce and soften the logging #1640 #1641
- improved preprocessor: performance, include and macro handling #1637 #1645 #1650 #1660 #1665
- Optimized lexer and AST: some nodes are removed from AST. Please verify user defined checks and XPath expressions if they are still working #1664 #1646 #1667
- use of scanner 3.3.0.1492 #1676
- use of Maven 3.5.4 #1649
- use of parent POM 49 #1686
- Google Guava dependencies removed #1647
- refactoring #1644 #1659 #1677
Bugfixes
- none
Known Issues
For an up to date list of known issues see the issue tracker.
- not compatible with Java 9
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
duplicated_lines_densityvalues are different with SQ 7.5- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
... and all people which were active on the issue tracker!
V1.2.1
We are pleased to announce the SonarQube C++ Community Plugin version 1.2.1.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- SQ 7.5 support #1635
- minimal supported SQ API is 6.7 #1317
- use SSLR 1.23 #1630
- use parent POM 48 #1590
- Cppcheck 1.86 support #1616 #1620
- mark static code analysis checks deprecated #1613
- optimized logging #1619 #1621 #1622 #1623 #1624 #1626 #1627 #1628
- clean-up POMs #1591 #1593 #1631 #1632 #1633 #1634
- refactoring #1584 #1594 #1592 #1600 #1602 #1603 #1605 #1606 #1607 #1608 #1610 #1611 #1614 #1617 #1618 #1629
Bugfixes
Known Issues
For an up to date list of known issues see the issue tracker.
- not compatible with Java 9
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
duplicated_lines_densityvalues are different with SQ 7.5- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
... and all people which were active on the issue tracker!
V1.2.0
We are pleased to announce the SonarQube C++ Community Plugin version 1.2.0.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1, 7.2, 7.3, 7.4
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- SQ 7.3 and SQ 7.4 support #1541 #1581
- minimal supported SQ API is 6.7 #1317
- Complexity metrics are performed on original source code now #1547 #1552
- In the past we were first preprocessing the code and were calculating the complexity metrics on base of the preprocessed code. This could lead to confusing metric numbers because macro code is counted multiple times and could also be from external libraries. Generated code (among others macro expansions) doesn't affect the calculation of cognitive / cyclomatic complexity now. This can lead to different but easier to understand metrics.
- GCC and MSVC compiler sensor can be used at the same time now #1533 #1180
- BREAKING CHANGE :
sonar.cxx.compilersettings are no more supported!- use
sonar.cxx.vcto read MSVC reports - use
sonar.cxx.gccto read GCC reports - use
sonar.cxx.msbuildto read includes and defines from MSBuild log file
- use
- BREAKING CHANGE :
- implement explanation for cyclomatic and cognitive complexity checks #1494 #1551 #1546 #1537 #1535
- Clang-Tidy 8 support #1536 #1555 #1558 #1566
- Cppcheck 1.85 support #1545 #1576
- make default logging less verbose (move some parts to debug info) #1563 #1565 #1567
- Setting
sonar.cxx.missingIncludeWarningsis no more available. Turn debug info on to get information.
- Setting
- The naming of the following metrics have been changed, see Upgrade Instructions
- perc_complex_functions -> CXX-PERC_COMPLEX_FUNCTIONS
- loc_in_complex_functions -> LOC_IN_COMPLEX_FUNCTIONS
- perc_loc_in_complex_functions -> CXX-PERC_LOC_IN_COMPLEX_FUNCTIONS
- big_functions -> CXX-BIG_FUNCTIONS
- loc_in_big_functions -> CXX-LOC_IN_BIG_FUNCTIONS
- perc_big_functions -> CXX-PERC_BIG_FUNCTIONS
- perc_loc_in_big_functions -> CXX-PERC_LOC_IN_BIG_FUNCTIONS
- loc_in_functions -> CXX-LOC_IN_FUNCTIONS
- refactoring #1526 #1529 #1530 #1532 #1582 #1562
Bugfixes
- Sensors have problem to import results because of symbolic links and path normalization #1574 #1575
- C++: support alternative operators #1569 #1572 #1577
- MethodName check fails on constructor of nested class #1557 #1559
- API check: Method defined in header file, but out of class, marked as undocumented / Public API: ignore methods outside of class #1543 #1544 #1580
- xUnit sensor not run on maven projects #1523 #1524
- C-Plugin: sensors use wrong rules repository keys / rules repository ignored the language specific repository suffix #1521 #1522
- java.lang.StackOverflowError during parse of source file / protect ExpressionEvaluator from self-referential macros #1516 #1517
- cppcheck sensor: wrong handling of warnings with multiple locations #1511 #1512
- sonar-cxx custom metrics are not displayed/saved #1509 #1514
- enable code metrics for public API
- support multi-module projects
- reduce memory footprint by moving of metric aggregation to the computation engine
- Property 'sonar.cxx.coverage.reportPath' should be made using 'getStringArray' method. The SonarQube plugin using this property should be updated #1384 #1568
- cppcheck.xml fix name and description of unmatchedSuppression #1564
- [Travis/AppVeyor] Updates SQ distribution URL #1571
- cannot find include files #1230
- Symlink support #1574 #1575
Known Issues
For an up to date list of known issues see the issue tracker.
- not compatible with Java 9
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
Thanks ....
go to all contributors (in alphabetical order):
@guwirth
@ivangalkin
@moriarty
@nathanaelg
... and all people which were active on the issue tracker!
V1.1.0
We are pleased to announce the SonarQube C++ Community Plugin version 1.1.0.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1, 7.2
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- SQ 7.2 support #1491
- minimal supported SQ API is 6.7 #1317
- add function complexity and size metrics #1398:
- new metrics:
- Complex Functions: Number of functions with high cyclomatic complexity
- Complex Functions (%): % of functions with high cyclomatic complexity
- Complex Functions Lines of Code: Number of lines of code in functions with high cyclomatic complexity
- Complex Functions Lines of Code (%): % of lines of code in functions with high cyclomatic complexity
- Big Functions: Number of functions with too many lines
- Big Functions Lines of Code: Number of lines of code in functions with too many lines
- Big Functions (%): Number of lines of code in functions with too many lines
- Big Functions Lines of Code (%): % of lines of code in functions with too many lines
- Lines of Code in Functions: Number of lines of code in function bodies
- new configuration properties:
sonar.cxx.funccomplexity.threshold/ Cyclomatic complexity threshold:
Cyclomatic complexity threshold used to classify a function as complexsonar.cxx.funcsize.threshold/ Function size threshold:
Function size threshold to consider a function to be too big
- new metrics:
- Testwell CTC++ support (Verifysoft Technology GmbH) #1486
- add coverage sensor 'Testwell CTC++' for textural reports
- Cppcheck 1.84 support #1490 #1495
- refactoring #1499 #1498 #1496 #1487 #1482 #1481 #1503 #1504
Bugfixes
Known Issues
For an up to date list of known issues see the issue tracker.
- not compatible with Java 9
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
- test execution metrics are not supported
- The Cppcheck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
- Symlinks are not supported.
Thanks ....
go to all contributors (in alphabetical order):
@ericlemes
@guwirth
@ivangalkin
@rufinio
... and all people which were active on the issue tracker!
V1.0.0
We are pleased to announce the SonarQube C++ Community Plugin version 1.0.0.
See lists below for features added and bugs fixed in this release.
SonarQube compability
- tested and released for SonarQube 6.7 LTS, 7.0, 7.1
see also SonarQube compatibility matrix - Installation Instructions
- Upgrade Instructions
Enhancements
- minimal supported SQ API is 6.7 #1317
- updated parent POM to 44
- set an unique name to distinguish between community and commercial plugin in UI: C++ (Community) #1433
- optimize Sensor usage with SensorDescriptor #1421 #1434 #1420
- implement support for multiple locations in CxxReportSensor #1447
- Cppcheck 1.83 support #1455 #1450
- Cppcheck support external library issues #1445
- CppcheckParserV2: allow multiple issue locations #1436
- Visual Studio 2017 15.6 & 15.7 support #1454 #1453 #1399
- CxxValgrindSensor: allow multiple nodes #1440 #1461 #1440
- RATS 2.4 support #1419 #1395
- remove
scanOnlySpecifiedSources#1476 - travis.yml: execute automatic HTML checks for rules files #1467 #1456
- fix quality flaws #1448 #1473 #1471 #1470 #1469 #1464 #1461 #1452 #1441 #1432 #1426 #1414 #1408
- test with new SQ versions #1462 #1459 #1430 #1428 #1417 #1413
- test with sonar-scanner-cli-3.1.0.1141 #1460
Bugfixes
- problem with sonar.cxx.jsonCompilationDatabase when it includes testcode you don't want to scan #1474 #1476
- clangsa report is not uploaded into sonar because of NullPointerException #1442 #1477
- fix squid:S2259 #1431
- wrong code coverage for empty line, constexpr, method declaration #1425
Know Issues
For an up to date list of known issues see the issue tracker.
- not compatible with Java 9
- Ensure that a rule is enabled if you get no results. In new SQ versions the default profile is read-only. The cxx plugin does not enable all rules per default.
- Starting with SQ 6.2 there are some new metrics and some are no more available. Please have a look to the SonarQube release notes.
- test execution metrics are not supported
- The Cppckeck plugin is deprecated and not working in parallel to this plugin. This plugin provides an own Cppcheck sensor.
- C plugin and JSON Compilation Database support are experimental only
- Symlinks are not supported.
Thanks ....
go to all contributors (in alphabetical order):
... and all people which were active on the issue tracker!