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 dmake
tools/errmsg tools/errmsg
# VS generated files # VS generated files
*.obj
*.ncb *.ncb
*.suo *.suo
*.user *.user

View File

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

View File

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

View File

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

View File

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

View File

@ -15,10 +15,6 @@
<source>Cppcheck - A tool for static C/C++ code analysis.</source> <source>Cppcheck - A tool for static C/C++ code analysis.</source>
<translation>Cppcheck - Un outil d&apos;analyse statique de code C/C++.</translation> <translation>Cppcheck - Un outil d&apos;analyse statique de code C/C++.</translation>
</message> </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> <message>
<source>This program is licensed under the terms <source>This program is licensed under the terms
of the GNU General Public License version 3</source> 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> <source>Visit Cppcheck homepage at %1</source>
<translation>Visitez le site Cppcheck : %1</translation> <translation>Visitez le site Cppcheck : %1</translation>
</message> </message>
<message utf8="true">
<source>Copyright © 2007-2010 Daniel Marjamäki and cppcheck team.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ApplicationDialog</name> <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: Example : ouvrir un fichier avec kate et position l&apos;affichage sur la bonne ligne:
kate -l(ligne) (fichier)</translation> kate -l(ligne) (fichier)</translation>
</message> </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> <message>
<source>Browse</source> <source>Browse</source>
<translation>Parcourir</translation> <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> <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> <translation>Vous devez spécifier un nom et un chemin d&apos;accès pour l&apos;application !</translation>
</message> </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>
<context> <context>
<name>FileViewDialog</name> <name>FileViewDialog</name>
@ -106,10 +106,69 @@ kate -l(ligne) (fichier)</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Fileview</name> <name>HelpWindow</name>
<message> <message>
<source>Fileview</source> <source>Cppcheck Help</source>
<translation type="unfinished">Visualisateur de fichier</translation> <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> </message>
</context> </context>
<context> <context>
@ -126,10 +185,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;View</source> <source>&amp;View</source>
<translation type="unfinished">&amp;Affichage</translation> <translation type="unfinished">&amp;Affichage</translation>
</message> </message>
<message>
<source>&amp;Language</source>
<translation type="unfinished">&amp;Langue</translation>
</message>
<message> <message>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished">&amp;Aide</translation> <translation type="unfinished">&amp;Aide</translation>
@ -210,26 +265,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;Preferences</source> <source>&amp;Preferences</source>
<translation type="unfinished">&amp;Préférences</translation> <translation type="unfinished">&amp;Préférences</translation>
</message> </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> <message>
<source>&amp;Check all</source> <source>&amp;Check all</source>
<translation type="unfinished">Tout &amp;cocher</translation> <translation type="unfinished">Tout &amp;cocher</translation>
@ -246,10 +281,6 @@ kate -l(ligne) (fichier)</translation>
<source>&amp;Expand all</source> <source>&amp;Expand all</source>
<translation type="unfinished">Tout &amp;afficher</translation> <translation type="unfinished">Tout &amp;afficher</translation>
</message> </message>
<message>
<source>&amp;Toolbar</source>
<translation type="unfinished">&amp;Barre d&apos;outil</translation>
</message>
<message> <message>
<source>&amp;Contents</source> <source>&amp;Contents</source>
<translation type="unfinished">&amp;Contenu</translation> <translation type="unfinished">&amp;Contenu</translation>
@ -274,14 +305,6 @@ kate -l(ligne) (fichier)</translation>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation type="unfinished">Sélectionner le répertoire à vérifier</translation> <translation type="unfinished">Sélectionner le répertoire à vérifier</translation>
</message> </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> <message>
<source>License</source> <source>License</source>
<translation type="unfinished">Licence</translation> <translation type="unfinished">Licence</translation>
@ -290,10 +313,6 @@ Arrêter la vérification avant de quitter.</translation>
<source>Authors</source> <source>Authors</source>
<translation type="unfinished">Auteur</translation> <translation type="unfinished">Auteur</translation>
</message> </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> <message>
<source>Save the report file</source> <source>Save the report file</source>
<translation type="unfinished">Sauvegarder le rapport</translation> <translation type="unfinished">Sauvegarder le rapport</translation>
@ -354,6 +373,253 @@ Arrêter la vérification avant de quitter.</translation>
<source>Polish</source> <source>Polish</source>
<translation type="unfinished">Polonais</translation> <translation type="unfinished">Polonais</translation>
</message> </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>
<context> <context>
<name>QObject</name> <name>QObject</name>
@ -384,10 +650,6 @@ Arrêter la vérification avant de quitter.</translation>
<source>Line</source> <source>Line</source>
<translation type="unfinished">Ligne</translation> <translation type="unfinished">Ligne</translation>
</message> </message>
<message>
<source>Message</source>
<translation type="unfinished">Message</translation>
</message>
<message> <message>
<source>Undefined file</source> <source>Undefined file</source>
<translation type="unfinished">Fichier indéterminé</translation> <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> Merci de vérifier que le chemin de l&apos;application et que les paramètres sont corrects.</translation>
</message> </message>
<message>
<source>possible error</source>
<translation type="unfinished">erreur possible</translation>
</message>
<message> <message>
<source>style</source> <source>style</source>
<translation type="unfinished">erreur de style</translation> <translation type="unfinished">erreur de style</translation>
</message> </message>
<message>
<source>possible style</source>
<translation type="unfinished">erreur de style possible</translation>
</message>
<message> <message>
<source>error</source> <source>error</source>
<translation type="unfinished">erreur</translation> <translation type="unfinished">erreur</translation>
</message> </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>
<context> <context>
<name>ResultsView</name> <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> <source>Failed to save the report.</source>
<translation type="unfinished">Erreur lors de la sauvegarde du rapport.</translation> <translation type="unfinished">Erreur lors de la sauvegarde du rapport.</translation>
</message> </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>
<context> <context>
<name>Settings</name> <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> <source>Number of threads: </source>
<translation type="unfinished">Nombre de processus : </translation> <translation type="unfinished">Nombre de processus : </translation>
</message> </message>
<message>
<source>Check all #ifdef configurations</source>
<translation type="unfinished">Vérifier toutes les configurations #ifdef</translation>
</message>
<message> <message>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation type="unfinished">Montrer le chemin complet des fichiers</translation> <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> <source>Save full path to files in reports</source>
<translation type="unfinished">Sauvegarder le chemin complet des fichiers dans les rapports</translation> <translation type="unfinished">Sauvegarder le chemin complet des fichiers dans les rapports</translation>
</message> </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>
<context> <context>
<name>SettingsDialog</name> <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> <source>Modify an application</source>
<translation type="unfinished">Modifier une application</translation> <translation type="unfinished">Modifier une application</translation>
</message> </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> </context>
</TS> </TS>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,122 +18,70 @@
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <QList>
#include <QDir>
#include <QFile> #include <QFile>
#include <QXmlStreamWriter> #include <QXmlStreamReader>
#include <QDebug>
#include "report.h" #include "report.h"
#include "erroritem.h"
#include "xmlreport.h" #include "xmlreport.h"
static const char ResultElementName[] = "results"; static const char ResultElementName[] = "results";
static const char ErrorElementName[] = "error"; static const char VersionAttribute[] = "version";
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";
XmlReport::XmlReport(const QString &filename, QObject * parent) : XmlReport::XmlReport(const QString &filename, QObject * parent) :
Report(filename, parent), Report(filename, parent)
mXmlReader(NULL),
mXmlWriter(NULL)
{ {
} }
XmlReport::~XmlReport() QString XmlReport::quoteMessage(const QString &message)
{ {
delete mXmlReader; QString quotedMessage(message);
delete mXmlWriter; quotedMessage.replace("&", "&amp;");
Close(); 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; QString quotedMessage(message);
if (Report::Create()) 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()); switch (reader.readNext())
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())
{ {
case QXmlStreamReader::StartElement: case QXmlStreamReader::StartElement:
if (mXmlReader->name() == ResultElementName) if (reader.name() == ResultElementName)
insideResults = true;
// Read error element from inside result element
if (insideResults && mXmlReader->name() == ErrorElementName)
{ {
ErrorLine line = ReadError(mXmlReader); QXmlStreamAttributes attribs = reader.attributes();
errors.append(line); if (attribs.hasAttribute(QString(VersionAttribute)))
{
int ver = attribs.value("", VersionAttribute).toString().toInt();
return ver;
}
else
return 1;
} }
break; break;
case QXmlStreamReader::EndElement:
if (mXmlReader->name() == ResultElementName)
insideResults = false;
break;
// Not handled // Not handled
case QXmlStreamReader::EndElement:
case QXmlStreamReader::NoToken: case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid: case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument: case QXmlStreamReader::StartDocument:
@ -146,30 +94,5 @@ QList<ErrorLine> XmlReport::Read()
break; break;
} }
} }
return errors; return 0;
}
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;
} }

View File

@ -19,78 +19,51 @@
#ifndef XML_REPORT_H #ifndef XML_REPORT_H
#define XML_REPORT_H #define XML_REPORT_H
#include <QObject>
#include <QString> #include <QString>
#include <QStringList> #include <QList>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include "report.h" #include "report.h"
#include "erroritem.h"
class QObject;
/// @addtogroup GUI /// @addtogroup GUI
/// @{ /// @{
/** /**
* @brief XML file report. * @brief Base class for XML report classes.
* This report outputs XML-formatted report. The XML format must match command
* line version's XML output.
*/ */
class XmlReport : public Report class XmlReport : public Report
{ {
public: public:
XmlReport(const QString &filename, QObject * parent = 0); XmlReport(const QString &filename, QObject * parent = 0);
virtual ~XmlReport();
/** /**
* @brief Create the report (file). * @brief Read contents of the report file.
* @return true if succeeded, false if file could not be created. */
*/ virtual QList<ErrorItem> Read() = 0;
virtual bool Create();
/** /**
* @brief Open existing report file. * @brief Quote the message.
*/ * @param message Message to quote.
bool Open(); * @return quoted message.
*/
static QString quoteMessage(const QString &message);
/** /**
* @brief Write report header. * @brief Unquote the message.
*/ * @param message Message to quote.
virtual void WriteHeader(); * @return quoted message.
*/
static QString unquoteMessage(const QString &message);
/** /**
* @brief Write report footer. * @brief Get the XML report format version from the file.
*/ * @param filename Filename of the report file.
virtual void WriteFooter(); * @return XML report format version or 0 if error happened.
*/
/** static int determineVersion(const QString &filename);
* @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;
}; };
/// @} /// @}
#endif // XML_REPORT_H #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%")) 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; _typeSize[tok->strAt(1)] = 100;
} }
} }

View File

@ -102,28 +102,30 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
<refsynopsisdiv> <refsynopsisdiv>
<cmdsynopsis> <cmdsynopsis>
<command>&dhpackage;</command> <command>&dhpackage;</command>
<arg choice="opt"><option>--append=[file]</option></arg> <arg choice="opt"><option>--append=&lt;file&gt;</option></arg>
<arg choice="opt"><option>-D[id]</option></arg> <arg choice="opt"><option>-D&lt;id&gt;</option></arg>
<arg choice="opt"><option>--enable=[id]</option></arg> <arg choice="opt"><option>--enable=&lt;id&gt;</option></arg>
<arg choice="opt"><option>--error-exitcode=[n]</option></arg> <arg choice="opt"><option>--error-exitcode=&lt;n&gt;</option></arg>
<arg choice="opt"><option>--errorlist</option></arg> <arg choice="opt"><option>--errorlist</option></arg>
<arg choice="opt"><option>--exitcode-suppressions=[file]</option></arg> <arg choice="opt"><option>--exitcode-suppressions=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--file-list=file</option></arg> <arg choice="opt"><option>--file-list=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--force</option></arg> <arg choice="opt"><option>--force</option></arg>
<arg choice="opt"><option>--help</option></arg> <arg choice="opt"><option>--help</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[dir]</option></arg> <arg choice="opt"><option>-i&lt;dir&gt;</option></arg>
<arg choice="opt"><option>--inline-suppr</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>--quiet</option></arg>
<arg choice="opt"><option>--report-progress</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>--style</option></arg>
<arg choice="opt"><option>--suppressions-list=[file]</option></arg> <arg choice="opt"><option>--suppressions-list=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--template '[text]'</option></arg> <arg choice="opt"><option>--template '&lt;text&gt;'</option></arg>
<arg choice="opt"><option>--verbose</option></arg> <arg choice="opt"><option>--verbose</option></arg>
<arg choice="opt"><option>--version</option></arg> <arg choice="opt"><option>--version</option></arg>
<arg choice="opt"><option>--xml</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="opt"><option>file or path</option></arg>
<arg choice="plain"><option>...</option></arg> <arg choice="plain"><option>...</option></arg>
</cmdsynopsis> </cmdsynopsis>
@ -146,20 +148,20 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
variablelist.term.break.after parameters to variablelist.term.break.after parameters to
control the term elements. --> control the term elements. -->
<varlistentry> <varlistentry>
<term><option>--append=[file]</option></term> <term><option>--append=&lt;file&gt;</option></term>
<listitem> <listitem>
<para>This allows you to provide information about functions by providing an implementation for these.</para> <para>This allows you to provide information about functions by providing an implementation for these.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>-D[id]</option></term> <term><option>-D&lt;id&gt;</option></term>
<listitem> <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. <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> Example: -DDEBUG=1 -D__cplusplus</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--enable=[id]</option></term> <term><option>--enable=&lt;id&gt;</option></term>
<listitem> <listitem>
<para>Enable additional checks. The available ids are: <para>Enable additional checks. The available ids are:
<glosslist> <glosslist>
@ -199,9 +201,9 @@ Example: -DDEBUG=1 -D__cplusplus</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--error-exitcode=[n]</option></term> <term><option>--error-exitcode=&lt;n&gt;</option></term>
<listitem> <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 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. provided. Note that your operating system can modify this value, e.g.
256 can become 0.</para> 256 can become 0.</para>
@ -214,13 +216,13 @@ Example: -DDEBUG=1 -D__cplusplus</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--exitcode-suppressions=[file]</option></term> <term><option>--exitcode-suppressions=&lt;file&gt;</option></term>
<listitem> <listitem>
<para>Used when certain messages should be displayed but should not cause a non-zero exitcode.</para> <para>Used when certain messages should be displayed but should not cause a non-zero exitcode.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--file-list=[file]</option></term> <term><option>--file-list=&lt;file&gt;</option></term>
<listitem> <listitem>
<para>Specify the files to check in a text file. One filename per line.</para> <para>Specify the files to check in a text file. One filename per line.</para>
</listitem> </listitem>
@ -241,7 +243,7 @@ default.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>-I [dir]</option></term> <term><option>-I &lt;dir&gt;</option></term>
<listitem> <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 <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> files, this is not needed.</para>
@ -249,7 +251,7 @@ files, this is not needed.</para>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>-i [dir]</option></term> <term><option>-i &lt;dir&gt;</option></term>
<listitem> <listitem>
<para>Give path to ignore. Give several -i parameters to ignore several paths. Give directory name or filename with path as parameter. <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> 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> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>-j [jobs]</option></term> <term><option>-j &lt;jobs&gt;</option></term>
<listitem> <listitem>
<para>Start [jobs] threads to do the checking work.</para> <para>Start &lt;jobs&gt; threads to do the checking work.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<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> <para>Report progress when checking a file.</para>
</listitem> </listitem>
</varlistentry> </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> <varlistentry>
<term><option>-s</option></term> <term><option>-s</option></term>
<term><option>--style</option></term> <term><option>--style</option></term>
@ -290,14 +304,14 @@ Directory name is matched to all parts of the path.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--suppressions-list=[file]</option></term> <term><option>--suppressions-list=&lt;file&gt;</option></term>
<listitem> <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]. <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> You can use --template or --xml to see the error id.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--template '[text]'</option></term> <term><option>--template '&lt;text&gt;'</option></term>
<listitem> <listitem>
<para>Format the error messages. E.g. '{file}:{line},{severity},{id},{message}' or '{file}({line}):({severity}) {message}'. Pre-defined templates: gcc, vs</para> <para>Format the error messages. E.g. '{file}:{line},{severity},{id},{message}' or '{file}({line}):({severity}) {message}'. Pre-defined templates: gcc, vs</para>
</listitem> </listitem>
@ -322,7 +336,7 @@ Directory name is matched to all parts of the path.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--xml-version=[version]</option></term> <term><option>--xml-version=&lt;version&gt;</option></term>
<listitem> <listitem>
<para>Select the XML file version. Currently versions 1 and 2 are available. The default version is 1.</para> <para>Select the XML file version. Currently versions 1 and 2 are available. The default version is 1.</para>
</listitem> </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" " UString& operator=( const UString& s );\n"
"};\n" "};\n"
"UString& UString::assign( const char* c_str ) {\n" "UString& UString::assign( const char* c_str ) {\n"
" std::string tmp( c_str );\n" " std::string tmp( c_str );\n"
" return assign( tmp );\n" " return assign( tmp );\n"
"}\n" "}\n"
"UString& UString::operator=( const UString& s ) {\n" "UString& UString::operator=( const UString& s ) {\n"
" return assign( s );\n" " return assign( s );\n"
"}\n"); "}\n");
} }
@ -2723,7 +2723,7 @@ private:
" A()\n" " A()\n"
" {\n" " {\n"
" init();\n" " init();\n"
" }\n" " }\n"
"\n" "\n"
" void init() { init(0); }\n" " void init() { init(0); }\n"
"\n" "\n"
@ -5452,12 +5452,12 @@ private:
checkConst("template<template<class> class E,class D> class C : E<D>\n" checkConst("template<template<class> class E,class D> class C : E<D>\n"
"{\n" "{\n"
"public:\n" "public:\n"
" int f();\n" " int f();\n"
"};\n" "};\n"
"class E : C<D,int>\n" "class E : C<D,int>\n"
"{\n" "{\n"
"public:\n" "public:\n"
" int f() { return C< ::D,int>::f(); }\n" " int f() { return C< ::D,int>::f(); }\n"
"};\n"); "};\n");
ASSERT_EQUALS("", errout.str()); 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.0E3", "3")); ASSERT_EQUALS("-3000" , MathLib::multiply("-1.0E3", "3"));
ASSERT_EQUALS("-3000" , MathLib::multiply("-1.0E+3", "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("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("2147483648" , MathLib::multiply("2","1073741824"));
ASSERT_EQUALS("536870912" , MathLib::multiply("512","1048576")); ASSERT_EQUALS("536870912" , MathLib::multiply("512","1048576"));
// divide // divide
ASSERT_EQUALS("1" , MathLib::divide("1", "1")); ASSERT_EQUALS("1" , MathLib::divide("1", "1"));
ASSERT_EQUALS("0" , MathLib::divide("0", "1")); ASSERT_EQUALS("0" , MathLib::divide("0", "1"));
ASSERT_EQUALS("5" , MathLib::divide("-10", "-2")); 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("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("5" , MathLib::divide("25.5", "5.1"));
ASSERT_EQUALS("7" , MathLib::divide("21.", "3")); ASSERT_EQUALS("7" , MathLib::divide("21.", "3"));
ASSERT_EQUALS("1" , MathLib::divide("3", "2")); ASSERT_EQUALS("1" , MathLib::divide("3", "2"));
} }

View File

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

View File

@ -736,9 +736,9 @@ private:
checkUninitVar("enum ABCD { A, B, C, D };\n" checkUninitVar("enum ABCD { A, B, C, D };\n"
"\n" "\n"
"static void f(char *str ) {\n" "static void f(char *str ) {\n"
" enum ABCD i;\n" " enum ABCD i;\n"
" for (i = 0; i < D; i++) {\n" " for (i = 0; i < D; i++) {\n"
" str[i] = 0;\n" " str[i] = 0;\n"
" }\n" " }\n"
"}\n"); "}\n");
ASSERT_EQUALS("", errout.str()); 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" ?> <?define Platform = "x86" ?>
<?endif ?> <?endif ?>
<?define CliBuildDir = "..\Build\release" ?> <?define CliBuildDir = "..\cli\release" ?>
<?define GuiBuildDir = "..\Build\gui" ?> <?define GuiBuildDir = "..\Build\gui" ?>
<?define TranslationsDir = "..\gui" ?> <?define TranslationsDir = "..\gui" ?>
<?define HelpDir = "..\gui\help" ?> <?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_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_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_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_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_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' /> <File Id='cppcheck_pl.qm' Name='cppcheck_pl.qm' Source='$(var.TranslationsDir)\cppcheck_pl.qm' />