Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions web/client/codechecker_client/cli/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@
from codechecker_report_converter import twodim
from codechecker_report_converter.report import Report, report_file, \
reports as reports_helper, statistics as report_statistics
from codechecker_report_converter.report.hash import HashType, \
get_report_path_hash
from codechecker_report_converter.report.hash import get_report_path_hash
from codechecker_report_converter.report.parser.base import AnalyzerInfo

try:
Expand Down Expand Up @@ -421,17 +420,15 @@ def get_reports(
""" Get reports from the given analyzer result file. """
reports = report_file.get_reports(
analyzer_result_file_path, checker_labels)

# CppCheck generates a '0' value for the report hash. In case all of the
# reports in a result file contain only a hash with '0' value, overwrite
# the hash values in the report files with a context free hash value.
if all(r.report_hash == '0' for r in reports):
report_file.replace_report_hash(
analyzer_result_file_path, HashType.CONTEXT_FREE)

reports = report_file.get_reports(
analyzer_result_file_path, checker_labels)

# If CppCheck is ran natively (without CodeChecker), it generates a '0'
# value for the report hash by default. We used to correct this during the
# store operation, but we no longer accept plists that are not compliant
# with out plist specification in docs/tools/plist.md.
if reports and all(r.report_hash == '0' for r in reports):
LOG.error("All bug hashes are 0 in the report file, which is no "
"longer supported. Please re-analyze the project using "
"CodeChecker!")
sys.exit(1)
return reports


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ void test1(int z) {
int x = 1 / z; // warn
}

void test2{
void test2(){
int x = 1;
div(x)
div(x);
}
Comment thread
Szelethus marked this conversation as resolved.
File renamed without changes.
5 changes: 5 additions & 0 deletions web/tests/functional/cppcheck/correct_test_proj/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

all: analyze

analyze:
cppcheck --enable=all --plist-output=. .
19 changes: 19 additions & 0 deletions web/tests/functional/cppcheck/correct_test_proj/divide_zero.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// -------------------------------------------------------------------------
// Part of the CodeChecker project, under the Apache License v2.0 with
// LLVM Exceptions. See LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// -------------------------------------------------------------------------

// core.DivideZero (C, C++, ObjC)
// Check for division by zero.
#include "lib.h"

void test1(int z) {
if (z == 0)
int x = 1 / z; // warn
}

void test2(){
int x = 1;
div(x);
}
310 changes: 310 additions & 0 deletions web/tests/functional/cppcheck/correct_test_proj/divide_zero.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>diagnostics</key>
<array>
<dict>
<key>category</key>
<string>error</string>
<key>check_name</key>
<string>cppcheck-zerodiv</string>
<key>description</key>
<string>Division by zero.</string>
<key>issue_hash_content_of_line_in_context</key>
<string>f5daf9f6c6b883716a45183adde1d9d3</string>
<key>location</key>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
<key>path</key>
<array>
<dict>
<key>depth</key>
<integer>0</integer>
<key>kind</key>
<string>event</string>
<key>location</key>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
<key>message</key>
<string>Division by zero</string>
<key>ranges</key>
<array>
<array>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
</array>
</array>
</dict>
<dict>
<key>depth</key>
<integer>0</integer>
<key>kind</key>
<string>event</string>
<key>location</key>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
<key>message</key>
<string>Division by zero.</string>
<key>ranges</key>
<array>
<array>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
<dict>
<key>col</key>
<integer>13</integer>
<key>file</key>
<integer>1</integer>
<key>line</key>
<integer>11</integer>
</dict>
</array>
</array>
</dict>
</array>
</dict>
<dict>
<key>category</key>
<string>warning</string>
<key>check_name</key>
<string>cppcheck-zerodivcond</string>
<key>description</key>
<string>Either the condition 'z==0' is redundant or there is division by zero at line 13.</string>
<key>issue_hash_content_of_line_in_context</key>
<string>cb1ef69bbe051721d0b09f981ee63319</string>
<key>location</key>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<key>path</key>
<array>
<dict>
<key>edges</key>
<array>
<dict>
<key>end</key>
<array>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
</array>
<key>start</key>
<array>
<dict>
<key>col</key>
<integer>9</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
<dict>
<key>col</key>
<integer>9</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
</array>
</dict>
</array>
<key>kind</key>
<string>control</string>
</dict>
<dict>
<key>depth</key>
<integer>0</integer>
<key>kind</key>
<string>event</string>
<key>location</key>
<dict>
<key>col</key>
<integer>9</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
<key>message</key>
<string>Assuming that condition 'z==0' is not redundant</string>
<key>ranges</key>
<array>
<array>
<dict>
<key>col</key>
<integer>9</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
<dict>
<key>col</key>
<integer>9</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
</array>
</array>
</dict>
<dict>
<key>depth</key>
<integer>0</integer>
<key>kind</key>
<string>event</string>
<key>location</key>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<key>message</key>
<string>Division by zero</string>
<key>ranges</key>
<array>
<array>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
</array>
</array>
</dict>
<dict>
<key>depth</key>
<integer>0</integer>
<key>kind</key>
<string>event</string>
<key>location</key>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<key>message</key>
<string>Either the condition 'z==0' is redundant or there is division by zero at line 13.</string>
<key>ranges</key>
<array>
<array>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
<dict>
<key>col</key>
<integer>15</integer>
<key>file</key>
<integer>0</integer>
<key>line</key>
<integer>13</integer>
</dict>
</array>
</array>
</dict>
</array>
</dict>
</array>
<key>files</key>
<array>
<string>divide_zero.cpp</string>
<string>lib.h</string>
</array>
<key>metadata</key>
<dict>
<key>analyzer</key>
<dict>
<key>name</key>
<string>cppcheck</string>
</dict>
<key>generated_by</key>
<dict>
<key>name</key>
<string>CodeChecker</string>
<key>version</key>
<string>6.29.0</string>
</dict>
</dict>
</dict>
</plist>
12 changes: 12 additions & 0 deletions web/tests/functional/cppcheck/correct_test_proj/lib.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// -------------------------------------------------------------------------
// Part of the CodeChecker project, under the Apache License v2.0 with
// LLVM Exceptions. See LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// -------------------------------------------------------------------------

// core.DivideZero (C, C++, ObjC)
// Check for division by zero.

void div(int x) {
int y = x % 0; // warn
}
Loading
Loading