Merge branch 'master' of github.com:danmar/cppcheck

This commit is contained in:
Zachary Blair 2011-02-06 01:31:09 -08:00
commit daa04872a0
39 changed files with 1789 additions and 1125 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@ tools/dmake
dmake
tools/errmsg
# VS generated files
*.obj
*.ncb
*.suo
*.user

View File

@ -607,68 +607,67 @@ void CmdLineParser::PrintHelp()
std::cout << "Cppcheck - A tool for static C/C++ code analysis\n"
"\n"
"Syntax:\n"
" cppcheck [--append=file] [-D<ID>] [--enable=<id>] [--error-exitcode=[n]]\n"
" [--exitcode-suppressions file] [--file-list=file.txt] [--force]\n"
" [--help] [-Idir] [--inline-suppr] [-j [jobs]] [--quiet]\n"
" [--report-progress] [--style] [--suppressions-list=file.txt]\n"
" [--verbose] [--version] [--xml] [file or path1] [file or path]\n"
" cppcheck [OPTIONS] [files or paths]\n"
"\n"
"If path is given instead of filename, *.cpp, *.cxx, *.cc, *.c++ and *.c files\n"
"are checked recursively from given directory.\n\n"
"Options:\n"
" --append=file This allows you to provide information about\n"
" --append=<file> This allows you to provide information about\n"
" functions by providing an implementation for these.\n"
" -D<ID> By default Cppcheck checks all configurations.\n"
" Use -D to limit the checking. When -D is used the\n"
" checking is limited to the given configuration.\n"
" Example: -DDEBUG=1 -D__cplusplus\n"
" --enable=id Enable additional checks. The available ids are:\n"
" --enable=<id> Enable additional checks. The available ids are:\n"
" * all - enable all checks\n"
" * style - Check coding style\n"
" * information - Enable information messages\n"
" * unusedFunction - check for unused functions\n"
" * missingInclude - check for missing includes\n"
" Several ids can be given if you separate them with commas\n"
" --error-exitcode=[n] If errors are found, integer [n] is returned instead\n"
" Several ids can be given if you separate them with commas.\n"
" --error-exitcode=<n> If errors are found, integer [n] is returned instead\n"
" of default 0. EXIT_FAILURE is returned\n"
" if arguments are not valid or if no input files are\n"
" provided. Note that your operating system can\n"
" modify this value, e.g. 256 can become 0.\n"
" --errorlist Print a list of all error messages in XML format.\n"
" --exitcode-suppressions=file\n"
" --exitcode-suppressions=<file>\n"
" Used when certain messages should be displayed but\n"
" should not cause a non-zero exitcode.\n"
" --file-list=file Specify the files to check in a text file. One Filename per line.\n"
" --file-list=<file> Specify the files to check in a text file. One Filename per line.\n"
" -f, --force Force checking on files that have \"too many\"\n"
" configurations\n"
" -h, --help Print this help\n"
" -I [dir] Give include path. Give several -I parameters to give\n"
" configurations.\n"
" -h, --help Print this help.\n"
" -I <dir> Give include path. Give several -I parameters to give\n"
" several paths. First given path is checked first. If\n"
" paths are relative to source files, this is not needed\n"
" -i [dir] Give path to ignore. Give several -i parameters to ignore\n"
" paths are relative to source files, this is not needed.\n"
" -i <dir> Give path to ignore. Give several -i parameters to ignore\n"
" several paths. Give directory name or filename with path\n"
" as parameter. Directory name is matched to all parts of the\n"
" path.\n"
" --inline-suppr Enable inline suppressions. Use them by placing one or\n"
" more comments, like: // cppcheck-suppress warningId\n"
" on the lines before the warning to suppress.\n"
" -j [jobs] Start [jobs] threads to do the checking simultaneously.\n"
" -q, --quiet Only print error messages\n"
" -j <jobs> Start [jobs] threads to do the checking simultaneously.\n"
" -q, --quiet Only print error messages.\n"
" --report-progress Report progress messages while checking a file.\n"
" -s, --style deprecated, use --enable=style\n"
" --suppressions-list=file\n"
" --rule=<rule> Match regular expression.\n"
" --rule-file=<file> Use given rule file. For more information, see: \n"
" https://sourceforge.net/projects/cppcheck/files/Articles/\n"
" -s, --style Deprecated, use --enable=style\n"
" --suppressions-list=<file>\n"
" Suppress warnings listed in the file. Filename and line\n"
" are optional in the suppression file. The format of the\n"
" single line in the suppression file is:\n"
" [error id]:[filename]:[line]\n"
" --template '[text]' Format the error messages. E.g.\n"
" --template '<text>' Format the error messages. E.g.\n"
" '{file}:{line},{severity},{id},{message}' or\n"
" '{file}({line}):({severity}) {message}'\n"
" Pre-defined templates: gcc, vs\n"
" -v, --verbose More detailed error reports\n"
" --version Print out version number\n"
" -v, --verbose More detailed error reports.\n"
" --version Print out version number.\n"
" --xml Write results in xml to error stream.\n"
" --xml-version=[version]\n"
" --xml-version=<version>\n"
" Select the XML file version. Currently versions 1 and 2\n"
" are available. The default version is 1."
"\n"

View File

@ -223,9 +223,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -563,8 +563,9 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML-Dateien (*.xml);;Textdateien (*.txt);;CSV-Dateien (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML-Dateien (*.xml);;Textdateien (*.txt);;CSV-Dateien (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -573,7 +574,6 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML-Dateien (*.xml)</translation>
</message>
@ -584,8 +584,8 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -601,23 +601,33 @@ kate -l(line) (file)</translation>
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Textdateien (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation>CSV-Dateien (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -633,39 +643,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -929,18 +939,18 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>Keine Fehler gefunden.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Es wurden Fehler gefunden, aber sie sind so konfiguriert, ausgeblendet zu werden.
@ -948,28 +958,29 @@ Legen Sie unter dem Menü Ansicht fest, welche Art von Fehlern angezeigt werden
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>Keine Fehler gefunden, nichts zu speichern.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Der Bericht konnte nicht speichern werden.</translation>
</message>

View File

@ -225,9 +225,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -565,8 +565,9 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -575,7 +576,6 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation>
</message>
@ -586,8 +586,8 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -603,23 +603,33 @@ kate -l(line) (file)</translation>
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -633,39 +643,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -929,18 +939,18 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>No errors found.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Errors were found, but they are configured to be hidden.
@ -948,28 +958,29 @@ To toggle what kind of errors are shown, open view menu.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>No errors found, nothing to save.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Failed to save the report.</translation>
</message>

View File

@ -227,9 +227,9 @@ kate -l(line) (file)
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -567,8 +567,9 @@ kate -l(line) (file)
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML-tiedostot (*.xml);;Tekstitiedostot (*.txt);;CSV-tiedostot (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML-tiedostot (*.xml);;Tekstitiedostot (*.txt);;CSV-tiedostot (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -577,7 +578,6 @@ kate -l(line) (file)
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML-tiedostot (*xml)</translation>
</message>
@ -588,8 +588,8 @@ kate -l(line) (file)
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -605,23 +605,33 @@ kate -l(line) (file)
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Tekstitiedostot (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -637,39 +647,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -933,18 +943,18 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>Virheitä ei löytynyt.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Virheitä löytyi, mutta asetuksissa kyseiset virheet on määritelty piilotettavaksi.
@ -952,28 +962,29 @@ Määrittääksesi minkä tyyppisiä virheitä näytetään, avaa näkymä valik
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>Virheitä ei löytynyt, ei mitään tallennettavaa.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Raportin tallentaminen epäonnistui.</translation>
</message>

View File

@ -15,10 +15,6 @@
<source>Cppcheck - A tool for static C/C++ code analysis.</source>
<translation>Cppcheck - Un outil d&apos;analyse statique de code C/C++.</translation>
</message>
<message utf8="true">
<source>Copyright (C) 2007-2010 Daniel Marjamäki and cppcheck team.</source>
<translation>Copyright (C) 2007-2010 Daniel Marjamäki et cppcheck team.</translation>
</message>
<message>
<source>This program is licensed under the terms
of the GNU General Public License version 3</source>
@ -29,6 +25,10 @@ General Public License version 3</translation>
<source>Visit Cppcheck homepage at %1</source>
<translation>Visitez le site Cppcheck : %1</translation>
</message>
<message utf8="true">
<source>Copyright © 2007-2010 Daniel Marjamäki and cppcheck team.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ApplicationDialog</name>
@ -61,14 +61,6 @@ Les textes suivants sont remplacés avec les valeurs appropriées lorsque l&apos
Example : ouvrir un fichier avec kate et position l&apos;affichage sur la bonne ligne:
kate -l(ligne) (fichier)</translation>
</message>
<message>
<source>Application&apos;s name</source>
<translation>Nom de l&apos;application</translation>
</message>
<message>
<source>Application to execute</source>
<translation>Application à exécuter</translation>
</message>
<message>
<source>Browse</source>
<translation>Parcourir</translation>
@ -89,6 +81,14 @@ kate -l(ligne) (fichier)</translation>
<source>You must specify a name and a path for the application!</source>
<translation>Vous devez spécifier un nom et un chemin d&apos;accès pour l&apos;application !</translation>
</message>
<message>
<source>Application&apos;s name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Command to execute:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FileViewDialog</name>
@ -106,10 +106,69 @@ kate -l(ligne) (fichier)</translation>
</message>
</context>
<context>
<name>Fileview</name>
<name>HelpWindow</name>
<message>
<source>Fileview</source>
<translation type="unfinished">Visualisateur de fichier</translation>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Go back</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Go forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Home</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LogView</name>
<message>
<source>Checking Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Text files (*.txt *.log);;All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cppcheck</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not open file for writing: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -126,10 +185,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;View</source>
<translation type="unfinished">&amp;Affichage</translation>
</message>
<message>
<source>&amp;Language</source>
<translation type="unfinished">&amp;Langue</translation>
</message>
<message>
<source>&amp;Help</source>
<translation type="unfinished">&amp;Aide</translation>
@ -210,26 +265,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;Preferences</source>
<translation type="unfinished">&amp;Préférences</translation>
</message>
<message>
<source>Show possible false positives</source>
<translation type="unfinished">Afficher les possibles faux positifs</translation>
</message>
<message>
<source>Show security errors</source>
<translation type="unfinished">Afficher les erreurs de sécurité</translation>
</message>
<message>
<source>Show style errors</source>
<translation type="unfinished">Afficher les erreurs de style</translation>
</message>
<message>
<source>Show possible style errors</source>
<translation type="unfinished">Afficher les erreurs possibles de style</translation>
</message>
<message>
<source>Show common errors</source>
<translation type="unfinished">Afficher les erreurs</translation>
</message>
<message>
<source>&amp;Check all</source>
<translation type="unfinished">Tout &amp;cocher</translation>
@ -246,10 +281,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;Expand all</source>
<translation type="unfinished">Tout &amp;afficher</translation>
</message>
<message>
<source>&amp;Toolbar</source>
<translation type="unfinished">&amp;Barre d&apos;outil</translation>
</message>
<message>
<source>&amp;Contents</source>
<translation type="unfinished">&amp;Contenu</translation>
@ -274,14 +305,6 @@ kate -l(ligne) (fichier)</translation>
<source>Select directory to check</source>
<translation type="unfinished">Sélectionner le répertoire à vérifier</translation>
</message>
<message>
<source>Cannot exit while checking.
Stop the checking before exiting.</source>
<translation type="unfinished">Ne peut pas quitter pendant une vérification.
Arrêter la vérification avant de quitter.</translation>
</message>
<message>
<source>License</source>
<translation type="unfinished">Licence</translation>
@ -290,10 +313,6 @@ Arrêter la vérification avant de quitter.</translation>
<source>Authors</source>
<translation type="unfinished">Auteur</translation>
</message>
<message>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation type="unfinished">Fichier XML (*.xml);;Fichier Texte (*.txt);;Fichier CSV (*.csv)</translation>
</message>
<message>
<source>Save the report file</source>
<translation type="unfinished">Sauvegarder le rapport</translation>
@ -354,6 +373,253 @@ Arrêter la vérification avant de quitter.</translation>
<source>Polish</source>
<translation type="unfinished">Polonais</translation>
</message>
<message>
<source>&amp;Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Japanese</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Project</name>
<message>
<source>Cppcheck</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not read the project file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not write the project file.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProjectFile</name>
<message>
<source>Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Browse...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Defines:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProjectFileDialog</name>
<message>
<source>Project file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select directory to check</source>
<translation type="unfinished">Sélectionner le répertoire à vérifier</translation>
</message>
</context>
<context>
<name>QObject</name>
@ -384,10 +650,6 @@ Arrêter la vérification avant de quitter.</translation>
<source>Line</source>
<translation type="unfinished">Ligne</translation>
</message>
<message>
<source>Message</source>
<translation type="unfinished">Message</translation>
</message>
<message>
<source>Undefined file</source>
<translation type="unfinished">Fichier indéterminé</translation>
@ -420,22 +682,52 @@ Please check the application path and parameters are correct.</source>
Merci de vérifier que le chemin de l&apos;application et que les paramètres sont corrects.</translation>
</message>
<message>
<source>possible error</source>
<translation type="unfinished">erreur possible</translation>
</message>
<message>
<source>style</source>
<translation type="unfinished">erreur de style</translation>
</message>
<message>
<source>possible style</source>
<translation type="unfinished">erreur de style possible</translation>
</message>
<message>
<source>error</source>
<translation type="unfinished">erreur</translation>
</message>
<message>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not find the file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not find file:
%1
Please select the directory where file is located.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>performance</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>information</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultsView</name>
@ -465,6 +757,18 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Failed to save the report.</source>
<translation type="unfinished">Erreur lors de la sauvegarde du rapport.</translation>
</message>
<message>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message</source>
<translation type="unfinished">Message</translation>
</message>
</context>
<context>
<name>Settings</name>
@ -480,10 +784,6 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Number of threads: </source>
<translation type="unfinished">Nombre de processus : </translation>
</message>
<message>
<source>Check all #ifdef configurations</source>
<translation type="unfinished">Vérifier toutes les configurations #ifdef</translation>
</message>
<message>
<source>Show full path of files</source>
<translation type="unfinished">Montrer le chemin complet des fichiers</translation>
@ -524,6 +824,38 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Save full path to files in reports</source>
<translation type="unfinished">Sauvegarder le chemin complet des fichiers dans les rapports</translation>
</message>
<message>
<source>Include paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Force checking all #ifdef configurations</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
@ -535,5 +867,173 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Modify an application</source>
<translation type="unfinished">Modifier une application</translation>
</message>
<message>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>StatsDialog</name>
<message>
<source>Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Defines:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Previous Scan</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Path Selected:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Number of Files Scanned:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Scan Duration:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Errors:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warnings:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stylistic warnings:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Portability warnings:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Performance issues:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Information messages:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1 day</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 days</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1 hour</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 hours</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1 minute</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 minutes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1 second</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>0.%1 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> and </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Project Settings
Project: %1
Paths: %2
Include paths: %3
Defines: %4
Previous Scan
Path selected: %5
Number of files scanned: %6
Scan duration: %7
Statistics
Errors: %8
Warnings: %9
Style warnings: %10
Portability warnings: %11
Performance warnings: %12
Information messages: %13
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;h3&gt;Project Settings&lt;h3&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;Project:&lt;/th&gt;&lt;td&gt;%1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Paths:&lt;/th&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Include paths:&lt;/th&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Defines:&lt;/th&gt;&lt;td&gt;%4&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Previous Scan&lt;/h3&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;Path selected:&lt;/th&gt;&lt;td&gt;%5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Number of files scanned:&lt;/th&gt;&lt;td&gt;%6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Scan duration:&lt;/th&gt;&lt;td&gt;%7&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Statistics&lt;/h3&gt;
&lt;tr&gt;&lt;th&gt;Errors:&lt;/th&gt;&lt;td&gt;%8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Warnings:&lt;/th&gt;&lt;td&gt;%9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Style warnings:&lt;/th&gt;&lt;td&gt;%10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Portability warnings:&lt;/th&gt;&lt;td&gt;%11&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Performance warnings:&lt;/th&gt;&lt;td&gt;%12&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Information messages:&lt;/th&gt;&lt;td&gt;%13&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -211,9 +211,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -546,14 +546,13 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML (*.xml)</translation>
</message>
@ -583,31 +582,42 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML (*.xml);; (*.txt);;CSV形式ファイル (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML (*.xml);; (*.txt);;CSV形式ファイル (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation> (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation>CSV形式ファイル (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -620,39 +630,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation>Cppcheck </translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation> (*.cppcheck);;All files(*.*)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation></translation>
</message>
@ -920,46 +930,47 @@ Please select the directory where file is located.</source>
<translation></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>/</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation></translation>
</message>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>/</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>/</translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation>.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation></translation>
</message>

View File

@ -225,9 +225,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -565,8 +565,9 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML bestanden (*.xml);;Tekst bestanden (*.txt);;CSV bestanden (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML bestanden (*.xml);;Tekst bestanden (*.txt);;CSV bestanden (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -575,7 +576,6 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML bestanden (*.xml)</translation>
</message>
@ -586,8 +586,8 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -603,23 +603,33 @@ kate -l(line) (file)</translation>
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Tekst bestanden (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -633,39 +643,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -929,18 +939,18 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>Geen fouten gevonden.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Fouten werden gevonden, maar volgens de configuratie zijn deze verborgen.
@ -948,28 +958,29 @@ Gebruik het uitzicht menu om te selecteren welke fouten getoond worden.</transla
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>Geen fouten gevonden; geen data om op te slaan.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Kon het rapport niet opslaan.</translation>
</message>

View File

@ -212,9 +212,9 @@ kate -l(line) (file)</oldsource>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation type="unfinished"></translation>
</message>
@ -547,8 +547,8 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -569,7 +569,8 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@ -578,34 +579,43 @@ kate -l(line) (file)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation type="unfinished"></translation>
</message>
@ -617,22 +627,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -641,13 +651,13 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
@ -906,46 +916,47 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation type="unfinished"></translation>
</message>

View File

@ -215,9 +215,9 @@ kate -l(line) (file)</oldsource>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -555,7 +555,8 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@ -565,7 +566,6 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation type="unfinished"></translation>
</message>
@ -576,8 +576,8 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -593,23 +593,33 @@ kate -l(line) (file)</oldsource>
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Текстовые файлы (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -625,39 +635,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -919,46 +929,47 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>Ошибок не найдено.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation type="unfinished"></translation>
</message>

View File

@ -225,9 +225,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -566,8 +566,9 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML filer (*.xml);;Text filer (*.txt);;CSV filer (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML filer (*.xml);;Text filer (*.txt);;CSV filer (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -576,7 +577,6 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML filer (*.xml)</translation>
</message>
@ -587,8 +587,8 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation>Projekt.</translation>
</message>
@ -606,23 +606,33 @@ Do you want to stop the checking and exit Cppcheck?.</source>
Vill du stoppa analysen och avsluta Cppcheck?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Text filer (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation>CSV filer (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -638,39 +648,39 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation>Cppcheck Hjälp</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation>Misslyckades att öppna hjälpfilen (hittades ej)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation>Misslykades att öppna hjälpfilen</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation>Projektfiler (*.cppcheck);;Alla filer(*.*)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation>Välj projektfil</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation>Välj Projektfil</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation>Inget projekt laddat</translation>
</message>
@ -936,18 +946,18 @@ Välj mappen där filen finns.</translation>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>Inga fel hittades.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Fel hittades, men de visas ej.
@ -955,28 +965,29 @@ För att ställa in vilka fel som skall visas använd visa menyn.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation>Misslyckades att läsa rapporten.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation>Sammanfattning</translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation>Meddelande</translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>Inga fel hittades, ingenting att spara.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Misslyckades med att spara rapporten.</translation>
</message>

View File

@ -225,9 +225,9 @@ kate -l(line) (file)</translation>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<location filename="mainwindow.cpp" line="648"/>
<location filename="mainwindow.cpp" line="666"/>
<location filename="mainwindow.cpp" line="817"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -565,8 +565,9 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="584"/>
@ -575,7 +576,6 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation>
</message>
@ -586,8 +586,8 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<location filename="mainwindow.cpp" line="748"/>
<location filename="mainwindow.cpp" line="794"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
@ -603,23 +603,33 @@ kate -l(line) (file)</translation>
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="598"/>
<source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="604"/>
<location filename="mainwindow.cpp" line="610"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="644"/>
<location filename="mainwindow.cpp" line="650"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="661"/>
<location filename="mainwindow.cpp" line="667"/>
<source>Failed to change the language:
%1
@ -633,39 +643,39 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="718"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="734"/>
<location filename="mainwindow.cpp" line="740"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="779"/>
<location filename="mainwindow.cpp" line="785"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="812"/>
<location filename="mainwindow.cpp" line="818"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
@ -929,18 +939,18 @@ Please select the directory where file is located.</source>
<context>
<name>ResultsView</name>
<message>
<location filename="resultsview.cpp" line="190"/>
<location filename="resultsview.cpp" line="202"/>
<location filename="resultsview.cpp" line="195"/>
<location filename="resultsview.cpp" line="207"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="resultsview.cpp" line="191"/>
<location filename="resultsview.cpp" line="196"/>
<source>No errors found.</source>
<translation>No errors found.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="199"/>
<location filename="resultsview.cpp" line="204"/>
<source>Errors were found, but they are configured to be hidden.
To toggle what kind of errors are shown, open view menu.</source>
<translation>Errors were found, but they are configured to be hidden.
@ -948,28 +958,29 @@ To toggle what kind of errors are shown, open view menu.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="251"/>
<location filename="resultsview.cpp" line="261"/>
<location filename="resultsview.cpp" line="271"/>
<location filename="resultsview.cpp" line="281"/>
<source>Failed to read the report.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="302"/>
<location filename="resultsview.cpp" line="321"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="303"/>
<location filename="resultsview.cpp" line="322"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="resultsview.cpp" line="117"/>
<location filename="resultsview.cpp" line="119"/>
<source>No errors found, nothing to save.</source>
<translation>No errors found, nothing to save.</translation>
</message>
<message>
<location filename="resultsview.cpp" line="144"/>
<location filename="resultsview.cpp" line="154"/>
<location filename="resultsview.cpp" line="149"/>
<location filename="resultsview.cpp" line="159"/>
<source>Failed to save the report.</source>
<translation>Failed to save the report.</translation>
</message>

View File

@ -35,6 +35,7 @@ FORMS = main.ui \
stats.ui
TRANSLATIONS = cppcheck_fi.ts \
cppcheck_fr.ts \
cppcheck_nl.ts \
cppcheck_en.ts \
cppcheck_se.ts \
@ -69,6 +70,8 @@ HEADERS += mainwindow.h \
report.h \
txtreport.h \
xmlreport.h \
xmlreportv1.h \
xmlreportv2.h \
translationhandler.h \
csvreport.h \
logview.h \
@ -96,6 +99,8 @@ SOURCES += main.cpp \
report.cpp \
txtreport.cpp \
xmlreport.cpp \
xmlreportv1.cpp \
xmlreportv2.cpp \
translationhandler.cpp \
csvreport.cpp \
logview.cpp \

View File

@ -579,7 +579,7 @@ void MainWindow::ShowAuthors()
void MainWindow::Save()
{
QString selectedFilter;
QString filter(tr("XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)"));
QString filter(tr("XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)"));
QString selectedFile = QFileDialog::getSaveFileName(this,
tr("Save the report file"),
QString(),
@ -589,12 +589,18 @@ void MainWindow::Save()
if (!selectedFile.isEmpty())
{
Report::Type type = Report::TXT;
if (selectedFilter == tr("XML files (*.xml)"))
if (selectedFilter == tr("XML files version 1 (*.xml)"))
{
type = Report::XML;
if (!selectedFile.endsWith(".xml", Qt::CaseInsensitive))
selectedFile += ".xml";
}
else if (selectedFilter == tr("XML files version 2 (*.xml)"))
{
type = Report::XMLV2;
if (!selectedFile.endsWith(".xml", Qt::CaseInsensitive))
selectedFile += ".xml";
}
else if (selectedFilter == tr("Text files (*.txt)"))
{
type = Report::TXT;

View File

@ -39,6 +39,7 @@ public:
{
TXT,
XML,
XMLV2,
CSV,
};

View File

@ -31,6 +31,8 @@
#include "report.h"
#include "txtreport.h"
#include "xmlreport.h"
#include "xmlreportv1.h"
#include "xmlreportv2.h"
#include "csvreport.h"
#include "applicationlist.h"
#include "checkstatistics.h"
@ -130,7 +132,10 @@ void ResultsView::Save(const QString &filename, Report::Type type)
report = new TxtReport(filename, this);
break;
case Report::XML:
report = new XmlReport(filename, this);
report = new XmlReportV1(filename, this);
break;
case Report::XMLV2:
report = new XmlReportV2(filename, this);
break;
}
@ -239,8 +244,23 @@ void ResultsView::DisableProgressbar()
void ResultsView::ReadErrorsXml(const QString &filename)
{
XmlReport *report = new XmlReport(filename, this);
QList<ErrorLine> errors;
const int version = XmlReport::determineVersion(filename);
if (version == 0)
{
QMessageBox msgBox;
msgBox.setText(tr("Failed to read the report."));
msgBox.setIcon(QMessageBox::Critical);
msgBox.exec();
return;
}
XmlReport *report = NULL;
if (version == 1)
report = new XmlReportV1(filename, this);
else if (version == 2)
report = new XmlReportV2(filename, this);
QList<ErrorItem> errors;
if (report)
{
if (report->Open())
@ -263,10 +283,9 @@ void ResultsView::ReadErrorsXml(const QString &filename)
msgBox.exec();
}
ErrorLine line;
foreach(line, errors)
ErrorItem item;
foreach(item, errors)
{
ErrorItem item(line);
mUI.mTree->AddErrorItem(item);
}
mUI.mTree->SetCheckDirectory("");

View File

@ -18,122 +18,70 @@
#include <QObject>
#include <QString>
#include <QList>
#include <QDir>
#include <QFile>
#include <QXmlStreamWriter>
#include <QDebug>
#include <QXmlStreamReader>
#include "report.h"
#include "erroritem.h"
#include "xmlreport.h"
static const char ResultElementName[] = "results";
static const char ErrorElementName[] = "error";
static const char FilenameAttribute[] = "file";
static const char LineAttribute[] = "line";
static const char IdAttribute[] = "id";
static const char SeverityAttribute[] = "severity";
static const char MsgAttribute[] = "msg";
static const char VersionAttribute[] = "version";
XmlReport::XmlReport(const QString &filename, QObject * parent) :
Report(filename, parent),
mXmlReader(NULL),
mXmlWriter(NULL)
Report(filename, parent)
{
}
XmlReport::~XmlReport()
QString XmlReport::quoteMessage(const QString &message)
{
delete mXmlReader;
delete mXmlWriter;
Close();
QString quotedMessage(message);
quotedMessage.replace("&", "&amp;");
quotedMessage.replace("\"", "&quot;");
quotedMessage.replace("'", "&#039;");
quotedMessage.replace("<", "&lt;");
quotedMessage.replace(">", "&gt;");
return quotedMessage;
}
bool XmlReport::Create()
QString XmlReport::unquoteMessage(const QString &message)
{
bool success = false;
if (Report::Create())
QString quotedMessage(message);
quotedMessage.replace("&amp;", "&");
quotedMessage.replace("&quot;", "\"");
quotedMessage.replace("&#039;", "'");
quotedMessage.replace("&lt;", "<");
quotedMessage.replace("&gt;", ">");
return quotedMessage;
}
int XmlReport::determineVersion(const QString &filename)
{
QFile file;
file.setFileName(filename);
bool succeed = file.open(QIODevice::ReadOnly | QIODevice::Text);
if (!succeed)
return 0;
QXmlStreamReader reader(&file);
while (!reader.atEnd())
{
mXmlWriter = new QXmlStreamWriter(Report::GetFile());
success = true;
}
return success;
}
bool XmlReport::Open()
{
bool success = false;
if (Report::Open())
{
mXmlReader = new QXmlStreamReader(Report::GetFile());
success = true;
}
return success;
}
void XmlReport::WriteHeader()
{
mXmlWriter->setAutoFormatting(true);
mXmlWriter->writeStartDocument();
mXmlWriter->writeStartElement(ResultElementName);
}
void XmlReport::WriteFooter()
{
mXmlWriter->writeEndElement();
mXmlWriter->writeEndDocument();
}
void XmlReport::WriteError(const ErrorItem &error)
{
/*
Error example from the core program in xml
<error file="gui/test.cpp" line="14" id="mismatchAllocDealloc" severity="error" msg="Mismatching allocation and deallocation: k"/>
The callstack seems to be ignored here as well, instead last item of the stack is used
*/
mXmlWriter->writeStartElement(ErrorElementName);
const QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]);
mXmlWriter->writeAttribute(FilenameAttribute, file);
const QString line = QString::number(error.lines[error.lines.size() - 1]);
mXmlWriter->writeAttribute(LineAttribute, line);
mXmlWriter->writeAttribute(IdAttribute, error.id);
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
mXmlWriter->writeAttribute(MsgAttribute, error.message);
mXmlWriter->writeEndElement();
}
QList<ErrorLine> XmlReport::Read()
{
QList<ErrorLine> errors;
bool insideResults = false;
if (!mXmlReader)
{
qDebug() << "You must Open() the file before reading it!";
return errors;
}
while (!mXmlReader->atEnd())
{
switch (mXmlReader->readNext())
switch (reader.readNext())
{
case QXmlStreamReader::StartElement:
if (mXmlReader->name() == ResultElementName)
insideResults = true;
// Read error element from inside result element
if (insideResults && mXmlReader->name() == ErrorElementName)
if (reader.name() == ResultElementName)
{
ErrorLine line = ReadError(mXmlReader);
errors.append(line);
QXmlStreamAttributes attribs = reader.attributes();
if (attribs.hasAttribute(QString(VersionAttribute)))
{
int ver = attribs.value("", VersionAttribute).toString().toInt();
return ver;
}
else
return 1;
}
break;
case QXmlStreamReader::EndElement:
if (mXmlReader->name() == ResultElementName)
insideResults = false;
break;
// Not handled
case QXmlStreamReader::EndElement:
case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument:
@ -146,30 +94,5 @@ QList<ErrorLine> XmlReport::Read()
break;
}
}
return errors;
}
ErrorLine XmlReport::ReadError(QXmlStreamReader *reader)
{
ErrorLine line;
if (reader->name().toString() == ErrorElementName)
{
QXmlStreamAttributes attribs = reader->attributes();
line.file = attribs.value("", FilenameAttribute).toString();
line.line = attribs.value("", LineAttribute).toString().toUInt();
line.id = attribs.value("", IdAttribute).toString();
line.severity = attribs.value("", SeverityAttribute).toString();
// NOTE: This dublicates the message to Summary-field. But since
// old XML format doesn't have separate summary and verbose messages
// we must add same message to both data so it shows up in GUI.
// Check if there is full stop and cut the summary to it.
QString summary = attribs.value("", MsgAttribute).toString();
const int ind = summary.indexOf('.');
if (ind != -1)
summary = summary.left(ind + 1);
line.summary = summary;
line.message = attribs.value("", MsgAttribute).toString();
}
return line;
return 0;
}

View File

@ -19,78 +19,51 @@
#ifndef XML_REPORT_H
#define XML_REPORT_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QList>
#include "report.h"
#include "erroritem.h"
class QObject;
/// @addtogroup GUI
/// @{
/**
* @brief XML file report.
* This report outputs XML-formatted report. The XML format must match command
* line version's XML output.
* @brief Base class for XML report classes.
*/
class XmlReport : public Report
{
public:
XmlReport(const QString &filename, QObject * parent = 0);
virtual ~XmlReport();
/**
* @brief Create the report (file).
* @return true if succeeded, false if file could not be created.
*/
virtual bool Create();
* @brief Read contents of the report file.
*/
virtual QList<ErrorItem> Read() = 0;
/**
* @brief Open existing report file.
*/
bool Open();
* @brief Quote the message.
* @param message Message to quote.
* @return quoted message.
*/
static QString quoteMessage(const QString &message);
/**
* @brief Write report header.
*/
virtual void WriteHeader();
* @brief Unquote the message.
* @param message Message to quote.
* @return quoted message.
*/
static QString unquoteMessage(const QString &message);
/**
* @brief Write report footer.
*/
virtual void WriteFooter();
/**
* @brief Write error to report.
* @param error Error data.
*/
virtual void WriteError(const ErrorItem &error);
/**
* @brief Read contents of the report file.
*/
QList<ErrorLine> Read();
protected:
/**
* @brief Read and parse error item from XML stream.
* @param reader XML stream reader to use.
*/
ErrorLine ReadError(QXmlStreamReader *reader);
private:
/**
* @brief XML stream reader for reading the report in XML format.
*/
QXmlStreamReader *mXmlReader;
/**
* @brief XML stream writer for writing the report in XML format.
*/
QXmlStreamWriter *mXmlWriter;
* @brief Get the XML report format version from the file.
* @param filename Filename of the report file.
* @return XML report format version or 0 if error happened.
*/
static int determineVersion(const QString &filename);
};
/// @}
#endif // XML_REPORT_H

183
gui/xmlreportv1.cpp Normal file
View File

@ -0,0 +1,183 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QObject>
#include <QString>
#include <QList>
#include <QDir>
#include <QFile>
#include <QXmlStreamWriter>
#include <QDebug>
#include "report.h"
#include "erroritem.h"
#include "xmlreport.h"
#include "xmlreportv1.h"
static const char ResultElementName[] = "results";
static const char ErrorElementName[] = "error";
static const char FilenameAttribute[] = "file";
static const char LineAttribute[] = "line";
static const char IdAttribute[] = "id";
static const char SeverityAttribute[] = "severity";
static const char MsgAttribute[] = "msg";
XmlReportV1::XmlReportV1(const QString &filename, QObject * parent) :
XmlReport(filename, parent),
mXmlReader(NULL),
mXmlWriter(NULL)
{
}
XmlReportV1::~XmlReportV1()
{
delete mXmlReader;
delete mXmlWriter;
Close();
}
bool XmlReportV1::Create()
{
bool success = false;
if (Report::Create())
{
mXmlWriter = new QXmlStreamWriter(Report::GetFile());
success = true;
}
return success;
}
bool XmlReportV1::Open()
{
bool success = false;
if (Report::Open())
{
mXmlReader = new QXmlStreamReader(Report::GetFile());
success = true;
}
return success;
}
void XmlReportV1::WriteHeader()
{
mXmlWriter->setAutoFormatting(true);
mXmlWriter->writeStartDocument();
mXmlWriter->writeStartElement(ResultElementName);
}
void XmlReportV1::WriteFooter()
{
mXmlWriter->writeEndElement();
mXmlWriter->writeEndDocument();
}
void XmlReportV1::WriteError(const ErrorItem &error)
{
/*
Error example from the core program in xml
<error file="gui/test.cpp" line="14" id="mismatchAllocDealloc" severity="error" msg="Mismatching allocation and deallocation: k"/>
The callstack seems to be ignored here as well, instead last item of the stack is used
*/
mXmlWriter->writeStartElement(ErrorElementName);
QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]);
file = XmlReport::quoteMessage(file);
mXmlWriter->writeAttribute(FilenameAttribute, file);
const QString line = QString::number(error.lines[error.lines.size() - 1]);
mXmlWriter->writeAttribute(LineAttribute, line);
mXmlWriter->writeAttribute(IdAttribute, error.id);
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
const QString message = XmlReport::quoteMessage(error.message);
mXmlWriter->writeAttribute(MsgAttribute, message);
mXmlWriter->writeEndElement();
}
QList<ErrorItem> XmlReportV1::Read()
{
QList<ErrorItem> errors;
bool insideResults = false;
if (!mXmlReader)
{
qDebug() << "You must Open() the file before reading it!";
return errors;
}
while (!mXmlReader->atEnd())
{
switch (mXmlReader->readNext())
{
case QXmlStreamReader::StartElement:
if (mXmlReader->name() == ResultElementName)
insideResults = true;
// Read error element from inside result element
if (insideResults && mXmlReader->name() == ErrorElementName)
{
ErrorItem item = ReadError(mXmlReader);
errors.append(item);
}
break;
case QXmlStreamReader::EndElement:
if (mXmlReader->name() == ResultElementName)
insideResults = false;
break;
// Not handled
case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument:
case QXmlStreamReader::EndDocument:
case QXmlStreamReader::Characters:
case QXmlStreamReader::Comment:
case QXmlStreamReader::DTD:
case QXmlStreamReader::EntityReference:
case QXmlStreamReader::ProcessingInstruction:
break;
}
}
return errors;
}
ErrorItem XmlReportV1::ReadError(QXmlStreamReader *reader)
{
ErrorItem item;
if (reader->name().toString() == ErrorElementName)
{
QXmlStreamAttributes attribs = reader->attributes();
QString file = attribs.value("", FilenameAttribute).toString();
file = XmlReport::unquoteMessage(file);
item.file = file;
item.files.push_back(file);
const int line = attribs.value("", LineAttribute).toString().toUInt();
item.lines.push_back(line);
item.id = attribs.value("", IdAttribute).toString();
item.severity = attribs.value("", SeverityAttribute).toString();
// NOTE: This dublicates the message to Summary-field. But since
// old XML format doesn't have separate summary and verbose messages
// we must add same message to both data so it shows up in GUI.
// Check if there is full stop and cut the summary to it.
QString summary = attribs.value("", MsgAttribute).toString();
const int ind = summary.indexOf('.');
if (ind != -1)
summary = summary.left(ind + 1);
item.summary = XmlReport::unquoteMessage(summary);
QString message = attribs.value("", MsgAttribute).toString();
item.message = XmlReport::unquoteMessage(message);
}
return item;
}

96
gui/xmlreportv1.h Normal file
View File

@ -0,0 +1,96 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef XML_REPORTV1_H
#define XML_REPORTV1_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include "xmlreport.h"
/// @addtogroup GUI
/// @{
/**
* @brief XML file report version 1.
* This report outputs XML-formatted report, version 1. The XML format must match command
* line version's XML output.
*/
class XmlReportV1 : public XmlReport
{
public:
XmlReportV1(const QString &filename, QObject * parent = 0);
virtual ~XmlReportV1();
/**
* @brief Create the report (file).
* @return true if succeeded, false if file could not be created.
*/
virtual bool Create();
/**
* @brief Open existing report file.
*/
bool Open();
/**
* @brief Write report header.
*/
virtual void WriteHeader();
/**
* @brief Write report footer.
*/
virtual void WriteFooter();
/**
* @brief Write error to report.
* @param error Error data.
*/
virtual void WriteError(const ErrorItem &error);
/**
* @brief Read contents of the report file.
*/
virtual QList<ErrorItem> Read();
protected:
/**
* @brief Read and parse error item from XML stream.
* @param reader XML stream reader to use.
*/
ErrorItem ReadError(QXmlStreamReader *reader);
private:
/**
* @brief XML stream reader for reading the report in XML format.
*/
QXmlStreamReader *mXmlReader;
/**
* @brief XML stream writer for writing the report in XML format.
*/
QXmlStreamWriter *mXmlWriter;
};
/// @}
#endif // XML_REPORTV1_H

246
gui/xmlreportv2.cpp Normal file
View File

@ -0,0 +1,246 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QObject>
#include <QString>
#include <QList>
#include <QDir>
#include <QFile>
#include <QXmlStreamWriter>
#include <QDebug>
#include "report.h"
#include "erroritem.h"
#include "xmlreport.h"
#include "xmlreportv2.h"
#include "cppcheck.h"
static const char ResultElementName[] = "results";
static const char CppcheckElementName[] = "cppcheck";
static const char ErrorElementName[] = "error";
static const char ErrorsElementName[] = "errors";
static const char LocationElementName[] = "location";
static const char FilenameAttribute[] = "file";
static const char LineAttribute[] = "line";
static const char IdAttribute[] = "id";
static const char SeverityAttribute[] = "severity";
static const char MsgAttribute[] = "msg";
static const char VersionAttribute[] = "version";
static const char VerboseAttribute[] = "verbose";
XmlReportV2::XmlReportV2(const QString &filename, QObject * parent) :
XmlReport(filename, parent),
mXmlReader(NULL),
mXmlWriter(NULL)
{
}
XmlReportV2::~XmlReportV2()
{
delete mXmlReader;
delete mXmlWriter;
Close();
}
bool XmlReportV2::Create()
{
bool success = false;
if (Report::Create())
{
mXmlWriter = new QXmlStreamWriter(Report::GetFile());
success = true;
}
return success;
}
bool XmlReportV2::Open()
{
bool success = false;
if (Report::Open())
{
mXmlReader = new QXmlStreamReader(Report::GetFile());
success = true;
}
return success;
}
void XmlReportV2::WriteHeader()
{
mXmlWriter->setAutoFormatting(true);
mXmlWriter->writeStartDocument();
mXmlWriter->writeStartElement(ResultElementName);
mXmlWriter->writeAttribute(VersionAttribute, QString::number(2));
mXmlWriter->writeStartElement(CppcheckElementName);
mXmlWriter->writeAttribute(VersionAttribute, QString(CppCheck::version()));
mXmlWriter->writeEndElement();
mXmlWriter->writeStartElement(ErrorsElementName);
}
void XmlReportV2::WriteFooter()
{
mXmlWriter->writeEndElement(); // errors
mXmlWriter->writeEndElement(); // results
mXmlWriter->writeEndDocument();
}
void XmlReportV2::WriteError(const ErrorItem &error)
{
/*
Error example from the core program in xml
<error id="mismatchAllocDealloc" severity="error" msg="Mismatching allocation and deallocation: k"
verbose="Mismatching allocation and deallocation: k">
<location file="..\..\test\test.cxx" line="16"/>
<location file="..\..\test\test.cxx" line="32"/>
</error>
*/
mXmlWriter->writeStartElement(ErrorElementName);
mXmlWriter->writeAttribute(IdAttribute, error.id);
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
const QString summary = XmlReport::quoteMessage(error.summary);
mXmlWriter->writeAttribute(MsgAttribute, summary);
const QString message = XmlReport::quoteMessage(error.message);
mXmlWriter->writeAttribute(VerboseAttribute, message);
for (int i = 0; i < error.files.count(); i++)
{
mXmlWriter->writeStartElement(LocationElementName);
QString file = QDir::toNativeSeparators(error.files[i]);
file = XmlReport::quoteMessage(file);
mXmlWriter->writeAttribute(FilenameAttribute, file);
const QString line = QString::number(error.lines[i]);
mXmlWriter->writeAttribute(LineAttribute, line);
mXmlWriter->writeEndElement();
}
mXmlWriter->writeEndElement();
}
QList<ErrorItem> XmlReportV2::Read()
{
QList<ErrorItem> errors;
bool insideResults = false;
if (!mXmlReader)
{
qDebug() << "You must Open() the file before reading it!";
return errors;
}
while (!mXmlReader->atEnd())
{
switch (mXmlReader->readNext())
{
case QXmlStreamReader::StartElement:
if (mXmlReader->name() == ResultElementName)
insideResults = true;
// Read error element from inside result element
if (insideResults && mXmlReader->name() == ErrorElementName)
{
ErrorItem item = ReadError(mXmlReader);
errors.append(item);
}
break;
case QXmlStreamReader::EndElement:
if (mXmlReader->name() == ResultElementName)
insideResults = false;
break;
// Not handled
case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument:
case QXmlStreamReader::EndDocument:
case QXmlStreamReader::Characters:
case QXmlStreamReader::Comment:
case QXmlStreamReader::DTD:
case QXmlStreamReader::EntityReference:
case QXmlStreamReader::ProcessingInstruction:
break;
}
}
return errors;
}
ErrorItem XmlReportV2::ReadError(QXmlStreamReader *reader)
{
/*
Error example from the core program in xml
<error id="mismatchAllocDealloc" severity="error" msg="Mismatching allocation and deallocation: k"
verbose="Mismatching allocation and deallocation: k">
<location file="..\..\test\test.cxx" line="16"/>
<location file="..\..\test\test.cxx" line="32"/>
</error>
*/
ErrorItem item;
// Read error element from inside errors element
if (mXmlReader->name() == ErrorElementName)
{
QXmlStreamAttributes attribs = reader->attributes();
item.id = attribs.value("", IdAttribute).toString();
item.severity = attribs.value("", SeverityAttribute).toString();
const QString summary = attribs.value("", MsgAttribute).toString();
item.summary = XmlReport::unquoteMessage(summary);
const QString message = attribs.value("", VerboseAttribute).toString();
item.message = XmlReport::unquoteMessage(message);
}
bool errorRead = false;
while (!errorRead && !mXmlReader->atEnd())
{
switch (mXmlReader->readNext())
{
case QXmlStreamReader::StartElement:
// Read location element from inside error element
if (mXmlReader->name() == LocationElementName)
{
QXmlStreamAttributes attribs = mXmlReader->attributes();
QString file = attribs.value("", FilenameAttribute).toString();
file = XmlReport::unquoteMessage(file);
if (item.file.isEmpty())
item.file = file;
item.files.push_back(file);
const int line = attribs.value("", LineAttribute).toString().toUInt();
item.lines.push_back(line);
}
break;
case QXmlStreamReader::EndElement:
if (mXmlReader->name() == ErrorElementName)
errorRead = true;
break;
// Not handled
case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument:
case QXmlStreamReader::EndDocument:
case QXmlStreamReader::Characters:
case QXmlStreamReader::Comment:
case QXmlStreamReader::DTD:
case QXmlStreamReader::EntityReference:
case QXmlStreamReader::ProcessingInstruction:
break;
}
}
return item;
}

96
gui/xmlreportv2.h Normal file
View File

@ -0,0 +1,96 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef XML_REPORTV2_H
#define XML_REPORTV2_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include "report.h"
/// @addtogroup GUI
/// @{
/**
* @brief XML file report version 2.
* This report outputs XML-formatted report. The XML format must match command
* line version's XML output.
*/
class XmlReportV2 : public XmlReport
{
public:
XmlReportV2(const QString &filename, QObject * parent = 0);
virtual ~XmlReportV2();
/**
* @brief Create the report (file).
* @return true if succeeded, false if file could not be created.
*/
virtual bool Create();
/**
* @brief Open existing report file.
*/
bool Open();
/**
* @brief Write report header.
*/
virtual void WriteHeader();
/**
* @brief Write report footer.
*/
virtual void WriteFooter();
/**
* @brief Write error to report.
* @param error Error data.
*/
virtual void WriteError(const ErrorItem &error);
/**
* @brief Read contents of the report file.
*/
virtual QList<ErrorItem> Read();
protected:
/**
* @brief Read and parse error item from XML stream.
* @param reader XML stream reader to use.
*/
ErrorItem ReadError(QXmlStreamReader *reader);
private:
/**
* @brief XML stream reader for reading the report in XML format.
*/
QXmlStreamReader *mXmlReader;
/**
* @brief XML stream writer for writing the report in XML format.
*/
QXmlStreamWriter *mXmlWriter;
};
/// @}
#endif // XML_REPORTV2_H

View File

@ -3808,6 +3808,8 @@ void Tokenizer::simplifySizeof()
{
if (Token::Match(tok, "class|struct %var%"))
{
// we assume that the size of structs and classes are always
// 100 bytes.
_typeSize[tok->strAt(1)] = 100;
}
}

View File

@ -102,28 +102,30 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<arg choice="opt"><option>--append=[file]</option></arg>
<arg choice="opt"><option>-D[id]</option></arg>
<arg choice="opt"><option>--enable=[id]</option></arg>
<arg choice="opt"><option>--error-exitcode=[n]</option></arg>
<arg choice="opt"><option>--append=&lt;file&gt;</option></arg>
<arg choice="opt"><option>-D&lt;id&gt;</option></arg>
<arg choice="opt"><option>--enable=&lt;id&gt;</option></arg>
<arg choice="opt"><option>--error-exitcode=&lt;n&gt;</option></arg>
<arg choice="opt"><option>--errorlist</option></arg>
<arg choice="opt"><option>--exitcode-suppressions=[file]</option></arg>
<arg choice="opt"><option>--file-list=file</option></arg>
<arg choice="opt"><option>--exitcode-suppressions=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--file-list=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--force</option></arg>
<arg choice="opt"><option>--help</option></arg>
<arg choice="opt"><option>-I[dir]</option></arg>
<arg choice="opt"><option>-i[dir]</option></arg>
<arg choice="opt"><option>-I&lt;dir&gt;</option></arg>
<arg choice="opt"><option>-i&lt;dir&gt;</option></arg>
<arg choice="opt"><option>--inline-suppr</option></arg>
<arg choice="opt"><option>-j[jobs]</option></arg>
<arg choice="opt"><option>-j&lt;jobs&gt;</option></arg>
<arg choice="opt"><option>--quiet</option></arg>
<arg choice="opt"><option>--report-progress</option></arg>
<arg choice="opt"><option>--rule=&lt;rule&gt;</option></arg>
<arg choice="opt"><option>--rule-file=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--style</option></arg>
<arg choice="opt"><option>--suppressions-list=[file]</option></arg>
<arg choice="opt"><option>--template '[text]'</option></arg>
<arg choice="opt"><option>--suppressions-list=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--template '&lt;text&gt;'</option></arg>
<arg choice="opt"><option>--verbose</option></arg>
<arg choice="opt"><option>--version</option></arg>
<arg choice="opt"><option>--xml</option></arg>
<arg choice="opt"><option>--xml-version=[version]</option></arg>
<arg choice="opt"><option>--xml-version=&lt;version&gt;]</option></arg>
<arg choice="opt"><option>file or path</option></arg>
<arg choice="plain"><option>...</option></arg>
</cmdsynopsis>
@ -146,20 +148,20 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
variablelist.term.break.after parameters to
control the term elements. -->
<varlistentry>
<term><option>--append=[file]</option></term>
<term><option>--append=&lt;file&gt;</option></term>
<listitem>
<para>This allows you to provide information about functions by providing an implementation for these.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-D[id]</option></term>
<term><option>-D&lt;id&gt;</option></term>
<listitem>
<para>By default Cppcheck checks all configurations. Use -D to limit the checking. When -D is used the checking is limited to the given configuration.
Example: -DDEBUG=1 -D__cplusplus</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--enable=[id]</option></term>
<term><option>--enable=&lt;id&gt;</option></term>
<listitem>
<para>Enable additional checks. The available ids are:
<glosslist>
@ -199,9 +201,9 @@ Example: -DDEBUG=1 -D__cplusplus</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--error-exitcode=[n]</option></term>
<term><option>--error-exitcode=&lt;n&gt;</option></term>
<listitem>
<para>If errors are found, integer [n] is returned instead of default 0.
<para>If errors are found, integer &lt;n&gt; is returned instead of default 0.
EXIT_FAILURE is returned if arguments are not valid or if no input files are
provided. Note that your operating system can modify this value, e.g.
256 can become 0.</para>
@ -214,13 +216,13 @@ Example: -DDEBUG=1 -D__cplusplus</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--exitcode-suppressions=[file]</option></term>
<term><option>--exitcode-suppressions=&lt;file&gt;</option></term>
<listitem>
<para>Used when certain messages should be displayed but should not cause a non-zero exitcode.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--file-list=[file]</option></term>
<term><option>--file-list=&lt;file&gt;</option></term>
<listitem>
<para>Specify the files to check in a text file. One filename per line.</para>
</listitem>
@ -241,7 +243,7 @@ default.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-I [dir]</option></term>
<term><option>-I &lt;dir&gt;</option></term>
<listitem>
<para>Give include path. Give several -I parameters to give several paths. First given path is checked first. If paths are relative to source
files, this is not needed.</para>
@ -249,7 +251,7 @@ files, this is not needed.</para>
</varlistentry>
<varlistentry>
<term><option>-i [dir]</option></term>
<term><option>-i &lt;dir&gt;</option></term>
<listitem>
<para>Give path to ignore. Give several -i parameters to ignore several paths. Give directory name or filename with path as parameter.
Directory name is matched to all parts of the path.</para>
@ -264,9 +266,9 @@ Directory name is matched to all parts of the path.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-j [jobs]</option></term>
<term><option>-j &lt;jobs&gt;</option></term>
<listitem>
<para>Start [jobs] threads to do the checking work.</para>
<para>Start &lt;jobs&gt; threads to do the checking work.</para>
</listitem>
</varlistentry>
<varlistentry>
@ -282,6 +284,18 @@ Directory name is matched to all parts of the path.</para>
<para>Report progress when checking a file.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--rule=&lt;rule&gt;</option></term>
<listitem>
<para>Match regular expression to create your own checks. E.g. rule &quot;/ 0&quot; can be used to check division by zero.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--rule-file=&lt;file&gt;</option></term>
<listitem>
<para>Use given rule XML file. See https://sourceforge.net/projects/cppcheck/files/Articles/ for more info about the syntax.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s</option></term>
<term><option>--style</option></term>
@ -290,14 +304,14 @@ Directory name is matched to all parts of the path.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--suppressions-list=[file]</option></term>
<term><option>--suppressions-list=&lt;file&gt;</option></term>
<listitem>
<para>Suppress warnings listed in the file. Filename and line are optional. The format of the single line in file is: [error id]:[filename]:[line].
You can use --template or --xml to see the error id.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--template '[text]'</option></term>
<term><option>--template '&lt;text&gt;'</option></term>
<listitem>
<para>Format the error messages. E.g. '{file}:{line},{severity},{id},{message}' or '{file}({line}):({severity}) {message}'. Pre-defined templates: gcc, vs</para>
</listitem>
@ -322,7 +336,7 @@ Directory name is matched to all parts of the path.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--xml-version=[version]</option></term>
<term><option>--xml-version=&lt;version&gt;</option></term>
<listitem>
<para>Select the XML file version. Currently versions 1 and 2 are available. The default version is 1.</para>
</listitem>

35
scripts/tabs.pl Executable file
View File

@ -0,0 +1,35 @@
#!/usr/bin/perl
# warn if there are tabs in string constants, it can have surprising effects.
# example usage:
# scripts/tabs.pl lib/checkstl.cpp
sub checkfile
{
my $filename = $_[0];
# parse file
open(FILE, $filename);
my @lines = <FILE>;
close(FILE);
# check comments..
my $linenr = 0;
foreach $line (@lines)
{
$linenr = $linenr + 1;
# is there a tab in a string
if ($line =~ /".*\t.*"/)
{
print "[$filename:$linenr] tab inside string constant\n";
}
}
}
foreach $filename (@ARGV)
{
checkfile($filename)
}

View File

@ -488,11 +488,11 @@ private:
" UString& operator=( const UString& s );\n"
"};\n"
"UString& UString::assign( const char* c_str ) {\n"
" std::string tmp( c_str );\n"
" return assign( tmp );\n"
" std::string tmp( c_str );\n"
" return assign( tmp );\n"
"}\n"
"UString& UString::operator=( const UString& s ) {\n"
" return assign( s );\n"
" return assign( s );\n"
"}\n");
}
@ -2723,7 +2723,7 @@ private:
" A()\n"
" {\n"
" init();\n"
" }\n"
" }\n"
"\n"
" void init() { init(0); }\n"
"\n"
@ -5452,12 +5452,12 @@ private:
checkConst("template<template<class> class E,class D> class C : E<D>\n"
"{\n"
"public:\n"
" int f();\n"
" int f();\n"
"};\n"
"class E : C<D,int>\n"
"{\n"
"public:\n"
" int f() { return C< ::D,int>::f(); }\n"
" int f() { return C< ::D,int>::f(); }\n"
"};\n");
ASSERT_EQUALS("", errout.str());

View File

@ -66,20 +66,20 @@ private:
ASSERT_EQUALS("3000" , MathLib::multiply("1.0E3", "3"));
ASSERT_EQUALS("-3000" , MathLib::multiply("-1.0E3", "3"));
ASSERT_EQUALS("-3000" , MathLib::multiply("-1.0E+3", "3"));
ASSERT_EQUALS("0" , MathLib::multiply("-1.0E+3", "0"));
ASSERT_EQUALS("0" , MathLib::multiply("+1.0E+3", "0"));
ASSERT_EQUALS("2147483648" , MathLib::multiply("2","1073741824"));
ASSERT_EQUALS("536870912" , MathLib::multiply("512","1048576"));
ASSERT_EQUALS("0" , MathLib::multiply("-1.0E+3", "0"));
ASSERT_EQUALS("0" , MathLib::multiply("+1.0E+3", "0"));
ASSERT_EQUALS("2147483648" , MathLib::multiply("2","1073741824"));
ASSERT_EQUALS("536870912" , MathLib::multiply("512","1048576"));
// divide
ASSERT_EQUALS("1" , MathLib::divide("1", "1"));
ASSERT_EQUALS("0" , MathLib::divide("0", "1"));
ASSERT_EQUALS("5" , MathLib::divide("-10", "-2"));
ASSERT_EQUALS("1" , MathLib::divide("1", "1"));
ASSERT_EQUALS("0" , MathLib::divide("0", "1"));
ASSERT_EQUALS("5" , MathLib::divide("-10", "-2"));
ASSERT_EQUALS("-2.5", MathLib::divide("-10.", "4"));
ASSERT_EQUALS("2.5" , MathLib::divide("-10.", "-4"));
ASSERT_EQUALS("5" , MathLib::divide("25.5", "5.1"));
ASSERT_EQUALS("7" , MathLib::divide("21.", "3"));
ASSERT_EQUALS("1" , MathLib::divide("3", "2"));
ASSERT_EQUALS("5" , MathLib::divide("25.5", "5.1"));
ASSERT_EQUALS("7" , MathLib::divide("21.", "3"));
ASSERT_EQUALS("1" , MathLib::divide("3", "2"));
}

View File

@ -668,7 +668,7 @@ private:
check("void f(int a) {\n"
" const char *p = 0;\n"
" if (a) {\n"
" p = \"abcd\";\n"
" p = \"abcd\";\n"
" }\n"
" for (int i = 0; i < 3; i++) {\n"
" if (a && (p[i] == '1'));\n"

View File

@ -736,9 +736,9 @@ private:
checkUninitVar("enum ABCD { A, B, C, D };\n"
"\n"
"static void f(char *str ) {\n"
" enum ABCD i;\n"
" for (i = 0; i < D; i++) {\n"
" str[i] = 0;\n"
" enum ABCD i;\n"
" for (i = 0; i < D; i++) {\n"
" str[i] = 0;\n"
" }\n"
"}\n");
ASSERT_EQUALS("", errout.str());

View File

@ -1,138 +0,0 @@
#include "codeeditor.h"
#include <QPainter>
#include <QTextBlock>
CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent)
{
lineNumberArea = new LineNumberArea(this);
connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberAreaWidth(int)));
connect(this, SIGNAL(updateRequest(const QRect &, int)), this, SLOT(updateLineNumberArea(const QRect &, int)));
//connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine()));
updateLineNumberAreaWidth(0);
//highlightCurrentLine();
}
int CodeEditor::lineNumberAreaWidth()
{
int digits = 1;
int max = qMax(1, blockCount());
while (max >= 10)
{
max /= 10;
++digits;
}
int space = 3 + fontMetrics().width(QLatin1Char('9')) * digits;
return space;
}
void CodeEditor::updateLineNumberAreaWidth(int /* newBlockCount */)
{
setViewportMargins(lineNumberAreaWidth(), 0, 0, 0);
}
void CodeEditor::updateLineNumberArea(const QRect &rect, int dy)
{
if (dy)
lineNumberArea->scroll(0, dy);
else
lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height());
if (rect.contains(viewport()->rect()))
updateLineNumberAreaWidth(0);
}
void CodeEditor::resizeEvent(QResizeEvent *e)
{
QPlainTextEdit::resizeEvent(e);
QRect cr = contentsRect();
lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height()));
}
/*
void CodeEditor::highlightCurrentLine()
{
QList<QTextEdit::ExtraSelection> extraSelections;
if (!isReadOnly())
{
QTextEdit::ExtraSelection selection;
QColor lineColor = QColor(Qt::yellow).lighter(160);
selection.format.setBackground(lineColor);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = textCursor();
selection.cursor.clearSelection();
extraSelections.append(selection);
}
setExtraSelections(extraSelections);
}
*/
void CodeEditor::highlightErrors(const QList<int> &errorLines)
{
QList<QTextEdit::ExtraSelection> extraSelections;
for (int i = 0; i < errorLines.size(); ++i)
{
QTextEdit::ExtraSelection selection;
QColor lineColor = QColor(Qt::red).lighter(160);
selection.format.setBackground(lineColor);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = textCursor();
selection.cursor.clearSelection();
selection.cursor.movePosition(QTextCursor::Start);
selection.cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, errorLines[i] - 1);
extraSelections.append(selection);
}
setExtraSelections(extraSelections);
}
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
{
QPainter painter(lineNumberArea);
painter.fillRect(event->rect(), Qt::lightGray);
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
while (block.isValid() && top <= event->rect().bottom())
{
if (block.isVisible() && bottom >= event->rect().top())
{
QString number = QString::number(blockNumber + 1);
painter.setPen(Qt::black);
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
Qt::AlignRight, number);
}
block = block.next();
top = bottom;
bottom = top + (int) blockBoundingRect(block).height();
++blockNumber;
}
}

View File

@ -1,63 +0,0 @@
#ifndef CODEEDITOR_H
#define CODEEDITOR_H
#include <QPlainTextEdit>
#include <QObject>
#include <QList>
class QPaintEvent;
class QResizeEvent;
class QSize;
class QWidget;
class LineNumberArea;
class CodeEditor : public QPlainTextEdit
{
Q_OBJECT
public:
CodeEditor(QWidget *parent = 0);
void lineNumberAreaPaintEvent(QPaintEvent *event);
int lineNumberAreaWidth();
void highlightErrors(const QList<int> &errorLines);
protected:
void resizeEvent(QResizeEvent *event);
private slots:
void updateLineNumberAreaWidth(int newBlockCount);
//void highlightCurrentLine();
void updateLineNumberArea(const QRect &, int);
private:
QWidget *lineNumberArea;
};
class LineNumberArea : public QWidget
{
public:
LineNumberArea(CodeEditor *editor) : QWidget(editor)
{
codeEditor = editor;
}
QSize sizeHint() const
{
return QSize(codeEditor->lineNumberAreaWidth(), 0);
}
protected:
void paintEvent(QPaintEvent *event)
{
codeEditor->lineNumberAreaPaintEvent(event);
}
private:
CodeEditor *codeEditor;
};
#endif // CODEEDITOR_H

View File

@ -1,29 +0,0 @@
TARGET = cppcheck-verify
TEMPLATE = app
INCLUDEPATH += ../lib
SOURCES += main.cpp \
mainwindow.cpp \
../lib/tokenize.cpp \
../lib/token.cpp \
../lib/settings.cpp \
../lib/preprocessor.cpp \
../lib/path.cpp \
../lib/mathlib.cpp \
../lib/filelister_win32.cpp \
../lib/filelister_unix.cpp \
../lib/filelister.cpp \
../lib/errorlogger.cpp \
codeeditor.cpp
HEADERS += mainwindow.h \
../lib/tokenize.h \
../lib/token.h \
../lib/settings.h \
../lib/preprocessor.h \
../lib/path.h \
../lib/mathlib.h \
../lib/filelister_win32.h \
../lib/filelister_unix.h \
../lib/filelister.h \
../lib/errorlogger.h \
codeeditor.h
FORMS += mainwindow.ui

View File

@ -1,28 +0,0 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

View File

@ -1,148 +0,0 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "preprocessor.h"
#include "tokenize.h"
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <set>
#include <QFileDialog>
static void arrayIndex(const Tokenizer &tokenizer, std::set<unsigned int> &errorlines);
static unsigned char readChar(std::istream &istr)
{
unsigned char ch = (unsigned char)istr.get();
// Handling of newlines..
if (ch == '\r')
{
ch = '\n';
if ((char)istr.peek() == '\n')
(void)istr.get();
}
return ch;
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(open()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::open()
{
const std::string fileName = QFileDialog::getOpenFileName(this,
tr("Open File"),
"",
"cpp files (*.cpp)").toStdString();
if (fileName.empty())
return;
setWindowTitle(fileName.c_str());
Tokenizer tokenizer;
{
// Preprocess the file..
Preprocessor preprocessor;
std::ifstream fin(fileName.c_str());
std::string filedata;
std::list<std::string> configurations;
std::list<std::string> includePaths;
preprocessor.preprocess(fin,
filedata,
configurations,
fileName,
includePaths);
filedata = Preprocessor::getcode(filedata, "", fileName, NULL, NULL);
// Tokenize the preprocessed code..
std::istringstream istr(filedata);
tokenizer.tokenize(istr, fileName.c_str(), "");
}
// Check the tokens..
std::set<unsigned int> errorlines;
arrayIndex(tokenizer, errorlines);
// show report..
{
std::ostringstream report;
std::ifstream fin(fileName.c_str());
for (unsigned char c = readChar(fin); fin.good(); c = readChar(fin))
{
if (c & 0x80)
continue;
report << c;
}
ui->codeEditor->setPlainText(QString::fromStdString(report.str()));
QList<int> errorLines;
for (std::set<unsigned int>::const_iterator it = errorlines.begin(); it != errorlines.end(); ++it)
errorLines.push_back(*it);
ui->codeEditor->highlightErrors(errorLines);
}
}
/**
* Check that array indexes are within bounds
* 1. Locate array access through: [ .. ]
* 2. Try to determine if index is within bounds.
* 3. If it fails to determine that the index is within bounds then write warning
* \param tokenizer The tokenizer
* \param errout output stream to write warnings to
*/
static void arrayIndex(const Tokenizer &tokenizer, std::set<unsigned int> &errorlines)
{
for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next())
{
// 1. Locate array access through: [ .. ]
if (tok->fileIndex() == 0 && tok->str() == "[")
{
// 2. try to determine if the array index is within bounds
// array declaration
if (Token::simpleMatch(tok, "[ ]"))
continue;
if (Token::Match(tok->tokAt(-2), "%type% %var% [ %num% ] ;|="))
continue;
// 3. If it fails to determine that the index is within bounds then write warning
errorlines.insert(tok->linenr());
}
}
}

View File

@ -1,43 +0,0 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QMainWindow>
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void open();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
<string>Cppcheck-Verify</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="CodeEditor" name="codeEditor">
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="tabStopWidth">
<number>4</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="actionOpen"/>
</widget>
<addaction name="menuFile"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="actionOpen">
<property name="text">
<string>Open..</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>CodeEditor</class>
<extends>QPlainTextEdit</extends>
<header>codeeditor.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -1,11 +0,0 @@
cppcheck-verify
===============
Experimental subproject for Cppcheck.
The goal is no false negatives.
Just use 'make' to build.

View File

@ -4,7 +4,7 @@
<?define Platform = "x86" ?>
<?endif ?>
<?define CliBuildDir = "..\Build\release" ?>
<?define CliBuildDir = "..\cli\release" ?>
<?define GuiBuildDir = "..\Build\gui" ?>
<?define TranslationsDir = "..\gui" ?>
<?define HelpDir = "..\gui\help" ?>

View File

@ -43,6 +43,7 @@
<File Id='cppcheck_de.qm' Name='cppcheck_de.qm' Source='$(var.TranslationsDir)\cppcheck_de.qm' />
<File Id='cppcheck_en.qm' Name='cppcheck_en.qm' Source='$(var.TranslationsDir)\cppcheck_en.qm' />
<File Id='cppcheck_fi.qm' Name='cppcheck_fi.qm' Source='$(var.TranslationsDir)\cppcheck_fi.qm' />
<File Id='cppcheck_fr.qm' Name='cppcheck_fr.qm' Source='$(var.TranslationsDir)\cppcheck_fr.qm' />
<File Id='cppcheck_ja.qm' Name='cppcheck_ja.qm' Source='$(var.TranslationsDir)\cppcheck_ja.qm' />
<File Id='cppcheck_nl.qm' Name='cppcheck_nl.qm' Source='$(var.TranslationsDir)\cppcheck_nl.qm' />
<File Id='cppcheck_pl.qm' Name='cppcheck_pl.qm' Source='$(var.TranslationsDir)\cppcheck_pl.qm' />