Releases: Ericsson/codechecker
v6.12.1
Feature change!
Incremental analysis extension introduced in v6.12.0 feature was changed in #2786!
Getting the c/cpp files that are dependencies of a changed header is not done automatically from now on, the user has to generate the c/cpp file list which should be analyzed.
To support this use case the tu_collector
tool was extended to be able to generate the dependency source file list like this:
tu_collector --dependents -l ./full_compilation_database.json -f "*/main.h"
Additional helper scripts and examples can be found in the tu_collector
documentation how to analyze the source and header files which were modified in a git commit.
Bugfixes
- The parse command could not generate HTML output files #2771
- Fix analyzer --file option. The reports from the included header files should not be skipped #2788
- Fix update comments if the message did not change #2780
- Fix source component update error #2778
- Fix run history tag filter #2769
- Fix tidyargs file encoding error #2767
- Fix segmentation fault in the compile command logger #2768
- The wrong codechecker_api version was used in the developer virtual environments #2770
- The hash overwrite feature crashed if the plist report file was missing #2779
v6.12.0
New feature Highlights
Show clang-tidy reports in headers
Clang-tidy reports are shown from headers (non system) now, this change can increase the number of new results!
Use the following analyzer configuration to turn back the old behavior by setting the HeaderFilterRegex value to an empty string:
CodeChecker analyze compile_command.json --analyzer-config clang-tidy:HeaderFilterRegex=\"\"
Python 3 only
Because of Python 2 sunset at the beginning of 2020 CodeChecker was ported to Python 3 the minimal required version is 3.6. Because of the Python version change and a lot of 3pp dependencies were updated it is required to remove the old and create a new virtual environment to build the package!
Store results from multiple static and dynamic analyzer tools
Starting with this version CodeChecker can store the results of multiple static and dynamic analyzers for different programming languages:
- Facebook Infer (C/C++, Java)
- Clang Sanitizers (C/C++)
- Spotbugs (Java)
- Pylint (Python)
- Eslint (Javascript)
- ...
The complete list of the supported analyzers can be found here.
To be able to store the reports of an analyzer a report converter tool is available which can convert the reports of the supported analyzers to a format which can be stored by the CodeChecker store command.
New build and CI system features and improvements
GitLab integration
Inside a GitLab Runner CodeChecker can executed to provide a code quality report for each GitLab review request. The codeclimate json output format was added to the Codechecker parse
and
CodeChecker cmd diff
commands to generate a json file which can be parsed
by GitLab as a quality report. See the GitLab integration guide for more details how to configure the GitLab runners and CodeChecker.
Gerrit
Integration was simplified, no extra output parsing and converter scripts are needed. The CodeChecker cmd diff -o gerrit ...
command can generate an output format which can be sent to gerrit as a review result.
Bazel build system support
Compilation commands executed by the Bazel build system can now be logged with the Codechecker logger to run the static analyzers on the source files. Check out the Bazel build system integration guide for more details.
Compilation errors as reports
Compilation errors occurred during the analysis are now captured as reports by the clang-diagnostic-error
checker. These types of reports can be disabled as a normal checker like this:
CodeChecker analyze --disable clang-diagnostic-error ...
Analyzer and checker configuration from the command line
The Clang and Clang-tidy static analyzers and the checkers can be configured from the command line with the newly introduced --analyzer-config
and --checker-config
options.
Analyzer configuration
Use these commands to list the available analyzer config options (use the --details
flag for the default values and more description):
CodeChecker analyzers --analyzer-config clangsa
CodeChecker analyzers --analyzer-config clang-tidy
A Clang Static Analyzer configuration option can be enabled during analysis like this:
CodeChecker analyze compile_command.json -o reports --analyzer-config clangsa:suppress-c++-stdlib=false -c
Checker configuration
Use the CodeChecker checkers --checker-config
command to list the checker options, or the CodeChecker checkers --checker-config --details
command to get the checker options with the default values.
A checker option can be set like this:
CodeChecker analyze compile_command.json -o reports -e cplusplus.Move --checker-config clangsa:cplusplus.Move:WarnOn="All"
Select only a few files to be analyzed from the compile command database
There is no need for a complex skip file or to create smaller compile command database files to execute the analysis only on a few files. With the --file
option the important files can be selected the analysis for the other files will be skipped.
CodeChecker analyze compile_command.json --file "*main.cpp" "*lib.cpp"
Incremenetal Analysis Extension: Analyze c/cpp files that are dependencies of a changed header
Header files can not be analyzed without a c/cpp file. If a skip file contains a header file (with a "+" tag) like this:
+*lib.h
-*
Which means the header file should be analyzed. CodeChecker tries to find all the c/cpp files including that header file and execute the analysis on those c/cpp files too so the header file will be analyzed.
The only limitation is that the full compilation database is required to collect this information.
CodeChecker CLI configuration files
The CodeChecker commands can be saved in a config file which can be put into a version control system or distributed between multiple developers much easier. In the previous release v6.11.0 the support for the analyzer configuration file was added. In this release it was extended to the web server related commands (store, server) so they can be stored into a configuration file too.
It is not required to type out the options in the command line all the time to store the analysis reports.
With an example store_cfg.json
config file like this:
{
"store":
[
"--name=run_name",
"--tag=my_tag",
"--url=http://codechecker.my/MyProduct"
]
}
The CodeChecker store command can be this short: CodeChecker store reports --config store_cfg.json
Other new features worth mentioning
- The review comments in the source code are shown by the
CodeChecker parse
command - A free text description can be store to every run which can contain any compilation or analysis related description.
CodeChecker store --description "analysis related extra information" ...
Removed command line options
These CodeChecker check
and CodeChecker analyze
options were already deprecated and were removed in this release:
- -f/--force
- --add-compiler-defaults
Other improvements and changes
There are a lot of improvements and bug fixes in this release.
The full list of changes can be found here.
License change
This is the last release with the NCSA license the new license after the release will be: "Apache 2.0 with LLVM Exception", SPDX License Identifier: "Apache-2.0 WITH LLVM-exception"
Contributors
Big thanks to everyone who helped us creating this release: @itzurabhi, @Tilya, @themightyoarfish @rpavlik @sylvestre
v6.11.1
Improvements
- Handle two kinds of implicit includes differently (gcc include-fixed and *intrin.h headers) #2562 #2541
- Filter out include directories containing *intrin.h header files #2569
- Add -fno-keep-static-consts flag to gcc ignore list #2568
Bugfixes
- Translation unit collector did not detect CCache in the build commands #2524
- Fix row output type in command line #2547
- Number of reports was not calculated right for parse command #2539 #2556 #2550
- Path normalization fix for the file skip feature #2548
- Fix error when query limit is larger than max limit #2533
- CodeChecker check no longer works analyzer #2505 #2506 #2532
- fixes the problem where ClangSA is not available in the PATH
Changes
v6.11.0
New Feature highlights
-
Show system comments for bugs GUI #746
Review status changes by the users are automatically stored and shown at the report comment section
for each report. With this feature the status changes of the reports can be easily tracked. -
Introduce different compiler argument filtering if the original compiler was clang #2382 #2482
If the original compiler used to build a project was clang/clang++ only a minimal compilation
flag filtering or modification is done.
In the case where the original compiler was gcc/g++ many non compatible compiler flags were
filtered which is not required if the original compiler is clang. -
Store the Cppcheck plist reports #2474
Plist reports generated by Cppcheck can be stored by theCodeChecker store
command.
For a more detailed example how to configure Cppcheck to generate the reports in the right format
see the documentation. -
CodeChecker config file support for the analysis arguments #427 #2268
The arguments for aCodeChecker analyze
command can be given in a config file.
A more detailed description about the usage and the config file format can be
found here. -
Log compile commands with absolute paths #2447
With the introduction of a new environment variable (CC_LOGGER_ABS_PATH) the compiler include paths
will be converted to an absoute path.
This conversion can be necessary if the compiler command database created
by CodeChecker will be used by other static analyzers (E.g. Cppcheck). -
Enforce taking the analyzers from PATH #2378
With the newly introduced environment variable the usage of the static analyzers in the PATH
can be forced even if the configuration contains analyzers not from the PATH. -
List ClangSA checker options #2425
The Clang Static Analyzer options can be listed now (requires clang v9.0.0 or newer).
Use the commandCodeChecker analyzers --dump-config clangsa
to print the static analyzer configuration. -
Support json output for parse command #2424
The parse command can generate json output from the reports if required:
CodeChecker parse -e json analyzer_reports
-
Use
CodeChecker parse
with multiple directories #2384
TheCodeChecker cmd parse
command now accepts multiple directories to parse the reports from. -
Update the name of a run from the command line #1778
Improvements and bug fixes
Analyzer
- Detect -MG as a precompilation flag #2472
- CodeChecker analyze and parse fails for non ascii. #2454
- Document some new checkers #2445
- Incorrect full path reconstruction for
-include
#2440 - Resolve symlinks of compiler binaries #2430
- Add missing lxml dependency to the analyzer #2414
- Document two new checks #2405
- Replace analyzer option
api-metadata-path
with package optionAPIMetadataPath
#2403 - Skip handler must be run before compiler options parsing not after #2396
- Incremental analysis failures on the same file results in stupid failure ZIP #2395
- Do not count a number of skipped actions in progress log #2394
- 'aggressive-binary-operation-simplification' should be clang version dependent #2390
- Do not load plugins when CC_ANALYZERS_FROM_PATH is used #2483
- Print a log message when overwriting a plist file #2375
- Ignore -mllvm option #2374
- Fix taint issue #2426
- Fix missing analyzer binary #2437
- Fix failure zip #2444
- Fix handling '--sysroot=' flag format #2453
- Handle enabled checker per profile for ClangSA #2337
- Do not disable all clang static analyzer checkers unconditionally #2386
- Less argument processing if skip file used without ctu and stats #2462
- Set io.open encoding to utf-8 #2484
- Add 4 new checker severity levels #2485
- some specific Xclang arguments modify the output #2492
- do not disable all clang static analyzer checkers unconditionally #2386
Web
- args.config has been renamed to args.config_file #2478
- Can not delete run #2473
- Always generate a new token on login #2423
- Use saved credentials if auto login is enabled #2421
- Trim white spaces from the user name when adding new permissions to it #2420
- Fix personal access token generation #2413
- Add a heartbeat and readiness URL #2410
- Keep the selected sub tab on run tab switch #2401
- Run tab switch jumps back to previous tab #2400
- Disable run limitation #1949
- Fix hiding tooltip of the source component filter item #2489
Other
- Documentation for cppcheck report storage #2481
- Remove SimpleStream checker from sensitive profile #2480
- Extra comments for clang compiler change in travis #2469
- Bump up the minimal required clang version #2468
- OSX does not have include-fixed in its include path #2464
- The existence of a config file influences the test #2463
- Fix test case for has_analyzer_option #2460
- Sort report lines for files #2459
- Fix missing type imports for the tests #2456
- Update to xcode10 in travis #2455
- Upgrade tests to run with Clang 9.0.0 #2451
- Remove fail zip first in case of write mode. #2450
- Fix pylint errors #2448
- Fix travis error code handling. #2446
- Adding compilation database to JSON in tu_collector #2441
- Revert "add label configuration for the github actions" #2438
- Update authentication.md for codechecker.readthedocs.io publishing #2436
- Fix thrift path on osx #2431
- Fix pylint warnings #2422
- Add more example how to use credentials #2416
- Simplify Gerrit integration documentation #2415
- Rename shared.thrift to codechecker_api_shared.thrift #2406
- Fix travis failure #2392
- Add default values to the package_layout.json #2385
- Refactoring package_layout.json file #2379
- Increment CodeChecker version to 6.11.0 #2313
- It is not possible to order runs by run name #2235
- Support response files #2092
- Introduce code owners file #2075
API changes
- New filter options for CodeChecker cmd runs command #2343
Contributors
Big thanks to everyone who helped us creating this release: @josod, @LebedevRI, @sylvestre, @hpwxf, @irishrover, @scphantm
v6.10.1
This is a bug fix release including many fixes and documentation updates. There are no new features or backward incompatible changes.
Bugfixes
Most important
- Fix exception handling for HTTP POST requests #2331
The improper handling of a possible exception caused the server to hang and not respond to the new requests. - Autocompletion for the login form #2276
The login form will be autocompleted if the credentials are saved by the browser. - fix backslash in user name #2332
LDAP user names containing a backslash caused exception at the server. - Skip lists should not be applied to the CTU pre-analysis step #2299
To collect the required information for the CTU and statistics based analysis no source
files are skipped from the compilation database at the pre-analysis step. - api modeling checkers should be enabled in all profiles #2305
- Increase the severity of some checker that indicate Undefined Behaviour #2370
- Removing
alpha.security.MallocOverflow
from the sensitive profile throws too many false positives #2366
compiler include path related fixes
- Keep GCC
include-fixed
dirs in include paths #2272
Theinclude-fixed
include paths by gcc might be required for the analysis, but that is
project dependent a new--keep-gcc-include-fixed
flag is introduced so the projects can keep or remove
the include paths for the analysis. - Additional
-nostdinc[++]
#2344,-stdlib
#2303 compilation flags are considered at the implicit compiler include path detection, because they affect the list of the include paths. - Clang searches for builtin includes relative to the binary #2302
Clang builtin include paths were added by an--isystem
flag at a fixed place if the include files were in the package, standard clang installation should not be affected by this change.
compilation command logging related fixes
- Fix ld_logger crash #2309
A crash during logging prevented to collect the compilation commands. - Give absolute path in the
CC_GCC_LOGGER_LIKE
environment variable #2315
If there are compiler wrapper scripts named the same way as the original compiler (gcc/g++) logging the original compiler was hard because the difference was only in the path of the executable. With this change the logging the original compiler execution can be done too.
Analyzer
- Fix Z3 refutation detection #2231
- return 0 in case no analysis is needed #2255
- Crash in splitting output of "clang -### ..." #2300
- Plist files should contain absolute paths #2360
- import get_logger in clang_options.py #2296
- CodeChecker disables apiModeling by default #2289
- Introduce clang version dependent options #2287
- fix env forwarding for the subprocess in ctu autodetect #2284
- Fix a typo on setup_process_timeout call #2281
- -fstack-reuse is not supported by clang #2280
- Determine language based on compiler name #2277
- Remove skip list handler from common module #2274
- remove argument handling class from common module #2254
- move report parsing related code to the parse cmd #2252
- fix context free report hash generation doc #2251
- refactor suppress file handler #2250
- Fix LOG.debug #2248
- move proc timeout functions and tests to analyzer #2246
- move get_binary_in_path to analyzer module #2245
- Add tests for cmdline #2283
Web
- Store analyzer version instead of CodeChecker version #2373
- Upgrade JQuery to 3.4.1 #2345
- Fix double scroll bar on the GUI #2334
- Extend the help message of "CodeChecker cmd del" command #2325
- indentation of the call graph is not always correct #2320
- Make placeholder help for source components more descriptive #2310
- "loading" label for unauthorized users #2307
- Fix local session creation #2301
- Fix comment update #2282
- Fix pg8000 test command #2275
- Revise how events are indented in a bug report #2269
- Web GUI doesn't honor new lines for comments #2259
- move profiler from common to server #2247
- Impossible to delete run in the web GUI #2234
- Fix reading worker_processes config value #2227
- Fix source code comment regex #2356
Other
- Description of incremental analysis using skipfile #2381
- Remove whitespace characters at cmd results #2362
- Buggy 'CodeChecker parse --print-steps' filename outputs when a report is ranging across TUs. #2358
- Format main README.md #2355
- Fix daily script #2316
- package_layout.json "ctu_func_map_cmd" is not considered #2330
- Update documentation #2323
- ld_logger improvement #2317
- gcc compiler flags against Spectre unknown by clang #2304
- match for multiple digit clang versions in tests #2298
- Update travis ci base image to bionic #2291
- replace StackAddressEscape checker in analyzer tests #2288
- Omit extra newlines while logging build commands #2286
- Add standalone package target #2273
- remove unused db version information #2270
- create reports and project for the update test #2266
- enable build matrix for travis #2261
- tu_collector tests can be run independently #2253
- update travis to clang8 #2244
- Exception on regex characters in checker name #2241
- Fix Clang version regex in tests #2239
- bump up version to v6.10.1 #2225
API
- Fix getDiffResultsHash API function #2265
Credits
Big thanks to everyone who helped us creating this release: @gwangmu, @irishrover, @zingo
v6.10.0
Backward incompatible CLI change
- CLI run name filter delimiter was changed from ":" to " ".
With this change run names containing ":" can be filtered.
The previous solution prevented to filter run names containing ":". #2113
Analyzer
New Features
-
Add support to enable Z3 refutation.
Use the Z3 theorem prover if Clang is built with it, to cross check the results by Clang Static Analyzer.
The usage of this solver can reduce the false positives produced by the ranged-based solver,
and using refutation should not increase the analysis time a lot. #2091
This feature is enabled by default if available. -
Add support to enable Z3 Theorem Prover #2087
Use the Z3 theorem prover if Clang is built with it. In this case the built in range-based constraints
solver will be replaced by Z3 in Clang Static Analyzer.
The performance is worse than the default range-based constraint solver right now.
It can be enabled by the--z3
flag. -
Give warning if an enabled or disabled checker is missing or there was a typo in the checker name #2215
-
Clang warnings can be listed with the
CodeChecker checkers --warnings
#1693 -
Add
--trim_path_prefix
option for parser command #2076
Improvements
- Multiple improvements and bug fixes for build environments with ccache #2202, #2126
- Collect compiler information for multiple languages (C/C++) #2193
- If available use lxml library to parse plist files to improve performance #2170
- Skip sources argument when parsing the precompilation options #2072
- Define severity for new checkers #2128, #2132, #2141
- Adding clang8 checker naming related changes #2216
- Try to autodetect mapping tool based on clang version, required for CTU analysis with clang8 and newer #2030
- Improvements to log compilation commands during the build process #2131, #2160, #2139
Web
New Features
- Filtering can be done based on the bug path length on the web UI #2197
- CLI is now able to return the detailed bug path if required #2068
- The diff command prints the summary of the results now #2165
- New documentation and configuration files to create docker images for easier setup and installation #2038
- New docker image is available on dockerhub
Improvements
- Multiple performance improvements to speed up the storage and query of the results #2177, #2175, #2172, #2188, #2169, #2178, #2163, #2135
- Case insensitive LDAP group search and comparison #2073
- Don't allow users to see the results of a product where no permissions were set #2158
- Send back a valid Thrift error response instead of HTTP error codes #2149
- Implicit initial wildcard in search fields for easier search #2134
- Multiple third party dependencies were updated (SQLAlchemy, psycopg2) #2079, #2181
Web API changes
- Create separate API function to get analysis statistics #2182
- Run history limitation was introduced #2177
- getRunData limitation was introduced #2175
- New API function is available to get check command #2172
Other bug fixes and improvements
You can find a more detailed list of changes here: milestone 6.10
v6.9.1
New
- Enabling expand-macros feature of clang #1994
- Since clang v8 macros can be expanded in the reports. This feature is enabled by default in CodeChecker
so the reports will always contain macro expansions for better report understanding.
- Since clang v8 macros can be expanded in the reports. This feature is enabled by default in CodeChecker
- Specify only a sub string of the checker name for suppression #2019
- Source code review status comments will work with checker name sub strings (useful if a checker is moved between packages)
- New
security
checkers profile #1054- New
security
profile with multiple security related checkers is available.
RunCodeChecker checkers --profile security
for the full list of checkers.
- New
Changes
- Added severity levels of yet uncategorized checkers and checker profiles were updated #2034
Default profile:
Added
- alpha.cplusplus.UninitializedObject
- bugprone-copy-constructor-init
- bugprone-terminating-continue
- bugprone-throw-keyword-missing
- bugprone-unused-return-value
- bugprone-virtual-near-miss
- cert-fio38-c
- cplusplus.InnerPointer
- optin.cplusplus.VirtualCall
Sensitive profile:
Added
- alpha.cplusplus.UninitializedObject
- alpha.security.MmapWriteExec
- bugprone-copy-constructor-init
- bugprone-exception-escape
- bugprone-macro-parentheses
- bugprone-terminating-continue
- bugprone-throw-keyword-missing
- bugprone-unused-return-value
- bugprone-virtual-near-miss
- cert-dcl54-cpp
- cert-err09-cpp
- cert-fio38-c
- cert-msc51-cpp
- cplusplus.InnerPointer
- optin.cplusplus.VirtualCall
Extreme profile:
Added
- alpha.cplusplus.UninitializedObject
- alpha.security.MmapWriteExec
- bugprone-copy-constructor-init
- bugprone-exception-escape
- bugprone-macro-parentheses
- bugprone-terminating-continue
- bugprone-throw-keyword-missing
- bugprone-unused-return-value
- bugprone-virtual-near-miss
- cert-dcl54-cpp
- cert-err09-cpp
- cert-fio38-c
- cert-msc51-cpp
- cplusplus.InnerPointer
- cppcoreguidelines-narrowing-conversions
- misc-unused-parameters
- optin.cplusplus.VirtualCall
- optin.performance.Padding
- security.insecureAPI.bcmp
- security.insecureAPI.bcopy
- security.insecureAPI.bzero
- security.insecureAPI.strcpy
You can get more information about the checkers here and here.
Improvements
- Show supported analyzers at cmd checkers #2055
- add readthedocs link #2041
- introduce readthedocs #1935
- add docs as a special route #2052
- Gerrit-Jenkins integration is extended #2061
- rename passwords json file in the doc #2035
- add new mkdocs target to build the documentation #2026
- update test documentation #1985
- Resurrect --compiler-info-file analyze flag. #2039
- [userguide] Disable review status change feature #2002
- Travis clang back to 7 #2022
- run brew cleanup only in osx in travis #2016
- load only files with ".so" extension as a plugin #2014
- Run python style tests before test target #2010
- Improve web test performance #2004
- Keep clang flags #2003
- Update travis llvm version #1998
- Create pip package from tu-collector #1995
- Pip package from plist-to-html #1993
- Increase performance of the travis jobs #1991
- Add pylint and pycodestyle targets #1952
- Add more test targets to the main Makefile #1951
- Handle cases when plugin directory does not exist #1946
- Use compiler_info.json file in debug scripts #1941
- Give better error message on keyerror at package context #1933
- Extend version file with git information #1931
- Download external dependencies with Makefile #1929
- Add example for CodeChecker cmd diff #1927
- Tool to create new compiler info files from old ones. #1909
- return error in case of wrong checker profile name #2059
- create test case for mixed compilation x dependency file case #2050
plist to html tool improvements
- Improve plist-to-html sort performance #2037
- [plist-to-html] Ordering of reports #1973
- [plist-to-html] Link to index.html #1972
- [plist-to-html] Sort the reports in ascending order by file path #2054
- [plist-to-html] Ordering reports #2028
- collect statistics for plist to html parser #1035
Bug Fixes
- The skipped flags are skipped in case of Clang too #2062
- A compiler doesn't provide an architecture target #2067
- fix missing sys import #2064
- isystem path was set wrong #2060
- fix profile listing on name conflict #2058
- handle character decoding problems (locale mismatch) #1770
- review status is not set #1647
- filter based on detection date without setting the hour value #2048
- detection date filter not set from url #2047
- plist to html index.html sorting problem #2046
- Fix package build #2029
- Yet another logger fix #2027
- Logging does not preserve escaped quotes #2025
- Cleanup database on run remove #2018
- Fix travis missing "then" keyword #2017
- Refactoring docs #2013
- Processing target architecture first in log parser #2008
- Fix run_test target #2006
- Fix default target call #2000
- return an empty string at getting compiler includes #1997
- Fix cleaning venv_dev #1996
- Compile action contains bot compiler and preprocessor flags #1989
- Fix authentication #1988
- fix analyzer_statistics module import #1982
- Introducing --compile-uniqueing parameter #1965
- Fix run_test target #1958
- Fix cleanup target #1950
- Do not store failed files when using 6.9.0 version #1943
- Fix failed source list of analysis statistics #1942
- There is no way to jump to a note, like you can to events #1940
- fix action list length check #1938
- Fix verbosity in build scripts #1936
- CodeChecker log generated json can't handle filenames with spaces #1366
- Incorrection documentation about "cmd login" #1133
Source repository changes
This release contains many bug fixes and a large amount of source code refactoring.
We started the refactoring to split up the source tree to easier manageable pieces.
The work is not fully finished but we are close.
Separating the main parts will allow us to release and develop them independently in the future.
The main new parts of the restructured repository are:
- analyzer (run and configure the supported static analyzers)
- tools/build-logger/ (log compiler invocations during build)
- web (web server and client to store/query and manage the reports)
- tools (independent tools which are used by the analyzer or web)
- plist_to_html
- tu_collector
You can find more details about the new layout here #1830
Refactoring
- Move webserver unit tests under server #1955
- allow to set the base wp dir from env variable for tests #1983
- Allow to set workspace for web tests #1980
- Reduce the number of travis matrices #1975
- Cache downloaded binary osx packages on travis #1966
- Skip generated files from tests projects in gitignore #1959
- use templates to generate html files #2040
- Create commands.json for sub-commands #1932
- Create package directory #1977
- Separate directory for analyzers #1976
- call setup.py only in the target #2015
- Refactoring web docs #2024
- Revert back package build scripts to py2 #1945
- remove py3 incompatible uppercase conversion #1923
- python3 compatible exception cleanup #1922
- Build the package before running functional tests #1954
- cleanup make targets with/without virtualenv #2007
- merge dev and test virtual environments #2005
- Refactoring CONTRIBUTING.md file after split up #2011
- Use Makefile to build CodeChecker package #1937
- Refactoring generated CodeChecker dependency #1990
- Refactoring plist to html #1986
- Refactoring config files #1979
- Add targets to build analyzer and web separately #1974
- Rename libcodechecker to codechecker_common #1968
- Remove .noserc from root #1967
- Split up source repository #1964
- Split up refactoring #1963
- Fix CodeChecker version after split up #1962
- Get analyzer_statistics module from analyzer #1961
- Move some files to webserver common #1960
- Split up docs #1956
- Create separate contexts for analyzer and server #1953
- Split up server/client handling parts #1944
- Split up analyzer handling part #1939
- Remove psycopg2 from analyzer requirements #1999
- Prepare split up #1921
- finish logging cleanup #1911
- fix pylint old-style class warnings #1917
- py3 fix iterator protocol (next method change) #1926
- fix dict.items referenced when not iterating py3 #1925
- fix dict item was referenced when not iterating py3 #1928
- Move analyzer specific test projects under analyzer #1947
- Move server related test projects under server #1948
v6.9.0
Release 6.9.0
New Features
- New "OFF" and "UNAVAILABLE" detection statuses were introduced #1850
Mark a report "OFF" in case the checker is available but it was turned off in a later analysis.
Mark a report "UNAVAILABLE" in case the checker was removed or renamed between different analyzer releases.
They influence the analysis statistics numbers, see the documentation for further details
(diff calculation) - Disable review status change on the WEB UI #1825
Review status changed for a product can be disabled by a product admin. - Improved logging for build systems using ccache #1864
- Filter by detection date in command line #1899
- CallAndMessageUnInitRefArg was removed from extreme profile #1897
- Add run name filter to Codechecker cmd runs command #1849
- Report uniqueing arguments in command line #1877
- Handle compile errors and analyzer crash separately #1829
- New documentation about report identification #1831
- Add left/right arrow to the bug steps in the webui #1813
- Add extra analyzer flag if the iterator checkers are enabled #1833
- Highlight selected event in the generated html report #1893
- Announcement banner. #1861
Improvements
- Log optimization #1886
- Do not convert notes to events #1882
- Edit doxygen main page and add images #1884
- Ignore encoding errors #1852
- Warning when upgrading SQLite database #1858
- Update architecture overview #1880
- Correct way to convert clang-tidy .rst to .md correctly rendered by CodeChecker #1857
- Show link to the ClangTidy site for ClangTidy checks in "Show Docs" #1848
- Remove unused analyze arguments from User Guide. #1891
- NFC: just sort checker names #1847
- Add bugprone-parent-virtual-call check for clang-tidy v7+ #1843
- Set user name in the HTTP response header #1828
- Unnecessary signal handling in performance test. #1826
- Write more info logs at the server #1824
- Print statistics on signal #1823
- ugrade boost before thrift install #1821
- Freeze test requirements and move requirements.txt #1820
- New dockerfiles for test environments #1819
- Source venv before pycodestyle #1817
- Upgrade test environment for clang7 #1816
- Initial mkdocs support #1812
- Documentation cleanup #1811
- Bump up version to 6.9.0 #1809
- Constructing config handler is the analyzer classes' responsibility #1788
- Modify curl arguments for 3pp downloads #1718
- Review sql queries #1700
- Contradiction expensive to evaluate #864
- Refactoring fail zip #1772
- Add stats collector hook #1872
- Option parser refactoring #1814
- Make ImplicitCompilerInfo's methods static. #1892
- Reformat usage guide for mkdocs #1832
- Add tooltips to detection status filter items #1907
Bug Fixes
- Add clang_analayzer macro to CTU pre analysis #1865
- Fix --timeout as clang-sa spawned child processes are not killed now #1844
- Tash files are created in cwd by --stats-collect #1881
- Whitespace escaping in source path #1871
- Fix HTML converter layout file default path #1894
- Fix PlistToHTML bug path arrows #1889
- Fix escaping in command line arguments #1888
- Fix: macros are under diagnosics instead of path #1887
- Test OSX Travis #1873
- Fix default value of Boolean column at migration #1869
- Option parser refactoring broke osx tests #1868
- Combobox with False-positive/Intended/... is not shown on last revision #1863
- Update postgresql in osx travis ci #1856
- Fix running psql test cases #1846
- Fix source code comment unicode error #1845
- [CTU] Compiler default C++ dialect is not added when generating the PCH files #1838
- Fix documentation (markdown syntax and typo) #1810
- When many products are added (>30) the product list page takes ~6s to load #1730
- If the json file is incorrect formatted, show the impacted file #1665
- Fix typo #1896
- Fix slow boost build in travis #1822
- Fix command line help message #1854
- Small fixes found by PyCharm's static analysis #1837
- Upload compiler_info.json #1900
- Fix storage of analysis statistics test #1901
- Store statistics if it contains failed zips #1902
- Small log parser fixes. #1903
- Enable statistics checkers before workers #1905
- Fix password request for cmd #1910
- Fix missing space in warning message #1912
- Add missing future imports #1913
v6.8.1
Improvements
- Select hash generation method #1801
Analyzer report hash generation algorithm can be selected in the command line - Add dates to the run tag list at report filter #1781
- New documentation for Gerrit-Jenkins integration #1746
- Don't parse command line options for skipped files. #1790
- Improve option_parser.py::arg_check to reduce number of regexps compiled #1789
- Log invalid LDAP credentials as warnings #1787
- Preserve -nostdinc++ in command line, the same as for -nostdinc #1779
- Slightly cleaner handling of constructing analyzers #1774
- Option to do database migration without user interaction #1769
- Print out which product is garbage collected #1767
- Online server configuration file reload #1766
- Handle SIGTERM to stop the server running. #1762
- Remove trivial properties. Rename some files. #1759
- Add missing python requirement. #1756
- Add logo files #1750
- Skip '-Xclang ' at argument parsing #1744
- Add .editorconfig file #1697
Bug Fixes
- GUI Bug bug path numbering #1806
--force
argument for store does not work #1802- Hash generation failed because of decoding error #1800
- Bug fix: if there is an issue present, parse_output_parser.py #1799
- Multiple configuration option for the same checker #1791
- Check that the given product exist at server #1786
- Fix long line #1785
- Fix exception message printing at server #1784
- Break long lines at cmd analyze and check commands #1783
- Convert relative include paths to absolute #1782
- Fix scrolling at Bug List data grid #1780
- Add missing images to user guide #1776
- Remove lock file at the end of logging #1773
- Fix profileit function #1768
- Fix storing check command #1764
- Fix instance manager file lock #1763
- Fix plist to html parser #1758
- Fix non breakable space character #1754
- Slugify run name when storing analysis statistics #1753
- Fix plist to html converter missing severity #1751
- Fix run tab change #1748
- Increase performance of loading products #1740
check
command's -c flag should remove the report directory #1646- Fix SQL query #1808
v6.8.0
New features
Command line features
- #1635 Comparison of report directories from the command line (without database)
Example:CodeChecker cmd diff -b /path/to/report_dir_base -n /path/to/report_dir_new --new
Analysis Related features
-
#1654 Fine grain control of warnings
It will be possible to enable/disable clang warnings one-by-one. Example: CodeChecker analyze
/path/to/build.log -o /path/to/output/dir --enable Wunused --disable Wno-unused-parameter
Allow to set Clang Static Analyzer and Tidy checker options from CodeChecker command line See ticket (2018-Q3) -
#1703 Analyzer Configuration It is supported to set all clang-tidy and clang static analyzer parameters such as -analyzer-inline-max-stack-depth, - analyzer-max-loop through configuration files. For details see pull request.
-
#1728 Configuration of Statistical Checkers
It will be possible to configure the significanceRatio and the minimumSampleCount for the statistical checkers:
alpha.ericsson.statisticsbased.SpecialReturnValue, alpha.ericsson.statisticsbased.UncheckedReturnValue. See issue. -
#1720 Default C/C++ standard auto-detection
Detect automatically which C/C++ standard was used for compilation by gcc and pass the relevant option to Clang (e.g. -std=c++11) . See issue.
Web UI features
-
#1675 Filter reports by report hash
It will be possible to filter findings on the WEB GUI and command line based on bug hash. For details see pull request. -
#1686 Filters for the checker statics page in WEB UI
Extended filters will be added to the statistics page. For details see pull request.
Possibility to delete reports based on filters in the WEB UI -
#1624 Management (edit/add/delete) source code component definitions in the WEB UI
-
#1721 Upload Analyzer Statistics to the central server
For each analysis run, the following statistics is collected and uploaded to the central server and shown for all runs (and also in the run history): files that were successfully analyzed or analyze with failiure, CodeChecker version used for analysis, clang version used for analysis.
Bug Fixes
#1737 handle missing documentation file
#1736 Increase API version
#1735 fine tune error logs
#1734 Renaming statistical test file to cpp
#1733 Fixing exception when shutting down server process
#1732 Making the test server start synchronous
#1731 Fixing the make file
#1728 New configuration options for statistical counting
#1727 Hide Remove filtered reports button
#1726 Fix some JS and python alerts
#1723 calculate bug path length at store (schema change)
#1722 Zombie processes remain on analysis interruption
#1719 Query reports only when shown.
#1717 improve error handling for packaging
#1716 update dojotoolkit link for download
#1715 change component filtering behavior
#1714 Introducing clang-tidy config options file on the command line interface.
#1713 Print statistics at the end of parse command
#1712 Describe new features of v6.8
#1711 Removing run reports in chunks Kind: Bugfix Target: Server
#1710 Add new checker profile: portability
#1708 Fix JavaScript old browser compatibility
#1707 Fix long line in failure_lib.py
#1706 Update web userguide
#1705 Fixed Spelling.
#1703 add checker and analyzer configuration documentation
#1702 Fix checker name filter Kind: Bugfix Target: WebGUI
#1701 Pass severity map dictionary instead of the file
#1699 Encode html entities in PlistToHtml parser
#1695 Handle invalid json files Kind: Bugfix
#1694 increase scan-build version for osx install
#1690 Fix confirmed bug icon at Checker statistics page
#1689 restructure python requirements files
#1685 Fasten tests Kind: Bugfix
#1682 Extend filter text input field hint with example
#1681 Set default severity level for compiler warnings
#1680 Enable -Wall and -Wextra warnings by default
#1679 Multiline messages are displayed properly
#1678 Set default filter values at Checker statistics
#1677 Fix CTU test
#1676 Fix utf8 error at diff when generating html output
#1675 Filter reports by report hash at the command line
#1672 Ignore target dependent -mabi compiler option.
#1670 Call getSeverityCounts correctly
#1669 Fix compiler warning test cases
#1668 sysroot parameter can be given multiple ways
#1667 Update group field of the users tokens on login
#1664 Filter results by report hash on the GUI Kind: Enhancement Target: WebGUI
#1663 Plist to html browser support
add .envrc to gitignore Kind: Usability
#1662 add .envrc to gitignore Kind: Usability
#1660 Allow more product endpoint names to be valid Kind: Enhancement Target: Server
#1658 Fix tidy output converter
#1657 rename compile log file name in the bitbake example
#1655 Set file path after items are added to bug tree
#1650 Use valid license name
#1648 Summarize results for source files at parse cmd
#1645 Add statistics checkers' flags to CodeChecker check sub-command
#1644 Minor fix in documentation
#1641 Fix non existing report in the GUI
#1640 Distinguish BuildAction objects on original build command