Skip to content

Releases: Ericsson/codechecker

v6.12.1

12 Jun 12:05
be4c6ac
Compare
Choose a tag to compare

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

15 May 09:57
ecccb63
Compare
Choose a tag to compare

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

13 Feb 16:17
9bb0047
Compare
Choose a tag to compare

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

  • Do not enable all modernize checkers in sensitive profile #2502 #2558

v6.11.0

13 Dec 12:35
65a042f
Compare
Choose a tag to compare

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 the CodeChecker 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 a CodeChecker 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 command CodeChecker 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
    The CodeChecker 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 option APIMetadataPath #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

10 Oct 14:45
d3928e3
Compare
Choose a tag to compare

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
    The include-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

12 Jul 12:01
28cb139
Compare
Choose a tag to compare

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

12 Apr 11:46
197579e
Compare
Choose a tag to compare

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.
  • 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.
      Run CodeChecker checkers --profile security for the full list of checkers.

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

08 Feb 19:31
03351d2
Compare
Choose a tag to compare

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

08 Nov 15:04
e8b4c61
Compare
Choose a tag to compare

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

11 Sep 17:26
2bd99a0
Compare
Choose a tag to compare

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