Merge branch 'master' of github.com:gerundt/cppcheck into web-improvements

This commit is contained in:
Tim Gerundt 2011-02-01 19:40:20 +01:00
commit 5bd78687a8
177 changed files with 6500 additions and 3928 deletions

View File

@ -22,7 +22,7 @@ MAN_SOURCE=man/cppcheck.1.xml
###### Object Files
LIBOBJ = lib/checkautovariables.o \
LIBOBJ = lib/checkautovariables.o \
lib/checkbufferoverrun.o \
lib/checkclass.o \
lib/checkexceptionsafety.o \
@ -37,9 +37,6 @@ LIBOBJ = lib/checkautovariables.o \
lib/cppcheck.o \
lib/errorlogger.o \
lib/executionpath.o \
lib/filelister.o \
lib/filelister_unix.o \
lib/filelister_win32.o \
lib/mathlib.o \
lib/path.o \
lib/preprocessor.o \
@ -49,8 +46,11 @@ LIBOBJ = lib/checkautovariables.o \
lib/token.o \
lib/tokenize.o
CLIOBJ = cli/cmdlineparser.o \
CLIOBJ = cli/cmdlineparser.o \
cli/cppcheckexecutor.o \
cli/filelister.o \
cli/filelister_unix.o \
cli/filelister_win32.o \
cli/main.o \
cli/threadexecutor.o
@ -90,7 +90,7 @@ TESTOBJ = test/options.o \
test/testunusedprivfunc.o \
test/testunusedvar.o
EXTOBJ = externals/tinyxml/tinystr.o \
EXTOBJ = externals/tinyxml/tinystr.o \
externals/tinyxml/tinyxml.o \
externals/tinyxml/tinyxmlerror.o \
externals/tinyxml/tinyxmlparser.o
@ -98,13 +98,13 @@ EXTOBJ = externals/tinyxml/tinystr.o \
###### Targets
cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)
cppcheck: $(LIBOBJ) $(CLIOBJ) $(EXTOBJ)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o cppcheck $(CLIOBJ) $(LIBOBJ) $(EXTOBJ) -lpcre $(LDFLAGS)
all: cppcheck testrunner
all: cppcheck testrunner
testrunner: $(TESTOBJ) $(LIBOBJ) $(EXTOBJ) cli/threadexecutor.o cli/cmdlineparser.o cli/cppcheckexecutor.o
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o testrunner $(TESTOBJ) $(LIBOBJ) $(EXTOBJ) -lpcre cli/threadexecutor.o cli/cmdlineparser.o cli/cppcheckexecutor.o $(LDFLAGS)
testrunner: $(TESTOBJ) $(LIBOBJ) $(EXTOBJ) cli/threadexecutor.o cli/cmdlineparser.o cli/cppcheckexecutor.o cli/filelister.o cli/filelister_unix.o
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o testrunner $(TESTOBJ) $(LIBOBJ) $(EXTOBJ) -lpcre cli/threadexecutor.o cli/cmdlineparser.o cli/filelister.o cli/filelister_unix.o $(LDFLAGS)
test: all
./testrunner
@ -113,7 +113,7 @@ check: all
./testrunner -g -q
dmake: tools/dmake.cpp
$(CXX) -o dmake tools/dmake.cpp lib/filelister*.cpp
$(CXX) -o dmake tools/dmake.cpp cli/filelister*.cpp lib/path.cpp -Ilib
clean:
rm -f lib/*.o cli/*.o test/*.o externals/tinyxml/*.o testrunner cppcheck cppcheck.1
@ -127,14 +127,14 @@ man/cppcheck.1: $(MAN_SOURCE)
tags:
ctags -R --exclude=doxyoutput .
install: cppcheck
install: cppcheck
install -d ${BIN}
install cppcheck ${BIN}
###### Build
lib/checkautovariables.o: lib/checkautovariables.cpp lib/checkautovariables.h lib/check.h lib/token.h lib/tokenize.h lib/settings.h lib/errorlogger.h
lib/checkautovariables.o: lib/checkautovariables.cpp lib/checkautovariables.h lib/check.h lib/token.h lib/tokenize.h lib/settings.h lib/errorlogger.h lib/symboldatabase.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/checkautovariables.o lib/checkautovariables.cpp
lib/checkbufferoverrun.o: lib/checkbufferoverrun.cpp lib/checkbufferoverrun.h lib/check.h lib/token.h lib/tokenize.h lib/settings.h lib/errorlogger.h lib/mathlib.h lib/executionpath.h
@ -170,7 +170,7 @@ lib/checkuninitvar.o: lib/checkuninitvar.cpp lib/checkuninitvar.h lib/check.h li
lib/checkunusedfunctions.o: lib/checkunusedfunctions.cpp lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h lib/settings.h lib/errorlogger.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/checkunusedfunctions.o lib/checkunusedfunctions.cpp
lib/cppcheck.o: lib/cppcheck.cpp lib/cppcheck.h lib/settings.h lib/errorlogger.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h lib/preprocessor.h lib/filelister.h lib/path.h lib/timer.h
lib/cppcheck.o: lib/cppcheck.cpp lib/cppcheck.h lib/settings.h lib/errorlogger.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h lib/preprocessor.h lib/path.h lib/timer.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/cppcheck.o lib/cppcheck.cpp
lib/errorlogger.o: lib/errorlogger.cpp lib/errorlogger.h lib/path.h lib/cppcheck.h lib/settings.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h
@ -179,15 +179,6 @@ lib/errorlogger.o: lib/errorlogger.cpp lib/errorlogger.h lib/path.h lib/cppcheck
lib/executionpath.o: lib/executionpath.cpp lib/executionpath.h lib/token.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/executionpath.o lib/executionpath.cpp
lib/filelister.o: lib/filelister.cpp lib/filelister.h lib/filelister_win32.h lib/filelister_unix.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/filelister.o lib/filelister.cpp
lib/filelister_unix.o: lib/filelister_unix.cpp lib/filelister.h lib/filelister_unix.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/filelister_unix.o lib/filelister_unix.cpp
lib/filelister_win32.o: lib/filelister_win32.cpp lib/filelister.h lib/filelister_win32.h lib/path.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/filelister_win32.o lib/filelister_win32.cpp
lib/mathlib.o: lib/mathlib.cpp lib/mathlib.h lib/tokenize.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/mathlib.o lib/mathlib.cpp
@ -200,7 +191,7 @@ lib/preprocessor.o: lib/preprocessor.cpp lib/preprocessor.h lib/tokenize.h lib/t
lib/settings.o: lib/settings.cpp lib/settings.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/settings.o lib/settings.cpp
lib/symboldatabase.o: lib/symboldatabase.cpp lib/symboldatabase.h lib/tokenize.h lib/token.h lib/settings.h lib/errorlogger.h lib/check.h
lib/symboldatabase.o: lib/symboldatabase.cpp lib/symboldatabase.h lib/token.h lib/tokenize.h lib/settings.h lib/errorlogger.h lib/check.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/symboldatabase.o lib/symboldatabase.cpp
lib/timer.o: lib/timer.cpp lib/timer.h
@ -209,15 +200,24 @@ lib/timer.o: lib/timer.cpp lib/timer.h
lib/token.o: lib/token.cpp lib/token.h lib/errorlogger.h lib/check.h lib/tokenize.h lib/settings.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/token.o lib/token.cpp
lib/tokenize.o: lib/tokenize.cpp lib/tokenize.h lib/token.h lib/filelister.h lib/mathlib.h lib/settings.h lib/errorlogger.h lib/check.h lib/path.h lib/symboldatabase.h
lib/tokenize.o: lib/tokenize.cpp lib/tokenize.h lib/token.h lib/mathlib.h lib/settings.h lib/errorlogger.h lib/check.h lib/path.h lib/symboldatabase.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -c -o lib/tokenize.o lib/tokenize.cpp
cli/cmdlineparser.o: cli/cmdlineparser.cpp lib/cppcheck.h lib/settings.h lib/errorlogger.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h lib/timer.h cli/cmdlineparser.h
cli/cmdlineparser.o: cli/cmdlineparser.cpp lib/cppcheck.h lib/settings.h lib/errorlogger.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h lib/timer.h cli/cmdlineparser.h lib/path.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/cmdlineparser.o cli/cmdlineparser.cpp
cli/cppcheckexecutor.o: cli/cppcheckexecutor.cpp cli/cppcheckexecutor.h lib/errorlogger.h lib/settings.h lib/cppcheck.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h cli/threadexecutor.h cli/cmdlineparser.h lib/filelister.h
cli/cppcheckexecutor.o: cli/cppcheckexecutor.cpp cli/cppcheckexecutor.h lib/errorlogger.h lib/settings.h lib/cppcheck.h lib/checkunusedfunctions.h lib/check.h lib/token.h lib/tokenize.h cli/threadexecutor.h cli/cmdlineparser.h cli/filelister.h lib/path.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/cppcheckexecutor.o cli/cppcheckexecutor.cpp
cli/filelister.o: cli/filelister.cpp cli/filelister.h cli/filelister_win32.h cli/filelister_unix.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/filelister.o cli/filelister.cpp
cli/filelister_unix.o: cli/filelister_unix.cpp lib/path.h cli/filelister.h cli/filelister_unix.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/filelister_unix.o cli/filelister_unix.cpp
cli/filelister_win32.o: cli/filelister_win32.cpp cli/filelister.h cli/filelister_win32.h lib/path.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/filelister_win32.o cli/filelister_win32.cpp
cli/main.o: cli/main.cpp cli/cppcheckexecutor.h lib/errorlogger.h lib/settings.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Iexternals -c -o cli/main.o cli/main.cpp
@ -257,7 +257,7 @@ test/testerrorlogger.o: test/testerrorlogger.cpp test/testsuite.h lib/errorlogge
test/testexceptionsafety.o: test/testexceptionsafety.cpp lib/tokenize.h lib/checkexceptionsafety.h lib/check.h lib/token.h lib/settings.h lib/errorlogger.h test/testsuite.h test/redirect.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Icli -Iexternals -c -o test/testexceptionsafety.o test/testexceptionsafety.cpp
test/testfilelister_unix.o: test/testfilelister_unix.cpp test/testsuite.h lib/errorlogger.h test/redirect.h lib/filelister_unix.h lib/filelister.h
test/testfilelister_unix.o: test/testfilelister_unix.cpp test/testsuite.h lib/errorlogger.h test/redirect.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -Ilib -Icli -Iexternals -c -o test/testfilelister_unix.o test/testfilelister_unix.cpp
test/testincompletestatement.o: test/testincompletestatement.cpp test/testsuite.h lib/errorlogger.h test/redirect.h lib/tokenize.h lib/checkother.h lib/check.h lib/token.h lib/settings.h

View File

@ -14,9 +14,15 @@ include($$PWD/../lib/lib.pri)
SOURCES += main.cpp \
cppcheckexecutor.cpp \
cmdlineparser.cpp \
filelister.cpp \
filelister_unix.cpp \
filelister_win32.cpp \
threadexecutor.cpp
HEADERS += cppcheckexecutor.h \
cmdlineparser.h \
cmdlineparser.h \
filelister.h \
filelister_unix.h \
filelister_win32.h \
threadexecutor.h
CONFIG(release, debug|release) {

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -25,6 +25,7 @@
#include "timer.h"
#include "settings.h"
#include "cmdlineparser.h"
#include "path.h"
// xml is used in rules
#include "tinyxml/tinyxml.h"
@ -59,6 +60,7 @@ CmdLineParser::CmdLineParser(Settings *settings)
, _showHelp(false)
, _showVersion(false)
, _showErrorMessages(false)
, _exitAfterPrint(false)
{
}
@ -74,6 +76,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
if (strcmp(argv[i], "--version") == 0)
{
_showVersion = true;
_exitAfterPrint = true;
return true;
}
// Flag used for various purposes during debugging
@ -101,20 +104,34 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
}
// Filter errors
else if (strcmp(argv[i], "--exitcode-suppressions") == 0)
else if (strncmp(argv[i], "--exitcode-suppressions", 23) == 0)
{
++i;
std::string filename;
if (i >= argc)
// exitcode-suppressions filename.txt
// Deprecated
if (strcmp(argv[i], "--exitcode-suppressions") == 0)
{
PrintMessage("cppcheck: No file specified for the --exitcode-suppressions option");
return false;
++i;
if (i >= argc || strncmp(argv[i], "-", 1) == 0 ||
strncmp(argv[i], "--", 2) == 0)
{
PrintMessage("cppcheck: No filename specified for the --exitcode-suppressions option");
return false;
}
filename = argv[i];
}
// exitcode-suppressions=filename.txt
else
{
filename = 24 + argv[i];
}
std::ifstream f(argv[i]);
std::ifstream f(filename.c_str());
if (!f.is_open())
{
PrintMessage("cppcheck: Couldn't open the file \"" + std::string(argv[i]) + "\"");
PrintMessage("cppcheck: Couldn't open the file \"" + std::string(filename) + "\"");
return false;
}
const std::string errmsg(_settings->nofail.parseFile(f));
@ -126,7 +143,31 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
}
// Filter errors
else if (strcmp(argv[i], "--suppressions") == 0)
else if (strncmp(argv[i], "--suppressions-list=", 20) == 0)
{
std::string filename = argv[i];
filename = filename.substr(20);
std::ifstream f(filename.c_str());
if (!f.is_open())
{
std::string message("cppcheck: Couldn't open the file \"");
message += std::string(filename);
message += "\"";
PrintMessage(message);
return false;
}
const std::string errmsg(_settings->nomsg.parseFile(f));
if (!errmsg.empty())
{
PrintMessage(errmsg);
return false;
}
}
// Filter errors
// This is deprecated, see --supressions-list above
else if (strcmp(argv[i], "--suppressions") == 0 &&
strlen(argv[i]) == 14)
{
++i;
@ -169,14 +210,12 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
else if (strcmp(argv[i], "--xml") == 0)
_settings->_xml = true;
#ifndef NDEBUG
// Experimental: Write results in xml2 format
// Write results in xml2 format
else if (strcmp(argv[i], "--xml-version=2") == 0)
{
_settings->_xml = true;
_settings->_xml_version = 2;
}
#endif
// Only print something when there are errors
else if (strcmp(argv[i], "-q") == 0 || strcmp(argv[i], "--quiet") == 0)
@ -224,16 +263,34 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
// User define
else if (strncmp(argv[i], "-D", 2) == 0)
{
std::string define;
// "-D define"
if (strcmp(argv[i], "-D") == 0)
{
++i;
if (i >= argc || strncmp(argv[i], "-", 1) == 0 ||
strncmp(argv[i], "--", 2) == 0)
{
PrintMessage("cppcheck: argument to '-D' is missing");
return false;
}
define = argv[i];
}
// "-Ddefine"
else
{
define = 2 + argv[i];
}
if (!_settings->userDefines.empty())
_settings->userDefines += ";";
if (strcmp(argv[i], "-D") == 0)
_settings->userDefines += argv[++i];
else
_settings->userDefines += 2 + argv[i];
_settings->userDefines += define;
}
// Include paths
else if (strcmp(argv[i], "-I") == 0 || strncmp(argv[i], "-I", 2) == 0)
else if (strncmp(argv[i], "-I", 2) == 0)
{
std::string path;
@ -252,12 +309,12 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
// "-Ipath/"
else
{
path = argv[i];
path = path.substr(2);
path = 2 + argv[i];
}
path = Path::fromNativeSeparators(path);
// If path doesn't end with / or \, add it
if (path[path.length()-1] != '/' && path[path.length()-1] != '\\')
if (path[path.length()-1] != '/')
path += '/';
_settings->_includePaths.push_back(path);
@ -345,10 +402,9 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
// print all possible error messages..
else if (strcmp(argv[i], "--errorlist") == 0)
{
//_cppcheck->getErrorMessages();
_showErrorMessages = true;
_settings->_xml = true;
return true;
_exitAfterPrint = true;
}
// documentation..
@ -366,6 +422,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
while (doc2.find("\n\n\n") != std::string::npos)
doc2.erase(doc2.find("\n\n\n"), 1);
std::cout << doc2;
_exitAfterPrint = true;
return true;
}
@ -390,8 +447,6 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
_settings->_showtime = SHOWTIME_NONE;
}
// Rules are a debug feature
#ifndef NDEBUG
// Rule given at command line
else if (strncmp(argv[i], "--rule=", 7) == 0)
{
@ -438,13 +493,13 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
}
}
}
#endif
// Print help
else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0)
{
_pathnames.clear();
_showHelp = true;
_exitAfterPrint = true;
break;
}
@ -458,7 +513,7 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
}
else
_pathnames.push_back(argv[i]);
_pathnames.push_back(Path::fromNativeSeparators(argv[i]));
}
if (_settings->isEnabled("unusedFunctions") && _settings->_jobs > 1)
@ -472,15 +527,17 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
PrintMessage("--test-2-pass doesn't work with -j option yet.");
}
if (argc <= 1)
_showHelp = true;
if (_showHelp)
{
PrintHelp();
return true;
}
else if (_pathnames.empty())
// Print error only if we have "real" command and expect files
if (!_exitAfterPrint && _pathnames.empty())
{
PrintMessage("cppcheck: No C or C++ source files found.");
return false;
@ -497,7 +554,7 @@ void CmdLineParser::PrintHelp()
" cppcheck [--append=file] [-D<ID>] [--enable=<id>] [--error-exitcode=[n]]\n"
" [--exitcode-suppressions file] [--file-list=file.txt] [--force]\n"
" [--help] [-Idir] [--inline-suppr] [-j [jobs]] [--quiet]\n"
" [--report-progress] [--style] [--suppressions file.txt]\n"
" [--report-progress] [--style] [--suppressions-list=file.txt]\n"
" [--verbose] [--version] [--xml] [file or path1] [file or path]\n"
"\n"
"If path is given instead of filename, *.cpp, *.cxx, *.cc, *.c++ and *.c files\n"
@ -521,7 +578,8 @@ void CmdLineParser::PrintHelp()
" if arguments are not valid or if no input files are\n"
" provided. Note that your operating system can\n"
" modify this value, e.g. 256 can become 0.\n"
" --exitcode-suppressions file\n"
" --errorlist Print a list of all error messages in XML format.\n"
" --exitcode-suppressions=file\n"
" Used when certain messages should be displayed but\n"
" should not cause a non-zero exitcode.\n"
" --file-list=file Specify the files to check in a text file. One Filename per line.\n"
@ -532,14 +590,16 @@ void CmdLineParser::PrintHelp()
" several paths. First given path is checked first. If\n"
" paths are relative to source files, this is not needed\n"
" --inline-suppr Enable inline suppressions. Use them by placing one or\n"
" more comments in the form: // cppcheck-suppress memleak\n"
" more comments, like: // cppcheck-suppress warningId\n"
" on the lines before the warning to suppress.\n"
" -j [jobs] Start [jobs] threads to do the checking simultaneously.\n"
" -q, --quiet Only print error messages\n"
" --report-progress Report progress messages while checking a file.\n"
" -s, --style deprecated, use --enable=style\n"
" --suppressions file Suppress warnings listed in the file. Filename and line\n"
" are optional. The format of the single line in file is:\n"
" --suppressions-list=file\n"
" Suppress warnings listed in the file. Filename and line\n"
" are optional in the suppression file. The format of the\n"
" single line in the suppression file is:\n"
" [error id]:[filename]:[line]\n"
" --template '[text]' Format the error messages. E.g.\n"
" '{file}:{line},{severity},{id},{message}' or\n"

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -84,6 +84,14 @@ public:
return _showHelp;
}
/**
* Return if we should exit after printing version, help etc.
*/
bool ExitAfterPrinting() const
{
return _exitAfterPrint;
}
protected:
/**
@ -101,6 +109,7 @@ private:
bool _showHelp;
bool _showVersion;
bool _showErrorMessages;
bool _exitAfterPrint;
std::vector<std::string> _pathnames;
};

View File

@ -3,7 +3,7 @@
ProjectType="Visual C++"
Version="9,00"
Name="cppcheck"
ProjectGUID="{A610CB5D-FA83-3FC9-96AB-5689E3B50CEC}"
ProjectGUID="{7E69D6C6-32B2-32E1-BF56-A5BFBAF5E61F}"
Keyword="Qt4VSv1.0">
<Platforms>
<Platform
@ -158,11 +158,11 @@
<File
RelativePath="..\lib\executionpath.cpp" />
<File
RelativePath="..\lib\filelister.cpp" />
RelativePath="filelister.cpp" />
<File
RelativePath="..\lib\filelister_unix.cpp" />
RelativePath="filelister_unix.cpp" />
<File
RelativePath="..\lib\filelister_win32.cpp" />
RelativePath="filelister_win32.cpp" />
<File
RelativePath="main.cpp" />
<File
@ -233,11 +233,11 @@
<File
RelativePath="..\lib\executionpath.h" />
<File
RelativePath="..\lib\filelister.h" />
RelativePath="filelister.h" />
<File
RelativePath="..\lib\filelister_unix.h" />
RelativePath="filelister_unix.h" />
<File
RelativePath="..\lib\filelister_win32.h" />
RelativePath="filelister_win32.h" />
<File
RelativePath="..\lib\mathlib.h" />
<File

View File

@ -11,7 +11,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E3A516D8-D69D-32D7-A444-A3674D4B1FE8}</ProjectGuid>
<ProjectGuid>{42BC0E8E-9175-3B2D-B8B3-9EC5C36EF49A}</ProjectGuid>
<RootNamespace>cppcheck</RootNamespace>
<Keyword>Qt4VSv1.0</Keyword>
</PropertyGroup>
@ -134,9 +134,9 @@
<ClCompile Include="cppcheckexecutor.cpp" />
<ClCompile Include="..\lib\errorlogger.cpp" />
<ClCompile Include="..\lib\executionpath.cpp" />
<ClCompile Include="..\lib\filelister.cpp" />
<ClCompile Include="..\lib\filelister_unix.cpp" />
<ClCompile Include="..\lib\filelister_win32.cpp" />
<ClCompile Include="filelister.cpp" />
<ClCompile Include="filelister_unix.cpp" />
<ClCompile Include="filelister_win32.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="..\lib\mathlib.cpp" />
<ClCompile Include="..\lib\path.cpp" />
@ -171,9 +171,9 @@
<ClInclude Include="cppcheckexecutor.h" />
<ClInclude Include="..\lib\errorlogger.h" />
<ClInclude Include="..\lib\executionpath.h" />
<ClInclude Include="..\lib\filelister.h" />
<ClInclude Include="..\lib\filelister_unix.h" />
<ClInclude Include="..\lib\filelister_win32.h" />
<ClInclude Include="filelister.h" />
<ClInclude Include="filelister_unix.h" />
<ClInclude Include="filelister_win32.h" />
<ClInclude Include="..\lib\mathlib.h" />
<ClInclude Include="..\lib\path.h" />
<ClInclude Include="..\lib\preprocessor.h" />

View File

@ -66,13 +66,13 @@
<ClCompile Include="..\lib\executionpath.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\lib\filelister.cpp">
<ClCompile Include="filelister.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\lib\filelister_unix.cpp">
<ClCompile Include="filelister_unix.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\lib\filelister_win32.cpp">
<ClCompile Include="filelister_win32.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
@ -173,13 +173,13 @@
<ClInclude Include="..\lib\executionpath.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\lib\filelister.h">
<ClInclude Include="filelister.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\lib\filelister_unix.h">
<ClInclude Include="filelister_unix.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\lib\filelister_win32.h">
<ClInclude Include="filelister_win32.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\lib\mathlib.h">

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -24,10 +24,12 @@
#include <cstdlib> // EXIT_SUCCESS and EXIT_FAILURE
#include "cmdlineparser.h"
#include "filelister.h"
#include "path.h"
CppCheckExecutor::CppCheckExecutor()
{
time1 = 0;
errorlist = false;
}
CppCheckExecutor::~CppCheckExecutor()
@ -43,16 +45,36 @@ bool CppCheckExecutor::parseFromArgs(CppCheck *cppcheck, int argc, const char* c
if (success)
{
if (parser.GetShowVersion())
if (parser.GetShowVersion() && !parser.GetShowErrorMessages())
{
std::cout << "Cppcheck " << cppcheck->version() << std::endl;
return true;
}
if (parser.GetShowErrorMessages())
{
errorlist = true;
std::cout << ErrorLogger::ErrorMessage::getXMLHeader(_settings._xml_version);
cppcheck->getErrorMessages();
std::cout << ErrorLogger::ErrorMessage::getXMLFooter() << std::endl;
}
if (parser.ExitAfterPrinting())
std::exit(0);
}
// Check that all include paths exist
{
std::list<std::string>::const_iterator iter;
for (iter = _settings._includePaths.begin();
iter != _settings._includePaths.end();
++iter)
{
const std::string path(Path::toNativeSeparators(*iter));
if (!getFileLister()->isDirectory(path.c_str()))
{
std::cout << "cppcheck: error: Couldn't find path given by -I '" + path + "'" << std::endl;
return false;
}
}
}
@ -64,7 +86,7 @@ bool CppCheckExecutor::parseFromArgs(CppCheck *cppcheck, int argc, const char* c
// Execute recursiveAddFiles() to each given file parameter
std::vector<std::string>::const_iterator iter;
for (iter = pathnames.begin(); iter != pathnames.end(); ++iter)
getFileLister()->recursiveAddFiles(filenames, iter->c_str());
getFileLister()->recursiveAddFiles(filenames, Path::toNativeSeparators(iter->c_str()));
for (iter = filenames.begin(); iter != filenames.end(); ++iter)
cppcheck->addFile(*iter);
@ -182,7 +204,11 @@ void CppCheckExecutor::reportStatus(unsigned int index, unsigned int max)
void CppCheckExecutor::reportErr(const ErrorLogger::ErrorMessage &msg)
{
if (_settings._xml)
if (errorlist)
{
reportOut(msg.toXML(false, _settings._xml_version));
}
else if (_settings._xml)
{
reportErr(msg.toXML(_settings._verbose, _settings._xml_version));
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -102,6 +102,11 @@ private:
* Report progress time
*/
std::time_t time1;
/**
* Has --errorlist been given?
*/
bool errorlist;
};
#endif // CPPCHECKEXECUTOR_H

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -22,7 +22,7 @@
#include <vector>
#include <string>
/// @addtogroup Core
/// @addtogroup CLI
/// @{
/**
@ -49,15 +49,6 @@ public:
virtual void recursiveAddFiles(std::vector<std::string> &filenames,
const std::string &path) = 0;
/**
* @brief Compare filenames to see if they are the same.
* On Linux the comparison is case-sensitive. On Windows it is case-insensitive.
* @param fname1 one filename
* @param fname2 other filename
* @return true if the filenames match on the current platform
*/
virtual bool sameFileName(const std::string &fname1, const std::string &fname2) = 0;
/**
* @brief Check if the file extension indicates that it's a source file.
* Check if the file has source file extension: *.c;*.cpp;*.cxx;*.c++;*.cc;*.txx
@ -66,6 +57,11 @@ public:
*/
virtual bool acceptFile(const std::string &filename);
/**
* @brief Is given path a directory?
* @return returns true if the path is a directory
*/
virtual bool isDirectory(const std::string &path) = 0;
};
/** @brief get filelister (platform dependent implementation) */

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -31,6 +31,7 @@
#ifndef _WIN32
#include "path.h"
#include "filelister.h"
#include "filelister_unix.h"
@ -71,7 +72,7 @@ void FileListerUnix::recursiveAddFiles2(std::vector<std::string> &relative,
continue;
}
if (sameFileName(path,filename) || FileListerUnix::acceptFile(filename))
if (Path::sameFileName(path,filename) || FileListerUnix::acceptFile(filename))
{
relative.push_back(filename);
absolute.push_back(fname);
@ -93,14 +94,23 @@ void FileListerUnix::recursiveAddFiles(std::vector<std::string> &filenames, cons
recursiveAddFiles2(filenames, abs, path);
}
bool FileListerUnix::sameFileName(const std::string &fname1, const std::string &fname2)
bool FileListerUnix::isDirectory(const std::string &path)
{
#if defined(__linux__) || defined(__sun)
return bool(fname1 == fname2);
#endif
#ifdef __GNUC__
return bool(strcasecmp(fname1.c_str(), fname2.c_str()) == 0);
#endif
bool ret = false;
glob_t glob_results;
glob(path.c_str(), GLOB_MARK, 0, &glob_results);
if (glob_results.gl_pathc == 1)
{
const std::string glob_path = glob_results.gl_pathv[0];
if (!glob_path.empty() && glob_path[glob_path.size() - 1] == '/')
{
ret = true;
}
}
globfree(&glob_results);
return ret;
}
#endif // _WIN32

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -23,7 +23,7 @@
#include <string>
#include "filelister.h"
/// @addtogroup Core
/// @addtogroup CLI
/// @{
@ -31,8 +31,7 @@ class FileListerUnix : public FileLister
{
public:
virtual void recursiveAddFiles(std::vector<std::string> &filenames, const std::string &path);
virtual bool sameFileName(const std::string &fname1, const std::string &fname2);
// virtual static bool acceptFile(const std::string &filename);
virtual bool isDirectory(const std::string &path);
private:
#ifndef _WIN32
void recursiveAddFiles2(std::vector<std::string> &relative,

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -168,7 +168,7 @@ void FileListerWin32::recursiveAddFiles(std::vector<std::string> &filenames, con
// File
// If recursive is not used, accept all files given by user
if (sameFileName(path,ansiFfd) || FileLister::acceptFile(ansiFfd))
if (Path::sameFileName(path,ansiFfd) || FileLister::acceptFile(ansiFfd))
{
const std::string nativename = Path::fromNativeSeparators(fname.str());
filenames.push_back(nativename);
@ -192,17 +192,9 @@ void FileListerWin32::recursiveAddFiles(std::vector<std::string> &filenames, con
}
}
bool FileListerWin32::sameFileName(const std::string &fname1, const std::string &fname2)
bool FileListerWin32::isDirectory(const std::string &path)
{
#ifdef __GNUC__
return bool(strcasecmp(fname1.c_str(), fname2.c_str()) == 0);
#endif
#ifdef __BORLANDC__
return bool(stricmp(fname1.c_str(), fname2.c_str()) == 0);
#endif
#ifdef _MSC_VER
return bool(_stricmp(fname1.c_str(), fname2.c_str()) == 0);
#endif
return (MyIsDirectory(path) != FALSE);
}
#endif // _WIN32

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -23,7 +23,7 @@
#include <string>
#include "filelister.h"
/// @addtogroup Core
/// @addtogroup CLI
/// @{
@ -31,7 +31,7 @@ class FileListerWin32 : public FileLister
{
public:
virtual void recursiveAddFiles(std::vector<std::string> &filenames, const std::string &path);
virtual bool sameFileName(const std::string &fname1, const std::string &fname2);
virtual bool isDirectory(const std::string &path);
private:
};

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -25,6 +25,9 @@
#include "settings.h"
#include "errorlogger.h"
/// @addtogroup CLI
/// @{
/**
* This class will take a list of filenames and settings and check then
* all files using threads.
@ -95,4 +98,6 @@ private:
void operator=(const ThreadExecutor &);
};
/// @}
#endif // THREADEXECUTOR_H

View File

@ -3,10 +3,14 @@
<root name="."/>
<includedir>
<dir name="lib/"/>
<dir name="cli/"/>
<dir name="externals/"/>
<dir name="gui/temp/"/>
</includedir>
<paths>
<dir name="lib/"/>
<dir name="cli/"/>
<dir name="gui/"/>
<dir name="test/"/>
</paths>
</project>

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -27,7 +27,7 @@ AboutDialog::AboutDialog(const QString &version, QWidget *parent)
mUI.setupUi(this);
mUI.mVersion->setText(mUI.mVersion->text().arg(version));
QString url = "<a href=\"http://cppcheck.wiki.sourceforge.net/\">http://cppcheck.wiki.sourceforge.net/</a>";
QString url = "<a href=\"http://cppcheck.sourceforge.net/\">http://cppcheck.sourceforge.net/</a>";
mUI.mHomepage->setText(mUI.mHomepage->text().arg(url));
connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept()));
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -220,17 +220,17 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Standard</translation>
</message>
@ -250,379 +250,374 @@ kate -l(line) (file)</translation>
<translation>&amp;Symbolleisten</translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Prüfen</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>&amp;Bearbeiten</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;Lizenz...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>&amp;Autoren...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>Ü&amp;ber...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Dateien...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Strg+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Verzeichnis...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Strg+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>Dateien &amp;neu prüfen</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Strg+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Stoppen</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>Ergebnisse in Datei &amp;speichern...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Strg+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Beenden</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>Ergebnisse &amp;leeren</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Einstellungen</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>Alle &amp;auswählen</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>Alle a&amp;bwählen</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>Alle &amp;reduzieren</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>Alle &amp;erweitern</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation>&amp;Standard</translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation>Standardeinträge</translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation>Symbolleiste</translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation>&amp;Kategorien</translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation>Fehler-Kategorien</translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation>&amp;Inhalte</translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation>Kategorien</translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation>Öffnet die Hilfe-Inhalte</translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation>F1</translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Sprache</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Hilfe</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Dateien zum Überprüfen auswählen</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Verzeichnis zum Überprüfen auswählen</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>Kein passenden Dateien zum Überprüfen gefunden!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>Lizenz</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Autoren</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML-Dateien (*.xml);;Textdateien (*.txt);;CSV-Dateien (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Speichert die Berichtdatei</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML-Dateien (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Textdateien (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation>CSV-Dateien (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -638,85 +633,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Finnisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Englisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation>Niederländisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Schwedisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Deutsch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Russisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Polnisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -795,18 +790,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Falsche Sprache angegeben!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Sprachdatei %1 nicht gefunden!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Die Übersetzungen der Sprache %1 konnten nicht aus der Datei %2 geladen werden</translation>
@ -1012,85 +1007,106 @@ Legen Sie unter dem Menü Ansicht fest, welche Art von Fehlern angezeigt werden
<translation>Anzahl der Threads: </translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Alle #ifdef-Konfigurationen überprüfen</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Alle #ifdef-Konfigurationen überprüfen</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Vollständigen Dateipfad anzeigen</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>&quot;Keine Fehler gefunden&quot;-Meldung anzeigen, wenn keine Fehler gefunden werden</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Anwendungen</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Anwendung hinzufügen</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Anwendung löschen</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Anwendung ändern</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Als Standard-Anwendung verwenden</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Berichte</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Alle Fehler beim Erstellen von Berichten speichern</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Vollständigen Dateipfad in Berichten speichern</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Neue Anwendung hinzufügen</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Anwendung ändern</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -222,17 +222,17 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Standard</translation>
</message>
@ -252,379 +252,374 @@ kate -l(line) (file)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Check</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>&amp;Edit</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;License...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>A&amp;uthors...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>&amp;About...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Files...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Directory...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>&amp;Recheck files</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Stop</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>&amp;Save results to file...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Quit</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>&amp;Clear results</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Preferences</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>&amp;Check all</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>&amp;Uncheck all</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>Collapse &amp;all</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>&amp;Expand all</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Language</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Help</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Select files to check</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Select directory to check</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>No suitable files found to check!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>License</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Authors</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Save the report file</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -638,85 +633,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Finnish</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>English</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Swedish</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>German</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Russian</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Polish</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation>Serbian</translation>
</message>
@ -795,18 +790,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Incorrect language specified!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Could not find the file: %1!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Failed to load translation for language %1 from file %2</translation>
@ -1012,85 +1007,106 @@ To toggle what kind of errors are shown, open view menu.</translation>
<translation>Number of threads: </translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Check all #ifdef configurations</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Check all #ifdef configurations</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Show full path of files</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Show &quot;No errors found&quot; message when no errors found</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Applications</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Add application</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Delete application</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Modify application</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Set as default application</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Reports</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Save all errors when creating report</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Save full path to files in reports</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Add a new application</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Modify an application</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -224,17 +224,17 @@ kate -l(line) (file)
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Vakio</translation>
</message>
@ -254,379 +254,374 @@ kate -l(line) (file)
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Tarkista</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>&amp;Muokkaa</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;Lisenssi...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>&amp;Tekijät...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>&amp;Tietoa ohjelmasta Cppcheck...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Tiedostot...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Hakemisto...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>Tarkista tiedostot &amp;uudelleen</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Pysäytä</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>&amp;Tallenna tulokset tiedostoon...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Lopeta</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>&amp;Tyhjennä tulokset</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Asetukset</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>&amp;Valitse kaikki</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>&amp;Poista kaikista valinta</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>&amp;Pienennä kaikki</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>&amp;Laajenna kaikki</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Kieli</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Ohje</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Valitse tarkistettavat tiedostot</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Valitse tarkistettava hakemisto</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>Tarkistettavaksi sopivia tiedostoja ei löytynyt!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>Lisenssi</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Tekijät</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML-tiedostot (*.xml);;Tekstitiedostot (*.txt);;CSV-tiedostot (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Tallenna raportti</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML-tiedostot (*xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Tekstitiedostot (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -642,85 +637,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Suomi</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Englanti</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Ruotsi</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Saksa</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Venäjä</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Puola</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -799,18 +794,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Virheellinen kieli valittu!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Käännöstiedostoa %1 ei löytynyt!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Käänöksen lataaminen kielelle %1 tiedostosta %2 epäonnistui</translation>
@ -1016,85 +1011,106 @@ Määrittääksesi minkä tyyppisiä virheitä näytetään, avaa näkymä valik
<translation>Säikeiden lukumäärä: </translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Tarkista kaikki #ifdef kombinaatiot</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Tarkista kaikki #ifdef kombinaatiot</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Näytä tiedostojen täysi polku</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Näytä &quot;virheitä ei löytynyt&quot;-viesti jos virheitä ei löydy</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Ohjelmat</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Lisää ohjelma</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Poista ohjelma</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Muokkaa ohjelmaa</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Aseta oletusohjelmaksi</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Raportit</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Tallenna kaikki virheet raporttia luodessa</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Tallenna tiedostojen koko polku raportteihin</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Lisää uusi ohjelma</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Muokkaa ohjelmaa</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -208,12 +208,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
@ -234,341 +234,336 @@ kate -l(line) (file)</translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>(&amp;L)</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>(&amp;H)</translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>(&amp;L)...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>(&amp;u)...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>Cppcheckについて(&amp;A)...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>(&amp;F)...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>(&amp;D)...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>(&amp;R)</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>(&amp;S)...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>(&amp;Q)</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>(&amp;P)</translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation>(&amp;l)</translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation>(&amp;E)...</translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation>(&amp;h)</translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>(&amp;U)</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>(&amp;A)</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>(&amp;E)</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation>(&amp;S)</translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation>F1</translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation>(&amp;C)</translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation>XMLを開く(&amp;O)...</translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation>(&amp;R)...</translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation>(&amp;N)...</translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation>(&amp;L)</translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
@ -577,42 +572,42 @@ Do you want to stop the checking and exit Cppcheck?.</source>
Cppcheckを終了しますか.</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML (*.xml);; (*.txt);;CSV形式ファイル (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation> (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation>CSV形式ファイル (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -625,85 +620,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation>Cppcheck </translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation> (*.cppcheck);;All files(*.*)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -782,17 +777,17 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<translation> %1 !</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<translation type="unfinished"></translation>
</message>
@ -997,85 +992,106 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation>:</translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation> #ifdef </translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished"> #ifdef </translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>&quot;&quot;</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation>cppcheck内部警告をログに表示する</translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>/</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation></translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation>include </translation>
</message>

View File

@ -222,17 +222,17 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Standaard</translation>
</message>
@ -252,379 +252,374 @@ kate -l(line) (file)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Controleer</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>Be&amp;werken</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;Licentie...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>A&amp;uteurs...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>&amp;Over...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Bestanden...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Mappen...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>&amp;Opnieuw controleren</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Stop</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>&amp;Resultaten opslaan...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Afsluiten</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>&amp;Resultaten wissen</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Voorkeuren</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>&amp;Selecteer alles</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>Selecteer &amp;niets</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>Alles Inkl&amp;appen</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>Alles &amp;Uitklappen</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Taal</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Help</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Selecteer bestanden om te controleren</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Selecteer een map om te controleren</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>Geen geschikte bestanden gevonden om te controleren!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>Licentie</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Auteurs</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML bestanden (*.xml);;Tekst bestanden (*.txt);;CSV bestanden (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Rapport opslaan </translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML bestanden (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Tekst bestanden (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -638,85 +633,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Fins</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Engels</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation>Nederlands</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Zweeds</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Duits</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Russisch</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Pools</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -795,18 +790,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Ongeldige taal gespecifieerd!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Kon het taalbestand niet vinden: %1!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Kon de vertaling voor taal %1 in bestand %2 niet laden</translation>
@ -1012,85 +1007,106 @@ Gebruik het uitzicht menu om te selecteren welke fouten getoond worden.</transla
<translation>Aantal threads: </translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Controleer alle #ifdef combinaties</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Controleer alle #ifdef combinaties</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Toon het volledige pad van bestanden</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Toon &quot;Geen fouten gevonden&quot; indien geen fouten gevonden werden</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Applicaties</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Applicatie toevoegen</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Applicatie verwijderen</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Applicatie wijzigen</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Configureer als standaard applicatie</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Rapporten</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Alle fouten opslaan</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Volledig pad opslaan</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Nieuwe applicatie toevoegen</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Applicatie wijzigen</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -209,12 +209,12 @@ kate -l(line) (file)</oldsource>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation type="unfinished"></translation>
</message>
@ -235,409 +235,404 @@ kate -l(line) (file)</oldsource>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -646,59 +641,59 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -777,17 +772,17 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<translation type="unfinished"></translation>
</message>
@ -988,85 +983,106 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<source>Show full path of files</source>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show internal warnings in log</source>
<source>Show full path of files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -212,17 +212,17 @@ kate -l(line) (file)</oldsource>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation type="unfinished"></translation>
</message>
@ -242,379 +242,374 @@ kate -l(line) (file)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>Проверить</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>Правка</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>Лицензия...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>Авторы...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>О программе...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>Файлы...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>Каталог...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>Остановить</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>Сохранить отчёт в файл...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>Выход</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>Очистить отчёт</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>Параметры</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>Отметить все</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>Сбросить все</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>Свернуть все</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>Развернуть все</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>Язык</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>Помощь</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Выберите файлы для проверки</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Выберите каталог для проверки</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>Лицензия</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Авторы</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Текстовые файлы (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -630,85 +625,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Финский</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Английский</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Швецкий</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Немецкий</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Русский</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -787,18 +782,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Выбран неверный язык!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Ошибка загрузки переводов для языка %1 из файла %2</translation>
@ -1001,85 +996,106 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation>Количество потоков исполнения:</translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Проверять все варианты #ifdef конфигураций</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Проверять все варианты #ifdef конфигураций</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Показывать полные пути к файлам</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Показывать сообщение, если ошибок не найдено</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Отчёты</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Сохранять все ошибки при создании отчёта</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Сохранять полные пути к файлам в отчётах</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -222,17 +222,17 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Standard</translation>
</message>
@ -252,380 +252,375 @@ kate -l(line) (file)</translation>
<translation>Verktygsfält</translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Check</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>&amp;Redigera</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;Licens...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>&amp;Utvecklat av...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>&amp;Om...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Filer...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Katalog...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>Starta &amp;om check</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Stoppa</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>&amp;Spara resultat till fil...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Avsluta</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>&amp;Töm resultat</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Inställningar</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>&amp;Kryssa alla</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>Kryssa &amp;ur alla</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translatorcomment>Ingen bra översättning!</translatorcomment>
<translation>&amp;Fäll ihop alla</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>&amp;Expandera alla</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation>&amp;Standard</translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation>Standard poster</translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation>Verktygsfält</translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation>&amp;Kategorier</translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation>Fel kategorier</translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation>&amp;Innehåll</translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation>Kategorier</translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation>Öppna hjälp</translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation>F1</translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Språk</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Hjälp</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Välj filer att kontrollera</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Välj katalog som skall kontrolleras</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>Inga lämpliga filer hittades!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>Licens</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Utvecklare</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML filer (*.xml);;Text filer (*.txt);;CSV filer (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Spara rapport</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML filer (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Text filer (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation>CSV filer (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -641,85 +636,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Finska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Engelska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation>Nederländska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Svenska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Tyska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Ryska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Polska</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation type="unfinished"></translation>
</message>
@ -798,18 +793,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>valt språk är ej korrekt!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Språk filen %1 hittades ej!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Misslyckades med att ladda översättningen för %1 från filen %2</translation>
@ -1015,85 +1010,106 @@ För att ställa in vilka fel som skall visas använd visa menyn.</translation>
<translation>Antal trådar:</translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Kontrollera alla #ifdef konfigurationer</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Kontrollera alla #ifdef konfigurationer</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Visa den fulla sökvägen för filer</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Visa &quot;Inga fel hittades&quot; meddelande när inga fel hittas</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Program</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Lägg till program</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Ta bort program</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Ändra program</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Ange som standard program</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Rapporter</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Spara alla fel</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Spara fulla sökvägar</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Lägg till program</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Ändra program</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -222,17 +222,17 @@ kate -l(line) (file)</translation>
<name>MainWindow</name>
<message>
<location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="237"/>
<location filename="mainwindow.cpp" line="267"/>
<location filename="mainwindow.cpp" line="552"/>
<location filename="mainwindow.cpp" line="670"/>
<location filename="mainwindow.cpp" line="688"/>
<location filename="mainwindow.cpp" line="852"/>
<location filename="mainwindow.cpp" line="203"/>
<location filename="mainwindow.cpp" line="233"/>
<location filename="mainwindow.cpp" line="524"/>
<location filename="mainwindow.cpp" line="642"/>
<location filename="mainwindow.cpp" line="660"/>
<location filename="mainwindow.cpp" line="811"/>
<source>Cppcheck</source>
<translation>Cppcheck</translation>
</message>
<message>
<location filename="main.ui" line="156"/>
<location filename="main.ui" line="150"/>
<source>Standard</source>
<translation>Standard</translation>
</message>
@ -252,379 +252,374 @@ kate -l(line) (file)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="133"/>
<location filename="main.ui" line="128"/>
<source>&amp;Check</source>
<translation>&amp;Check</translation>
</message>
<message>
<location filename="main.ui" line="142"/>
<location filename="main.ui" line="137"/>
<source>&amp;Edit</source>
<translation>&amp;Edit</translation>
</message>
<message>
<location filename="main.ui" line="192"/>
<location filename="main.ui" line="186"/>
<source>&amp;License...</source>
<translation>&amp;License...</translation>
</message>
<message>
<location filename="main.ui" line="197"/>
<location filename="main.ui" line="191"/>
<source>A&amp;uthors...</source>
<translation>A&amp;uthors...</translation>
</message>
<message>
<location filename="main.ui" line="206"/>
<location filename="main.ui" line="200"/>
<source>&amp;About...</source>
<translation>&amp;About...</translation>
</message>
<message>
<location filename="main.ui" line="211"/>
<location filename="main.ui" line="205"/>
<source>&amp;Files...</source>
<translation>&amp;Files...</translation>
</message>
<message>
<location filename="main.ui" line="214"/>
<location filename="main.ui" line="217"/>
<location filename="main.ui" line="208"/>
<location filename="main.ui" line="211"/>
<source>Check files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="220"/>
<location filename="main.ui" line="214"/>
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
<message>
<location filename="main.ui" line="229"/>
<location filename="main.ui" line="223"/>
<source>&amp;Directory...</source>
<translation>&amp;Directory...</translation>
</message>
<message>
<location filename="main.ui" line="232"/>
<location filename="main.ui" line="235"/>
<location filename="main.ui" line="226"/>
<location filename="main.ui" line="229"/>
<source>Check directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="238"/>
<location filename="main.ui" line="232"/>
<source>Ctrl+D</source>
<translation>Ctrl+D</translation>
</message>
<message>
<location filename="main.ui" line="247"/>
<location filename="main.ui" line="241"/>
<source>&amp;Recheck files</source>
<translation>&amp;Recheck files</translation>
</message>
<message>
<location filename="main.ui" line="250"/>
<location filename="main.ui" line="244"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
<location filename="main.ui" line="259"/>
<location filename="main.ui" line="253"/>
<source>&amp;Stop</source>
<translation>&amp;Stop</translation>
</message>
<message>
<location filename="main.ui" line="262"/>
<location filename="main.ui" line="265"/>
<location filename="main.ui" line="256"/>
<location filename="main.ui" line="259"/>
<source>Stop checking</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="268"/>
<location filename="main.ui" line="262"/>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<location filename="main.ui" line="277"/>
<location filename="main.ui" line="271"/>
<source>&amp;Save results to file...</source>
<translation>&amp;Save results to file...</translation>
</message>
<message>
<location filename="main.ui" line="280"/>
<location filename="main.ui" line="274"/>
<source>Ctrl+S</source>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="main.ui" line="285"/>
<location filename="main.ui" line="279"/>
<source>&amp;Quit</source>
<translation>&amp;Quit</translation>
</message>
<message>
<location filename="main.ui" line="294"/>
<location filename="main.ui" line="288"/>
<source>&amp;Clear results</source>
<translation>&amp;Clear results</translation>
</message>
<message>
<location filename="main.ui" line="303"/>
<location filename="main.ui" line="297"/>
<source>&amp;Preferences</source>
<translation>&amp;Preferences</translation>
</message>
<message>
<location filename="main.ui" line="333"/>
<location filename="main.ui" line="327"/>
<source>Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="336"/>
<location filename="main.ui" line="339"/>
<location filename="main.ui" line="330"/>
<location filename="main.ui" line="333"/>
<source>Show errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="461"/>
<location filename="main.ui" line="455"/>
<source>Warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="464"/>
<location filename="main.ui" line="467"/>
<location filename="main.ui" line="458"/>
<location filename="main.ui" line="461"/>
<source>Show warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="479"/>
<location filename="main.ui" line="473"/>
<source>Performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="482"/>
<location filename="main.ui" line="485"/>
<location filename="main.ui" line="476"/>
<location filename="main.ui" line="479"/>
<source>Show performance warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="493"/>
<location filename="main.ui" line="487"/>
<source>Show &amp;hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="505"/>
<location filename="main.ui" line="499"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="508"/>
<location filename="main.ui" line="502"/>
<source>Show information messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="520"/>
<location filename="main.ui" line="514"/>
<source>Portability</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="523"/>
<location filename="main.ui" line="517"/>
<source>Show portability warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="344"/>
<location filename="main.ui" line="338"/>
<source>&amp;Check all</source>
<translation>&amp;Check all</translation>
</message>
<message>
<location filename="main.ui" line="349"/>
<location filename="main.ui" line="343"/>
<source>&amp;Uncheck all</source>
<translation>&amp;Uncheck all</translation>
</message>
<message>
<location filename="main.ui" line="354"/>
<location filename="main.ui" line="348"/>
<source>Collapse &amp;all</source>
<translation>Collapse &amp;all</translation>
</message>
<message>
<location filename="main.ui" line="359"/>
<location filename="main.ui" line="353"/>
<source>&amp;Expand all</source>
<translation>&amp;Expand all</translation>
</message>
<message>
<location filename="main.ui" line="367"/>
<location filename="main.ui" line="361"/>
<source>&amp;Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="370"/>
<location filename="main.ui" line="364"/>
<source>Standard items</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="386"/>
<location filename="main.ui" line="380"/>
<source>Toolbar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="394"/>
<location filename="main.ui" line="388"/>
<source>&amp;Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="397"/>
<location filename="main.ui" line="391"/>
<source>Error categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="402"/>
<location filename="main.ui" line="396"/>
<source>&amp;Open XML...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="411"/>
<location filename="main.ui" line="405"/>
<source>Open P&amp;roject File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="416"/>
<location filename="main.ui" line="410"/>
<source>&amp;New Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="421"/>
<location filename="main.ui" line="415"/>
<source>&amp;Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="424"/>
<location filename="main.ui" line="418"/>
<source>Log View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="432"/>
<location filename="main.ui" line="426"/>
<source>C&amp;lose Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="440"/>
<location filename="main.ui" line="434"/>
<source>&amp;Edit Project File...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="449"/>
<location filename="main.ui" line="443"/>
<source>&amp;Statistics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="375"/>
<location filename="main.ui" line="369"/>
<source>&amp;Contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="175"/>
<location filename="main.ui" line="169"/>
<source>Categories</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="315"/>
<location filename="main.ui" line="309"/>
<source>Style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="318"/>
<location filename="main.ui" line="321"/>
<location filename="main.ui" line="312"/>
<location filename="main.ui" line="315"/>
<source>Show style warnings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="378"/>
<location filename="main.ui" line="372"/>
<source>Open the help contents</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="381"/>
<location filename="main.ui" line="375"/>
<source>F1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="main.ui" line="118"/>
<source>&amp;Language</source>
<translation>&amp;Language</translation>
</message>
<message>
<location filename="main.ui" line="123"/>
<source>&amp;Help</source>
<translation>&amp;Help</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="283"/>
<location filename="mainwindow.cpp" line="249"/>
<source>Select files to check</source>
<translation>Select files to check</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="297"/>
<location filename="mainwindow.cpp" line="263"/>
<source>Select directory to check</source>
<translation>Select directory to check</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="238"/>
<location filename="mainwindow.cpp" line="204"/>
<source>No suitable files found to check!</source>
<translation>No suitable files found to check!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="595"/>
<location filename="mainwindow.cpp" line="567"/>
<source>License</source>
<translation>License</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="602"/>
<location filename="mainwindow.cpp" line="574"/>
<source>Authors</source>
<translation>Authors</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="610"/>
<location filename="mainwindow.cpp" line="582"/>
<source>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<translation>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="612"/>
<location filename="mainwindow.cpp" line="584"/>
<source>Save the report file</source>
<translation>Save the report file</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="471"/>
<location filename="mainwindow.cpp" line="620"/>
<location filename="mainwindow.cpp" line="443"/>
<location filename="mainwindow.cpp" line="592"/>
<source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="268"/>
<location filename="mainwindow.cpp" line="234"/>
<source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="340"/>
<location filename="mainwindow.cpp" line="783"/>
<location filename="mainwindow.cpp" line="829"/>
<location filename="mainwindow.cpp" line="306"/>
<location filename="mainwindow.cpp" line="742"/>
<location filename="mainwindow.cpp" line="788"/>
<source>Project: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="473"/>
<location filename="mainwindow.cpp" line="445"/>
<source>Open the report file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="548"/>
<location filename="mainwindow.cpp" line="520"/>
<source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="626"/>
<location filename="mainwindow.cpp" line="598"/>
<source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="632"/>
<location filename="mainwindow.cpp" line="604"/>
<source>CSV files (*.csv)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="672"/>
<location filename="mainwindow.cpp" line="644"/>
<source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="689"/>
<location filename="mainwindow.cpp" line="661"/>
<source>Failed to change the language:
%1
@ -638,85 +633,85 @@ Do you want to stop the checking and exit Cppcheck?.</source>
%1</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="709"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Cppcheck Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="750"/>
<location filename="mainwindow.cpp" line="709"/>
<source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="759"/>
<location filename="mainwindow.cpp" line="718"/>
<source>Failed to load help file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="773"/>
<location filename="mainwindow.cpp" line="818"/>
<location filename="mainwindow.cpp" line="732"/>
<location filename="mainwindow.cpp" line="777"/>
<source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="775"/>
<location filename="mainwindow.cpp" line="734"/>
<source>Select Project File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="820"/>
<location filename="mainwindow.cpp" line="779"/>
<source>Select Project Filename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="853"/>
<location filename="mainwindow.cpp" line="812"/>
<source>No project file loaded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="34"/>
<location filename="translationhandler.cpp" line="33"/>
<source>Finnish</source>
<translation>Finski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="32"/>
<location filename="translationhandler.cpp" line="31"/>
<source>English</source>
<translation>Engleski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="33"/>
<location filename="translationhandler.cpp" line="32"/>
<source>Dutch</source>
<translation>Holandski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="35"/>
<location filename="translationhandler.cpp" line="34"/>
<source>Swedish</source>
<translation>Švedski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="36"/>
<location filename="translationhandler.cpp" line="35"/>
<source>German</source>
<translation>Nemački</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="37"/>
<location filename="translationhandler.cpp" line="36"/>
<source>Russian</source>
<translation>Ruski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="38"/>
<location filename="translationhandler.cpp" line="37"/>
<source>Polish</source>
<translation>Poljski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="39"/>
<location filename="translationhandler.cpp" line="38"/>
<source>Japanese</source>
<oldsource>Japanease</oldsource>
<translation type="unfinished">Japanski</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="40"/>
<location filename="translationhandler.cpp" line="39"/>
<source>Serbian</source>
<translation>Srpski</translation>
</message>
@ -795,18 +790,18 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context>
<name>QObject</name>
<message>
<location filename="translationhandler.cpp" line="97"/>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source>
<translation>Incorrect language specified!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="107"/>
<location filename="translationhandler.cpp" line="106"/>
<source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource>
<translation>Could not find the file: %1!</translation>
</message>
<message>
<location filename="translationhandler.cpp" line="113"/>
<location filename="translationhandler.cpp" line="112"/>
<source>Failed to load translation for language %1 from file %2</source>
<oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Failed to load translation for language %1 from file %2</translation>
@ -1012,85 +1007,106 @@ To toggle what kind of errors are shown, open view menu.</translation>
<translation>Number of threads: </translation>
</message>
<message>
<location filename="settings.ui" line="124"/>
<source>Check all #ifdef configurations</source>
<translation>Check all #ifdef configurations</translation>
<location filename="settings.ui" line="109"/>
<source>Ideal count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="131"/>
<location filename="settings.ui" line="116"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Check all #ifdef configurations</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<source>Show full path of files</source>
<translation>Show full path of files</translation>
</message>
<message>
<location filename="settings.ui" line="138"/>
<location filename="settings.ui" line="152"/>
<source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Show &quot;No errors found&quot; message when no errors found</translation>
</message>
<message>
<location filename="settings.ui" line="145"/>
<location filename="settings.ui" line="159"/>
<source>Show internal warnings in log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="152"/>
<location filename="settings.ui" line="166"/>
<source>Enable inline suppressions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="173"/>
<location filename="settings.ui" line="187"/>
<source>Applications</source>
<translation>Applications</translation>
</message>
<message>
<location filename="settings.ui" line="182"/>
<location filename="settings.ui" line="196"/>
<source>Add application</source>
<translation>Add application</translation>
</message>
<message>
<location filename="settings.ui" line="189"/>
<location filename="settings.ui" line="203"/>
<source>Delete application</source>
<translation>Delete application</translation>
</message>
<message>
<location filename="settings.ui" line="196"/>
<location filename="settings.ui" line="210"/>
<source>Modify application</source>
<translation>Modify application</translation>
</message>
<message>
<location filename="settings.ui" line="203"/>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation>Set as default application</translation>
</message>
<message>
<location filename="settings.ui" line="211"/>
<location filename="settings.ui" line="225"/>
<source>Reports</source>
<translation>Reports</translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<location filename="settings.ui" line="231"/>
<source>Save all errors when creating report</source>
<translation>Save all errors when creating report</translation>
</message>
<message>
<location filename="settings.ui" line="224"/>
<location filename="settings.ui" line="238"/>
<source>Save full path to files in reports</source>
<translation>Save full path to files in reports</translation>
</message>
<message>
<location filename="settings.ui" line="259"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="settingsdialog.cpp" line="138"/>
<location filename="settingsdialog.cpp" line="81"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="161"/>
<source>Add a new application</source>
<translation>Add a new application</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="171"/>
<location filename="settingsdialog.cpp" line="194"/>
<source>Modify an application</source>
<translation>Modify an application</translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="236"/>
<location filename="settingsdialog.cpp" line="259"/>
<source>Select include directory</source>
<translation type="unfinished"></translation>
</message>

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -65,7 +65,7 @@ void CsvReport::WriteError(const ErrorItem &error)
QString line;
const QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]);
line += QString("%1,%2,").arg(file).arg(error.lines[error.lines.size() - 1]);
line += QString("%1,%2").arg(error.severity).arg(error.message);
line += QString("%1,%2").arg(error.severity).arg(error.summary);
mTxtWriter << line << endl;
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -43,9 +43,11 @@ ErrorItem::ErrorItem(const ErrorLine &line)
QString ErrorItem::ToString() const
{
QString str = file + " - " + id + " - " + severity +"\n";
str += " " + summary;
str += "\n" + message;
str += summary + "\n";
str += message + "\n";
for (int i = 0; i < files.size(); i++)
str += " " + files[i] + ": " + lines[i] + "\n";
{
str += " " + files[i] + ": " + QString::number(lines[i]) + "\n";
}
return str;
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -30,7 +30,7 @@ class ErrorLine;
/**
* @brief A class containing error data for one error.
*
*
* The paths are stored with internal ("/") separators. Only when we show the
* path or copy if for user (to clipboard) we convert to native separators.
* Full path is stored instead of relative path for flexibility. It is easy

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<includedir>
<dir name="../lib"/>
</includedir>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<includedir>
<dir name="../lib"/>
<dir name="temp"/>
</includedir>
</project>

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -113,11 +113,6 @@
<addaction name="mActionViewLog"/>
<addaction name="mActionViewStats"/>
</widget>
<widget class="QMenu" name="mMenuLanguage">
<property name="title">
<string>&amp;Language</string>
</property>
</widget>
<widget class="QMenu" name="mMenuHelp">
<property name="title">
<string>&amp;Help</string>
@ -148,7 +143,6 @@
<addaction name="mMenuEdit"/>
<addaction name="mMenuView"/>
<addaction name="mMenuCheck"/>
<addaction name="mMenuLanguage"/>
<addaction name="mMenuHelp"/>
</widget>
<widget class="QToolBar" name="mToolBarMain">

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -98,7 +98,6 @@ MainWindow::MainWindow() :
connect(mUI.mActionHelpContents, SIGNAL(triggered()), this, SLOT(OpenHelpContents()));
CreateLanguageMenuItems();
LoadSettings();
mThread->Initialize(mUI.mResults);
@ -128,39 +127,6 @@ MainWindow::~MainWindow()
delete mProject;
}
void MainWindow::CreateLanguageMenuItems()
{
QStringList languages = mTranslation->GetNames();
for (int i = 0; i < languages.size(); i++)
{
//Create an action for each language
//Language name is pre translated
QAction *temp = new QAction(languages[i], this);
temp->setCheckable(true);
//Add the action to menu
mUI.mMenuLanguage->addAction(temp);
//Add action to the group
mLanguages->addAction(temp);
//Check it if it's the value stored to settings
if (i == mSettings->value(SETTINGS_LANGUAGE, 0).toInt())
{
temp->setChecked(true);
}
else
{
temp->setChecked(false);
}
}
connect(mLanguages, SIGNAL(triggered(QAction *)),
this, SLOT(MapLanguage(QAction *)));
}
void MainWindow::LoadSettings()
{
if (mSettings->value(SETTINGS_WINDOW_MAXIMIZED, false).toBool())
@ -392,6 +358,7 @@ Settings MainWindow::GetCppcheckSettings()
result.addEnabled("style");
result.addEnabled("information");
result.addEnabled("missingInclude");
result.debug = false;
result.debugwarnings = mSettings->value(SETTINGS_SHOW_DEBUG_WARNINGS, false).toBool();
result._errorsOnly = false;
@ -436,7 +403,7 @@ void MainWindow::CheckDone()
void MainWindow::ProgramSettings()
{
SettingsDialog dialog(mSettings, mApplications, this);
SettingsDialog dialog(mSettings, mApplications, mTranslation, this);
if (dialog.exec() == QDialog::Accepted)
{
dialog.SaveSettingValues();
@ -444,6 +411,10 @@ void MainWindow::ProgramSettings()
dialog.SaveFullPath(),
dialog.SaveAllErrors(),
dialog.ShowNoErrorsMessage());
const int currentLang = mTranslation->GetCurrentLanguage();
const int newLang = mSettings->value(SETTINGS_LANGUAGE, 0).toInt();
if (currentLang != newLang)
SetLanguage(newLang);
}
}
@ -711,19 +682,6 @@ void MainWindow::SetLanguage(int index)
}
}
void MainWindow::MapLanguage(QAction *action)
{
//Find the action that has the language that user clicked
QList<QAction *> actions = mLanguages->actions();
for (int i = 0; i < actions.size(); i++)
{
if (actions[i] == action)
{
SetLanguage(i);
}
}
}
void MainWindow::AboutToShowViewMenu()
{
mUI.mActionToolBarMain->setChecked(mUI.mToolBarMain->isVisible());

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -212,12 +212,6 @@ protected slots:
*/
void ResultsAdded();
/**
* @brief Slot for changing the program's language
*
*/
void MapLanguage(QAction *);
/**
* @brief Slot for showing/hiding standard toolbar
*/
@ -259,12 +253,6 @@ protected slots:
protected:
/**
* @brief Create menu items to change language
*
*/
void CreateLanguageMenuItems();
/**
* @brief Set current language
* @param index Index of the language to set

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>589</width>
<height>281</height>
<height>313</height>
</rect>
</property>
<property name="windowTitle">
@ -135,7 +135,7 @@
<item>
<widget class="QCheckBox" name="mForce">
<property name="text">
<string>Check all #ifdef configurations</string>
<string>Force checking all #ifdef configurations</string>
</property>
</widget>
</item>
@ -254,6 +254,20 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Language</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QListWidget" name="mListLanguages">
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -30,15 +30,18 @@
#include "settingsdialog.h"
#include "applicationdialog.h"
#include "applicationlist.h"
#include "translationhandler.h"
#include "common.h"
SettingsDialog::SettingsDialog(QSettings *programSettings,
ApplicationList *list,
TranslationHandler *translator,
QWidget *parent) :
QDialog(parent),
mSettings(programSettings),
mApplications(list),
mTempApplications(new ApplicationList(this))
mTempApplications(new ApplicationList(this)),
mTranslator(translator)
{
mUI.setupUi(this);
mTempApplications->Copy(list);
@ -78,6 +81,7 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
mUI.mLblIdealThreads->setText(tr("N/A"));
LoadSettings();
InitTranslationsList();
}
SettingsDialog::~SettingsDialog()
@ -85,6 +89,17 @@ SettingsDialog::~SettingsDialog()
SaveSettings();
}
void SettingsDialog::InitTranslationsList()
{
QStringList languages = mTranslator->GetNames();
foreach(const QString lang, languages)
{
mUI.mListLanguages->addItem(lang);
}
const int current = mTranslator->GetCurrentLanguage();
mUI.mListLanguages->setCurrentRow(current);
}
Qt::CheckState SettingsDialog::BoolToCheckState(bool yes) const
{
if (yes)
@ -133,6 +148,7 @@ void SettingsDialog::SaveSettingValues()
SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS);
SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS);
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, mUI.mEditIncludePaths->text());
mSettings->setValue(SETTINGS_LANGUAGE, mUI.mListLanguages->currentRow());
}
void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name)

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -27,6 +27,7 @@
class QSettings;
class QWidget;
class ApplicationList;
class TranslationHandler;
/// @addtogroup GUI
/// @{
@ -41,6 +42,7 @@ class SettingsDialog : public QDialog
public:
SettingsDialog(QSettings *programSettings,
ApplicationList *list,
TranslationHandler *translator,
QWidget *parent = 0);
virtual ~SettingsDialog();
@ -163,6 +165,10 @@ protected:
*/
bool CheckStateToBool(Qt::CheckState state) const;
/**
* @brief Populate the translations list.
*/
void InitTranslationsList();
/**
* @brief Settings
@ -183,6 +189,12 @@ protected:
*/
ApplicationList *mTempApplications;
/**
* @brief List of translations.
*
*/
TranslationHandler *mTranslator;
/**
* @brief Dialog from UI designer
*

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -16,12 +16,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "translationhandler.h"
#include <QApplication>
#include <QFile>
#include <QDebug>
#include <QLocale>
#include "translationhandler.h"
TranslationHandler::TranslationHandler(QObject *parent) :
QObject(parent),

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -76,7 +76,7 @@ void TxtReport::WriteError(const ErrorItem &error)
}
}
line += QString("(%1) %2").arg(error.severity).arg(error.message);
line += QString("(%1) %2").arg(error.severity).arg(error.summary);
mTxtWriter << line << endl;
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -159,6 +159,16 @@ ErrorLine XmlReport::ReadError(QXmlStreamReader *reader)
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

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,7 +0,0 @@
cd..
msbuild cppcheck.cbproj /target:clean
msbuild cppcheck.cbproj /target:build /property:"config=release" > htdocs\bcb.txt
cppcheck --all --style --unused-functions src 2> htdocs\cppcheck-results.txt

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -21,6 +21,7 @@
//---------------------------------------------------------------------------
#include "checkautovariables.h"
#include "symboldatabase.h"
#include <sstream>
#include <iostream>
@ -140,6 +141,8 @@ void CheckAutoVariables::autoVariables()
// Which variables have an unknown type?
std::set<unsigned int> unknown_type;
const SymbolDatabase * const symbolDatabase = _tokenizer->getSymbolDatabase();
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
@ -192,7 +195,7 @@ void CheckAutoVariables::autoVariables()
{
addVD(tok->next()->varId());
if (!tok->isStandardType() &&
NULL == Token::findmatch(_tokenizer->tokens(), ("struct|class " + tok->str()).c_str()))
!symbolDatabase->isClassOrStruct(tok->str()))
{
unknown_type.insert(tok->next()->varId());
}

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -289,7 +289,9 @@ static const Token *for_init(const Token *tok, unsigned int &varid, std::string
/** Parse for condition */
static bool for_condition(const Token * const tok2, unsigned int varid, std::string &min_value, std::string &max_value, std::string &strindex, bool &maxMinFlipped)
{
if (Token::Match(tok2, "%varid% < %num% ;", varid))
if (Token::Match(tok2, "%varid% < %num% ;", varid) ||
Token::Match(tok2, "%varid% != %num% ; ++ %varid%", varid) ||
Token::Match(tok2, "%varid% != %num% ; %varid% ++", varid))
{
maxMinFlipped = false;
const MathLib::bigint value = MathLib::toLongNumber(tok2->strAt(2));
@ -300,7 +302,9 @@ static bool for_condition(const Token * const tok2, unsigned int varid, std::str
maxMinFlipped = false;
max_value = tok2->strAt(2);
}
else if (Token::Match(tok2, " %num% < %varid% ;", varid))
else if (Token::Match(tok2, " %num% < %varid% ;", varid) ||
Token::Match(tok2, "%num% != %varid% ; ++ %varid%", varid) ||
Token::Match(tok2, "%num% != %varid% ; %varid% ++", varid))
{
maxMinFlipped = true;
const MathLib::bigint value = MathLib::toLongNumber(tok2->str());
@ -532,7 +536,7 @@ void CheckBufferOverrun::parse_for_body(const Token *tok2, const ArrayInfo &arra
void CheckBufferOverrun::checkFunctionCall(const Token &tok, unsigned int par, const ArrayInfo &arrayInfo)
void CheckBufferOverrun::checkFunctionParameter(const Token &tok, unsigned int par, const ArrayInfo &arrayInfo)
{
// total_size : which parameter in function call takes the total size?
std::map<std::string, unsigned int> total_size;
@ -717,6 +721,42 @@ void CheckBufferOverrun::checkFunctionCall(const Token &tok, unsigned int par, c
}
void CheckBufferOverrun::checkFunctionCall(const Token *tok, const ArrayInfo &arrayInfo)
{
// 1st parameter..
if (Token::Match(tok->tokAt(2), "%varid% ,|)", arrayInfo.varid))
checkFunctionParameter(*tok, 1, arrayInfo);
else if (Token::Match(tok->tokAt(2), "%varid% + %num% ,|)", arrayInfo.varid))
{
const ArrayInfo ai(arrayInfo.limit(MathLib::toLongNumber(tok->strAt(4))));
checkFunctionParameter(*tok, 1, ai);
}
// goto 2nd parameter and check it..
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
{
if (tok2->str() == "(")
{
tok2 = tok2->link();
continue;
}
if (tok2->str() == ";" || tok2->str() == ")")
break;
if (tok2->str() == ",")
{
if (Token::Match(tok2, ", %varid% ,|)", arrayInfo.varid))
checkFunctionParameter(*tok, 2, arrayInfo);
else if (Token::Match(tok2, ", %varid% + %num% ,|)", arrayInfo.varid))
{
const ArrayInfo ai(arrayInfo.limit(MathLib::toLongNumber(tok2->strAt(3))));
checkFunctionParameter(*tok, 2, ai);
}
break;
}
}
}
void CheckBufferOverrun::checkScope(const Token *tok, const std::vector<std::string> &varname, const MathLib::bigint size, const MathLib::bigint total_size, unsigned int varid)
{
@ -823,9 +863,9 @@ void CheckBufferOverrun::checkScope(const Token *tok, const std::vector<std::str
(unsigned int)(total_size / size),
(unsigned int)size);
if (Token::Match(tok, ("%var% ( " + varnames + " ,").c_str()))
checkFunctionCall(*tok, 1, arrayInfo);
checkFunctionParameter(*tok, 1, arrayInfo);
if (Token::Match(tok, ("%var% ( %var% , " + varnames + " ,").c_str()))
checkFunctionCall(*tok, 2, arrayInfo);
checkFunctionParameter(*tok, 2, arrayInfo);
}
// Loop..
@ -930,10 +970,15 @@ void CheckBufferOverrun::checkScope(const Token *tok, const std::vector<std::str
outOfBounds(tok->tokAt(4 + varc), "snprintf size");
}
// Function calls not handled
// Check function call..
if (Token::Match(tok, "%var% ("))
{
continue;
// No varid => function calls are not handled
if (varid == 0)
continue;
const ArrayInfo arrayInfo(varid, varnames, size, total_size / size);
checkFunctionCall(tok, arrayInfo);
}
// undefined behaviour: result of pointer arithmetic is out of bounds
@ -1077,37 +1122,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const ArrayInfo &arrayInfo
// Check function call..
if (Token::Match(tok, "%var% ("))
{
// 1st parameter..
if (Token::Match(tok->tokAt(2), "%varid% ,|)", arrayInfo.varid))
checkFunctionCall(*tok, 1, arrayInfo);
else if (Token::Match(tok->tokAt(2), "%varid% + %num% ,|)", arrayInfo.varid))
{
const ArrayInfo ai(arrayInfo.limit(MathLib::toLongNumber(tok->strAt(4))));
checkFunctionCall(*tok, 1, ai);
}
// goto 2nd parameter and check it..
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
{
if (tok2->str() == "(")
{
tok2 = tok2->link();
continue;
}
if (tok2->str() == ";" || tok2->str() == ")")
break;
if (tok2->str() == ",")
{
if (Token::Match(tok2, ", %varid% ,|)", arrayInfo.varid))
checkFunctionCall(*tok, 2, arrayInfo);
else if (Token::Match(tok2, ", %varid% + %num% ,|)", arrayInfo.varid))
{
const ArrayInfo ai(arrayInfo.limit(MathLib::toLongNumber(tok2->strAt(3))));
checkFunctionCall(*tok, 2, ai);
}
break;
}
}
checkFunctionCall(tok, arrayInfo);
}
if (_settings->_checkCodingStyle)

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -169,12 +169,19 @@ public:
void parse_for_body(const Token *tok2, const ArrayInfo &arrayInfo, const std::string &strindex, bool condition_out_of_bounds, unsigned int counter_varid, const std::string &min_counter_value, const std::string &max_counter_value);
/**
* Helper function for checkScope - check a function call
* Helper function for checkFunctionCall - check a function parameter
* \param tok token for the function name
* \param par on what parameter is the array used
* \param arrayInfo the array information
*/
void checkFunctionCall(const Token &tok, const unsigned int par, const ArrayInfo &arrayInfo);
void checkFunctionParameter(const Token &tok, const unsigned int par, const ArrayInfo &arrayInfo);
/**
* Helper function that checks if the array is used and if so calls the checkFunctionCall
* @param tok token that matches "%var% ("
* @param arrayInfo the array information
*/
void checkFunctionCall(const Token *tok, const ArrayInfo &arrayInfo);
void arrayIndexOutOfBounds(const Token *tok, MathLib::bigint size, MathLib::bigint index);
void arrayIndexOutOfBounds(const Token *tok, const ArrayInfo &arrayInfo, const std::vector<MathLib::bigint> &index);

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -110,7 +110,7 @@ private:
*/
void createSymbolDatabase();
SymbolDatabase *symbolDatabase;
const SymbolDatabase *symbolDatabase;
// Reporting errors..
void noConstructorError(const Token *tok, const std::string &classname, bool isStruct);
@ -163,13 +163,72 @@ private:
}
// operatorEqRetRefThis helper function
void checkReturnPtrThis(const SymbolDatabase::SpaceInfo *info, const SymbolDatabase::Func *func, const Token *tok, const Token *last);
void checkReturnPtrThis(const Scope *scope, const Function *func, const Token *tok, const Token *last);
// operatorEqToSelf helper functions
bool hasDeallocation(const Token *first, const Token *last);
bool hasAssignSelf(const Token *first, const Token *last, const Token *rhs);
// checkConst helper functions
bool isMemberVar(const Scope *scope, const Token *tok);
bool isConstMemberFunc(const Scope *scope, const Token *tok);
bool checkConstFunc(const Scope *scope, const Token *tok);
/** @brief check if this function is virtual in the base classes */
bool isVirtualFunc(const Scope *scope, const Token *functionToken) const;
// constructors helper function
/** @brief Information about a member variable. Used when checking for uninitialized variables */
struct Usage
{
Usage() : assign(false), init(false) { }
/** @brief has this variable been assigned? */
bool assign;
/** @brief has this variable been initialized? */
bool init;
};
bool isBaseClassFunc(const Token *tok, const Scope *scope);
/**
* @brief assign a variable in the varlist
* @param varname name of variable to mark assigned
* @param scope pointer to variable Scope
* @param usage reference to usage vector
*/
void assignVar(const std::string &varname, const Scope *scope, std::vector<Usage> &usage);
/**
* @brief initialize a variable in the varlist
* @param varname name of variable to mark initialized
* @param scope pointer to variable Scope
* @param usage reference to usage vector
*/
void initVar(const std::string &varname, const Scope *scope, std::vector<Usage> &usage);
/**
* @brief set all variables in list assigned
* @param usage reference to usage vector
*/
void assignAllVar(std::vector<Usage> &usage);
/**
* @brief set all variables in list not assigned and not initialized
* @param usage reference to usage vector
*/
void clearAllVar(std::vector<Usage> &usage);
/**
* @brief parse a scope for a constructor or member function and set the "init" flags in the provided varlist
* @param func reference to the function that should be checked
* @param callstack the function doesn't look into recursive function calls.
* @param scope pointer to variable Scope
* @param usage reference to usage vector
*/
void initializeVarList(const Function &func, std::list<std::string> &callstack, const Scope *scope, std::vector<Usage> &usage);
bool canNotCopy(const Scope *scope) const;
};
/// @}
//---------------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -106,7 +106,7 @@ void CheckExceptionSafety::deallocThrow()
bool globalVar = false;
for (const Token *tok2 = _tokenizer->tokens(); tok2; tok2 = tok2->next())
{
if (tok->varId() == varid)
if (tok2->varId() == varid)
{
globalVar = true;
break;

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -333,7 +333,7 @@ void CheckMemoryLeak::memleakError(const Token *tok, const std::string &varname)
void CheckMemoryLeak::memleakUponReallocFailureError(const Token *tok, const std::string &varname)
{
reportErr(tok, Severity::error, "memleakOnRealloc", "Common realloc mistake: \"" + varname + "\" nulled but not freed upon failure");
reportErr(tok, Severity::error, "memleakOnRealloc", "Common realloc mistake: \'" + varname + "\' nulled but not freed upon failure");
}
void CheckMemoryLeak::resourceLeakError(const Token *tok, const std::string &varname)
@ -565,19 +565,19 @@ void CheckMemoryLeakInFunction::parse_noreturn()
noreturn.insert("errx");
noreturn.insert("verrx");
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
// parse this function to check if it contains an "exit" call..
unsigned int indentlevel = 1;
for (const Token *tok2 = info->classStart->next(); tok2; tok2 = tok2->next())
for (const Token *tok2 = scope->classStart->next(); tok2; tok2 = tok2->next())
{
if (tok2->str() == "{")
++indentlevel;
@ -587,12 +587,18 @@ void CheckMemoryLeakInFunction::parse_noreturn()
if (indentlevel == 0)
break;
}
if (Token::Match(tok2, "[;{}] exit ("))
if (Token::Match(tok2->previous(), "[;{}] exit ("))
{
noreturn.insert(info->className);
noreturn.insert(scope->className);
break;
}
}
// This function is not a noreturn function
if (indentlevel == 0)
{
notnoreturn.insert(scope->className);
}
}
}
@ -733,7 +739,17 @@ const char * CheckMemoryLeakInFunction::call_func(const Token *tok, std::list<co
// how many parameters is there in the function call?
int numpar = countParameters(tok);
if (numpar <= 0)
{
// Taking return value => it is not a noreturn function
if (tok->strAt(-1) == "=")
return NULL;
// Function is not noreturn
if (notnoreturn.find(funcname) != notnoreturn.end())
return NULL;
return (tok->previous()->str() != "=") ? "callfunc" : NULL;
}
unsigned int par = 1;
unsigned int parlevel = 0;
@ -838,6 +854,10 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
{
Token *rethead = 0, *rettail = 0;
// variables whose value depends on if(!var). If one of these variables
// is used in a if-condition then generate "ifv" instead of "if".
std::set<unsigned int> extravar;
// The first token should be ";"
rethead = new Token(0);
rethead->str(";");
@ -845,8 +865,6 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
rethead->fileIndex(tok->fileIndex());
rettail = rethead;
bool isloop = false;
int indentlevel = 0;
int parlevel = 0;
for (; tok; tok = tok->next())
@ -864,15 +882,59 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
--indentlevel;
}
if (tok->str() == "(")
else if (tok->str() == "(")
++parlevel;
else if (tok->str() == ")")
--parlevel;
isloop &= (parlevel > 0);
if (parlevel == 0 && tok->str() == ";")
addtoken(&rettail, tok, ";");
// Start of new statement.. check if the statement has anything interesting
if (Token::Match(tok, "[;{}]") && varid > 0 && parlevel == 0)
{
if (Token::Match(tok->next(), "[{};]"))
continue;
// function calls are interesting..
const Token *tok2 = tok;
while (Token::Match(tok2->next(), "%var% ."))
tok2 = tok2->tokAt(2);
if (Token::Match(tok2->next(), "%var% ("))
;
else if (Token::Match(tok->next(), "continue|break|return|throw|goto|do|else"))
;
else
{
const Token *skipToToken = 0;
// scan statement for interesting keywords / varid
for (tok2 = tok->next(); tok2; tok2 = tok2->next())
{
if (tok2->str() == ";")
{
// nothing interesting found => skip this statement
skipToToken = tok2->previous();
break;
}
if (tok2->varId() == varid ||
tok2->str() == ":" || tok2->str() == "{" || tok2->str() == "}")
{
break;
}
}
if (skipToToken)
{
tok = skipToToken;
continue;
}
}
}
if (varid == 0)
{
if (!callstack.empty() && Token::Match(tok, "[;{}] __cppcheck_lock|__cppcheck_unlock ( ) ;"))
@ -947,6 +1009,8 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
addtoken(&rettail, tok, ";");
realloc = true;
tok = tok->tokAt(2);
if (Token::Match(tok, "%var% ("))
tok = tok->next()->link();
continue;
}
}
@ -1027,8 +1091,7 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
}
}
if (Token::Match(tok->previous(), "[;{})=] %var%") ||
Token::Match(tok->previous(), "| %var%"))
if (Token::Match(tok->previous(), "[;{})=|] %var%"))
{
AllocType dealloc = getDeallocationType(tok, varid);
@ -1049,6 +1112,9 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
callstack.pop_back();
}
dealloctype = dealloc;
if (tok->strAt(2) == "(")
tok = tok->tokAt(2)->link();
continue;
}
}
@ -1080,14 +1146,30 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
// Make sure the "use" will not be added
tok = tok->next()->link();
continue;
}
else if (Token::simpleMatch(tok, "if (") && notvar(tok->tokAt(2), varid, true))
{
addtoken(&rettail, tok, "if(!var)");
// parse the if-body.
// if a variable is assigned then add variable to "extravar".
for (const Token *tok2 = tok->next()->link()->tokAt(2); tok2; tok2 = tok2->next())
{
if (tok2->str() == "{")
tok2 = tok2->link();
else if (tok2->str() == "}")
break;
else if (Token::Match(tok2, "%var% ="))
extravar.insert(tok2->varId());
}
tok = tok->next()->link();
continue;
}
else
{
// Check if the condition depends on var somehow..
// Check if the condition depends on var or extravar somehow..
bool dep = false;
int innerParlevel = 0;
for (const Token *tok2 = tok->next(); tok2; tok2 = tok2->next())
@ -1138,6 +1220,10 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
break;
}
}
if (tok2->varId() && extravar.find(tok2->varId()) != extravar.end())
{
dep = true;
}
}
if (Token::Match(tok, "if ( ! %varid% &&", varid))
@ -1155,9 +1241,8 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
addtoken(&rettail, tok, (dep ? "ifv" : "if"));
}
tok = tok->next();
if (tok->link())
tok = tok->link();
tok = tok->next()->link();
continue;
}
}
}
@ -1165,25 +1250,30 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
if ((tok->str() == "else") || (tok->str() == "switch"))
{
addtoken(&rettail, tok, tok->str());
if (tok->str() == "switch")
tok = tok->next()->link();
continue;
}
else if ((tok->str() == "case"))
if ((tok->str() == "case"))
{
addtoken(&rettail, tok, "case");
addtoken(&rettail, tok, ";");
if (Token::Match(tok, "case %any% :"))
tok = tok->tokAt(2);
continue;
}
else if ((tok->str() == "default"))
if ((tok->str() == "default"))
{
addtoken(&rettail, tok, "default");
addtoken(&rettail, tok, ";");
continue;
}
// Loops..
else if ((tok->str() == "for") || (tok->str() == "while"))
{
isloop = true;
if (Token::simpleMatch(tok, "while ( true )") ||
Token::simpleMatch(tok, "for ( ; ; )"))
{
@ -1230,14 +1320,35 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
}
addtoken(&rettail, tok, "loop");
if (varid > 0)
{
unsigned int parlevel2 = 0;
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
{
if (tok2->str() == "(")
++parlevel2;
else if (tok2->str() == ")")
{
if (parlevel2 > 0)
--parlevel2;
else
break;
}
if (notvar(tok2, varid))
{
addtoken(&rettail, tok2, "!var");
break;
}
}
}
continue;
}
else if ((tok->str() == "do"))
if ((tok->str() == "do"))
{
addtoken(&rettail, tok, "do");
}
if (varid > 0 && isloop && notvar(tok, varid))
{
addtoken(&rettail, tok, "!var");
continue;
}
// continue / break..
@ -2380,25 +2491,25 @@ void CheckMemoryLeakInFunction::checkScope(const Token *Tok1, const std::string
//---------------------------------------------------------------------------
void CheckMemoryLeakInFunction::checkReallocUsage()
{
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
// Record the varid's of the function parameters
std::set<unsigned int> parameterVarIds;
for (const Token *tok2 = info->classDef->next(); tok2 && tok2->str() != ")"; tok2 = tok2->next())
for (const Token *tok2 = scope->classDef->next(); tok2 && tok2->str() != ")"; tok2 = tok2->next())
{
if (tok2->varId() != 0)
parameterVarIds.insert(tok2->varId());
}
const Token *tok = info->classStart;
const Token *tok = scope->classStart;
const Token *startOfFunction = tok;
// Search for the "var = realloc(var, 100);" pattern within this function
@ -2415,14 +2526,25 @@ void CheckMemoryLeakInFunction::checkReallocUsage()
}
if (tok->varId() > 0 &&
Token::Match(tok, "%var% = realloc|g_try_realloc ( %var% ,") &&
Token::Match(tok, "%var% = realloc|g_try_realloc ( %var% , %any% ) ;|}") &&
tok->varId() == tok->tokAt(4)->varId() &&
parameterVarIds.find(tok->varId()) == parameterVarIds.end())
{
// Check that another copy of the pointer wasn't saved earlier in the function
if (!Token::findmatch(startOfFunction, "%var% = %varid% ;", tok->varId()) &&
!Token::findmatch(startOfFunction, "[{};] %varid% = %var% [;=]", tok->varId()))
memleakUponReallocFailureError(tok, tok->str());
if (Token::findmatch(startOfFunction, "%var% = %varid% ;", tok->varId()) ||
Token::findmatch(startOfFunction, "[{};] %varid% = %var% [;=]", tok->varId()))
continue;
// Check that the allocation isn't followed immediately by an 'if (!var) { error(); }' that might handle failure
if (Token::Match(tok->tokAt(9), "if ( ! %varid% ) {", tok->varId()))
{
const Token* tokEndBrace = tok->tokAt(14)->link();
if (tokEndBrace && Token::simpleMatch(tokEndBrace->tokAt(-2), ") ;") &&
Token::Match(tokEndBrace->tokAt(-2)->link()->tokAt(-2), "{|}|; %var% ("))
continue;
}
memleakUponReallocFailureError(tok, tok->str());
}
}
}
@ -2522,19 +2644,19 @@ void CheckMemoryLeakInFunction::check()
// fill the "noreturn"
parse_noreturn();
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
const Token *tok = info->classStart;
const Token *tok1 = info->classDef->next();
bool classmember = info->functionOf != NULL;
const Token *tok = scope->classStart;
const Token *tok1 = scope->classDef->next();
bool classmember = scope->functionOf != NULL;
parseFunctionScope(tok, tok1, classmember);
}
@ -2577,41 +2699,41 @@ void CheckMemoryLeakInFunction::check()
void CheckMemoryLeakInClass::check()
{
SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
std::list<SymbolDatabase::SpaceInfo *>::iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
const SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check classes and structures
if (info->type == SymbolDatabase::SpaceInfo::Class)
if (scope->type == Scope::eClass)
{
std::list<SymbolDatabase::Var>::const_iterator var;
for (var = info->varlist.begin(); var != info->varlist.end(); ++var)
std::list<Variable>::const_iterator var;
for (var = scope->varlist.begin(); var != scope->varlist.end(); ++var)
{
if (!var->isStatic && var->token->previous()->str() == "*")
if (!var->isStatic() && var->nameToken()->previous()->str() == "*")
{
// allocation but no deallocation of private variables in public function..
if (var->token->tokAt(-2)->isStandardType())
if (var->nameToken()->tokAt(-2)->isStandardType())
{
if (var->access == SymbolDatabase::Private)
checkPublicFunctions(info, var->token);
if (var->isPrivate())
checkPublicFunctions(scope, var->nameToken());
variable(info, var->token);
variable(scope, var->nameToken());
}
// known class?
else if (var->type)
else if (var->type())
{
// not derived and no constructor?
if (var->type->derivedFrom.empty() && var->type->numConstructors == 0)
// not derived?
if (var->type()->derivedFrom.empty())
{
if (var->access == SymbolDatabase::Private)
checkPublicFunctions(info, var->token);
if (var->isPrivate())
checkPublicFunctions(scope, var->nameToken());
variable(info, var->token);
variable(scope, var->nameToken());
}
}
}
@ -2621,10 +2743,10 @@ void CheckMemoryLeakInClass::check()
}
void CheckMemoryLeakInClass::variable(const SymbolDatabase::SpaceInfo *classinfo, const Token *tokVarname)
void CheckMemoryLeakInClass::variable(const Scope *scope, const Token *tokVarname)
{
const std::string varname = tokVarname->strAt(0);
const std::string classname = classinfo->className;
const std::string classname = scope->className;
// Check if member variable has been allocated and deallocated..
CheckMemoryLeak::AllocType Alloc = CheckMemoryLeak::No;
@ -2634,12 +2756,12 @@ void CheckMemoryLeakInClass::variable(const SymbolDatabase::SpaceInfo *classinfo
bool deallocInDestructor = false;
// Inspect member functions
std::list<SymbolDatabase::Func>::const_iterator func;
for (func = classinfo->functionList.begin(); func != classinfo->functionList.end(); ++func)
std::list<Function>::const_iterator func;
for (func = scope->functionList.begin(); func != scope->functionList.end(); ++func)
{
const Token *functionToken = func->token;
const bool constructor = func->type == SymbolDatabase::Func::Constructor;
const bool destructor = func->type == SymbolDatabase::Func::Destructor;
const bool constructor = func->type == Function::eConstructor;
const bool destructor = func->type == Function::eDestructor;
unsigned int indent = 0;
bool initlist = false;
for (const Token *tok = functionToken; tok; tok = tok->next())
@ -2673,7 +2795,7 @@ void CheckMemoryLeakInClass::variable(const SymbolDatabase::SpaceInfo *classinfo
// Foo::var1 = ..
// bail out when not same class
if (Token::simpleMatch(tok->previous(), "::") &&
tok->strAt(-2) != classinfo->className)
tok->strAt(-2) != scope->className)
return;
AllocType alloc = getAllocationType(tok->tokAt((indent > 0) ? 2 : 3), 0);
@ -2704,7 +2826,7 @@ void CheckMemoryLeakInClass::variable(const SymbolDatabase::SpaceInfo *classinfo
AllocType dealloc = getDeallocationType(tok, varname);
if (dealloc == No)
{
std::string temp = classinfo->className + " :: " + varname;
std::string temp = scope->className + " :: " + varname;
dealloc = getDeallocationType(tok, temp);
}
if (dealloc == No)
@ -2757,7 +2879,7 @@ void CheckMemoryLeakInClass::variable(const SymbolDatabase::SpaceInfo *classinfo
}
void CheckMemoryLeakInClass::checkPublicFunctions(const SymbolDatabase::SpaceInfo *spaceinfo, const Token *classtok)
void CheckMemoryLeakInClass::checkPublicFunctions(const Scope *scope, const Token *classtok)
{
// Check that public functions deallocate the pointers that they allocate.
// There is no checking how these functions are used and therefore it
@ -2769,12 +2891,12 @@ void CheckMemoryLeakInClass::checkPublicFunctions(const SymbolDatabase::SpaceInf
// Parse public functions..
// If they allocate member variables, they should also deallocate
std::list<SymbolDatabase::Func>::const_iterator func;
std::list<Function>::const_iterator func;
for (func = spaceinfo->functionList.begin(); func != spaceinfo->functionList.end(); ++func)
for (func = scope->functionList.begin(); func != scope->functionList.end(); ++func)
{
if (func->type != SymbolDatabase::Func::Constructor &&
func->access == SymbolDatabase::Public && func->hasBody)
if (func->type != Function::eConstructor &&
func->access == Public && func->hasBody)
{
const Token *tok2 = func->token;
while (tok2->str() != "{")
@ -2786,7 +2908,7 @@ void CheckMemoryLeakInClass::checkPublicFunctions(const SymbolDatabase::SpaceInf
publicAllocationError(tok2, tok2->strAt(1));
}
else if (Token::Match(tok2, "{|}|; %type% :: %varid% =", varid) &&
tok2->next()->str() == spaceinfo->className)
tok2->next()->str() == scope->className)
{
const CheckMemoryLeak::AllocType alloc = getAllocationType(tok2->tokAt(5), varid);
if (alloc != CheckMemoryLeak::No)
@ -2979,7 +3101,8 @@ void CheckMemoryLeakStructMember::check()
else if (tok3->str() == "return")
{
// Returning from function without deallocating struct member?
if (!Token::Match(tok3, "return %varid% ;", structid))
if (!Token::Match(tok3, "return %varid% ;", structid) &&
!Token::Match(tok3, "return & %varid% .", structid))
{
memoryLeak(tok3, (vartok->str() + "." + tok2->strAt(2)).c_str(), Malloc);
}
@ -3042,20 +3165,20 @@ void CheckMemoryLeakNoVar::check()
c.analyse(_tokenizer->tokens(), uvarFunctions);
}
SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
// goto the "}" that ends the executable scope..
const Token *tok = info->classEnd;
const Token *tok = scope->classEnd;
// parse the executable scope until tok is reached...
for (const Token *tok2 = tok->link(); tok2 && tok2 != tok; tok2 = tok2->next())

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -349,7 +349,10 @@ public:
/** Function names for functions that are "noreturn" */
std::set<std::string> noreturn;
SymbolDatabase *symbolDatabase;
/** Function names for functions that are not "noreturn" */
std::set<std::string> notnoreturn;
const SymbolDatabase *symbolDatabase;
};
@ -384,10 +387,10 @@ public:
void check();
private:
void variable(const SymbolDatabase::SpaceInfo *spaceinfo, const Token *tokVarname);
void variable(const Scope *scope, const Token *tokVarname);
/** Public functions: possible double-allocation */
void checkPublicFunctions(const SymbolDatabase::SpaceInfo *spaceinfo, const Token *classtok);
void checkPublicFunctions(const Scope *scope, const Token *classtok);
void publicAllocationError(const Token *tok, const std::string &varname);
void getErrorMessages(ErrorLogger * /*errorLogger*/, const Settings * /*settings*/)

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -32,6 +32,16 @@ CheckNullPointer instance;
//---------------------------------------------------------------------------
/** Is string uppercase? */
bool CheckNullPointer::isUpper(const std::string &str)
{
for (unsigned int i = 0; i < str.length(); ++i)
{
if (str[i] >= 'a' && str[i] <= 'z')
return false;
}
return true;
}
/**
* @brief parse a function call and extract information about variable usage
@ -59,6 +69,15 @@ void CheckNullPointer::parseFunctionCall(const Token &tok, std::list<const Token
functionNames1.insert("strndup");
functionNames1.insert("strlen");
functionNames1.insert("strstr");
functionNames1.insert("fclose");
functionNames1.insert("feof");
functionNames1.insert("fread");
functionNames1.insert("fwrite");
functionNames1.insert("fseek");
functionNames1.insert("ftell");
functionNames1.insert("fgetpos");
functionNames1.insert("fsetpos");
functionNames1.insert("rewind");
}
// standard functions that dereference second parameter..
@ -461,7 +480,21 @@ void CheckNullPointer::nullPointerByDeRefAndChec()
break;
}
if (tok1->varId() == varid)
if (tok1->str() == ")" && Token::Match(tok1->link()->previous(), "while ( %varid%", varid))
{
break;
}
if (tok1->str() == ")" && Token::simpleMatch(tok1->link()->previous(), "sizeof ("))
{
tok1 = tok1->link()->previous();
continue;
}
if (tok1->str() == "break")
break;
if (tok1->varId() == varid && !Token::Match(tok1->previous(), "[?:]"))
{
// unknown : this is set by isPointerDeRef if it is
// uncertain
@ -518,6 +551,17 @@ void CheckNullPointer::nullPointerByCheckAndDeRef()
// - if there are logical operators
// - if (x) { } else { ... }
// If the if-body ends with a unknown macro then bailout
{
// goto the end paranthesis
const Token *endpar = tok->next()->link();
const Token *endbody = endpar ? endpar->next()->link() : 0;
if (endbody &&
Token::Match(endbody->tokAt(-3), "[;{}] %var% ;") &&
isUpper(endbody->tokAt(-2)->str()))
continue;
}
// vartok : token for the variable
const Token *vartok = 0;
if (Token::Match(tok, "if ( ! %var% ) {"))
@ -526,6 +570,9 @@ void CheckNullPointer::nullPointerByCheckAndDeRef()
vartok = tok->tokAt(4);
else if (Token::Match(tok, "if ( %var% == NULL|0 ) {"))
vartok = tok->tokAt(2);
else if (Token::Match(tok, "if|while ( %var% ) {") &&
!Token::simpleMatch(tok->tokAt(4)->link(), "} else"))
vartok = tok->tokAt(2);
else
continue;
@ -541,12 +588,24 @@ void CheckNullPointer::nullPointerByCheckAndDeRef()
// if this is true then it is known that the pointer is null
bool null = true;
// start token = inside the if-body
const Token *tok1 = tok->next()->link()->tokAt(2);
if (Token::Match(tok, "if|while ( %var% )"))
{
// pointer might be null
null = false;
// start token = first token after the if/while body
tok1 = tok1->previous()->link()->next();
}
// Name of the pointer
const std::string &pointerName = vartok->str();
// Count { and } for tok2
unsigned int indentlevel = 1;
for (const Token *tok2 = tok->next()->link()->tokAt(2); tok2; tok2 = tok2->next())
for (const Token *tok2 = tok1; tok2; tok2 = tok2->next())
{
if (tok2->str() == "{")
++indentlevel;
@ -564,7 +623,7 @@ void CheckNullPointer::nullPointerByCheckAndDeRef()
}
}
if (Token::Match(tok2, "goto|return|continue|break|throw|if"))
if (Token::Match(tok2, "goto|return|continue|break|throw|if|switch"))
{
if (Token::Match(tok2, "return * %varid%", varid))
nullPointerError(tok2, tok->strAt(3));

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -60,6 +60,9 @@ public:
checkNullPointer.executionPaths();
}
/** Is string uppercase? */
static bool isUpper(const std::string &str);
/**
* @brief parse a function call and extract information about variable usage
* @param tok first token

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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

View File

@ -1,6 +1,6 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2010 Daniel Marjamäki and Cppcheck team.
* 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
@ -35,6 +35,60 @@ CheckOther instance;
//---------------------------------------------------------------------------
void CheckOther::clarifyCalculation()
{
if (!_settings->_checkCodingStyle)
return;
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if (tok->str() == "?")
{
// condition
const Token *cond = tok->previous();
if (cond->isName() || cond->isNumber())
cond = cond->previous();
else if (cond->str() == ")")
cond = cond->link()->previous();
else
continue;
// multiplication
if (cond->str() == "*")
cond = cond->previous();
else
continue;
// skip previous multiplications..
while (cond && cond->strAt(-1) == "*" && (cond->isName() || cond->isNumber()))
cond = cond->tokAt(-2);
if (!cond)
continue;
// first multiplication operand
if (cond->str() == ")")
{
clarifyCalculationError(cond);
}
else if (cond->isName() || cond->isNumber())
{
if (Token::Match(cond->previous(),"return|+|-|,|("))
clarifyCalculationError(cond);
}
}
}
}
void CheckOther::clarifyCalculationError(const Token *tok)
{
reportError(tok,
Severity::information,
"clarifyCalculation",
"Please clarify precedence: 'a*b?..'\n"
"Found a suspicious multiplication of condition. Please use parantheses to clarify the code. "
"The code 'a*b?1:2' should be written as either '(a*b)?1:2' or 'a*(b?1:2)'.");
}
void CheckOther::warningOldStylePointerCast()
{
@ -78,6 +132,64 @@ void CheckOther::checkFflushOnInputStream()
}
}
void CheckOther::checkSizeofForArrayParameter()
{
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if (Token::Match(tok, "sizeof ( %var% )") || Token::Match(tok, "sizeof %var% "))
{
int tokIdx = 1;
if (tok->tokAt(tokIdx)->str() == "(")
{
++tokIdx;
}
if (tok->tokAt(tokIdx)->varId() > 0)
{
const Token *declTok = Token::findmatch(_tokenizer->tokens(), "%varid%", tok->tokAt(tokIdx)->varId());
if (declTok)
{
if (Token::simpleMatch(declTok->next(), "["))
{
declTok = declTok->next()->link();
// multidimensional array
while (Token::simpleMatch(declTok->next(), "["))
{
declTok = declTok->next()->link();
}
if (!(Token::Match(declTok->next(), "= %str%")) && !(Token::simpleMatch(declTok->next(), "= {")) && !(Token::simpleMatch(declTok->next(), ";")))
{
if (Token::simpleMatch(declTok->next(), ","))
{
declTok = declTok->next();
while (!Token::simpleMatch(declTok, ";"))
{
if (Token::simpleMatch(declTok, ")"))
{
sizeofForArrayParameterError(tok);
break;
}
if (Token::Match(declTok, "(|[|{"))
{
declTok = declTok->link();
}
declTok = declTok->next();
}
}
}
if (Token::simpleMatch(declTok->next(), ")"))
{
sizeofForArrayParameterError(tok);
}
}
}
}
}
}
}
//---------------------------------------------------------------------------
// switch (x)
// {
@ -254,7 +366,11 @@ void CheckOther::checkIncorrectLogicOperator()
{
const unsigned int varId = term1Tok->varId();
if (!varId)
{
tok = Token::findmatch(endTok->next(), conditionPattern);
endTok = tok ? tok->next()->link() : NULL;
continue;
}
firstConstant = term1Tok->tokAt(2)->str();
if (Token::Match(term2Tok, "%varid% != %num%", varId))
@ -338,19 +454,18 @@ void CheckOther::invalidFunctionUsage()
// strtol and strtoul..
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if ((tok->str() != "strtol") && (tok->str() != "strtoul"))
if (!Token::Match(tok, "strtol|strtoul ("))
continue;
// Locate the third parameter of the function call..
int parlevel = 0;
int param = 1;
for (const Token *tok2 = tok->next(); tok2; tok2 = tok2->next())
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
{
if (tok2->str() == "(")
++parlevel;
tok2 = tok2->link();
else if (tok2->str() == ")")
--parlevel;
else if (parlevel == 1 && tok2->str() == ",")
break;
else if (tok2->str() == ",")
{
++param;
if (param == 3)
@ -451,6 +566,22 @@ void CheckOther::invalidScanf()
}
}
void CheckOther::sizeofForArrayParameterError(const Token *tok)
{
reportError(tok, Severity::error,
"sizeofwithsilentarraypointer", "Using sizeof for array given as function argument "
"returns the size of pointer.\n"
"Giving array as function parameter and then using sizeof-operator for the array "
"argument. In this case the sizeof-operator returns the size of pointer (in the "
"system). It does not return the size of the whole array in bytes as might be "
"expected. For example, this code:\n"
" int f(char a[100]) {\n"
" return sizeof(a);\n"
" }\n"
" returns 4 (in 32-bit systems) or 8 (in 64-bit systems) instead of 100 (the "
"size of the array in bytes)."
);
}
void CheckOther::invalidScanfError(const Token *tok)
{
reportError(tok, Severity::warning,
@ -559,27 +690,27 @@ static bool isOp(const Token *tok)
/**
* @brief This class is used to capture the control flow within a function.
*/
class Scope
class ScopeInfo
{
public:
Scope() : _token(NULL), _parent(NULL) { }
Scope(const Token *token, Scope *parent_) : _token(token), _parent(parent_) { }
~Scope();
ScopeInfo() : _token(NULL), _parent(NULL) { }
ScopeInfo(const Token *token, ScopeInfo *parent_) : _token(token), _parent(parent_) { }
~ScopeInfo();
Scope *parent()
ScopeInfo *parent()
{
return _parent;
}
Scope *addChild(const Token *token);
void remove(Scope *scope);
ScopeInfo *addChild(const Token *token);
void remove(ScopeInfo *scope);
private:
const Token *_token;
Scope *_parent;
std::list<Scope *> _children;
ScopeInfo *_parent;
std::list<ScopeInfo *> _children;
};
Scope::~Scope()
ScopeInfo::~ScopeInfo()
{
while (!_children.empty())
{
@ -588,18 +719,18 @@ Scope::~Scope()
}
}
Scope *Scope::addChild(const Token *token)
ScopeInfo *ScopeInfo::addChild(const Token *token)
{
Scope *temp = new Scope(token, this);
ScopeInfo *temp = new ScopeInfo(token, this);
_children.push_back(temp);
return temp;
}
void Scope::remove(Scope *scope)
void ScopeInfo::remove(ScopeInfo *scope)
{
std::list<Scope *>::iterator it;
std::list<ScopeInfo *>::iterator it;
for (it = _children.begin(); it != _children.end(); ++it)
{
@ -626,7 +757,7 @@ public:
public:
VariableUsage(const Token *name = 0,
VariableType type = standard,
Scope *scope = NULL,
ScopeInfo *scope = NULL,
bool read = false,
bool write = false,
bool modified = false,
@ -656,13 +787,13 @@ public:
const Token *_name;
VariableType _type;
Scope *_scope;
ScopeInfo *_scope;
bool _read;
bool _write;
bool _modified; // read/modify/write
bool _allocateMemory;
std::set<unsigned int> _aliases;
std::set<Scope *> _assignments;
std::set<ScopeInfo *> _assignments;
};
typedef std::map<unsigned int, VariableUsage> VariableMap;
@ -675,7 +806,7 @@ public:
{
return _varUsage;
}
void addVar(const Token *name, VariableType type, Scope *scope, bool write_);
void addVar(const Token *name, VariableType type, ScopeInfo *scope, bool write_);
void allocateMemory(unsigned int varid);
void read(unsigned int varid);
void readAliases(unsigned int varid);
@ -794,7 +925,7 @@ void Variables::eraseAll(unsigned int varid)
void Variables::addVar(const Token *name,
VariableType type,
Scope *scope,
ScopeInfo *scope,
bool write_)
{
if (name->varId() > 0)
@ -952,7 +1083,7 @@ Variables::VariableUsage *Variables::find(unsigned int varid)
return 0;
}
static int doAssignment(Variables &variables, const Token *tok, bool dereference, Scope *scope)
static int doAssignment(Variables &variables, const Token *tok, bool dereference, ScopeInfo *scope)
{
int next = 0;
@ -1087,7 +1218,7 @@ static int doAssignment(Variables &variables, const Token *tok, bool dereference
// not in same scope as declaration
else
{
std::set<Scope *>::iterator assignment;
std::set<ScopeInfo *>::iterator assignment;
// check for an assignment in this scope
assignment = var1->_assignments.find(scope);
@ -1155,7 +1286,7 @@ static int doAssignment(Variables &variables, const Token *tok, bool dereference
variables.clearAliases(varid1);
else
{
std::set<Scope *>::iterator assignment;
std::set<ScopeInfo *>::iterator assignment;
// check for an assignment in this scope
assignment = var1->_assignments.find(scope);
@ -1235,16 +1366,16 @@ void CheckOther::functionVariableUsage()
return;
// Parse all executing scopes..
SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *info = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (info->type != Scope::eFunction)
continue;
// First token for the current scope..
@ -1254,8 +1385,8 @@ void CheckOther::functionVariableUsage()
Variables variables;
// scopes
Scope scopes;
Scope *scope = &scopes;
ScopeInfo scopes;
ScopeInfo *scope = &scopes;
unsigned int indentlevel = 0;
for (const Token *tok = tok1; tok; tok = tok->next())
@ -1264,7 +1395,7 @@ void CheckOther::functionVariableUsage()
{
// replace the head node when found
if (indentlevel == 0)
scopes = Scope(tok, NULL);
scopes = ScopeInfo(tok, NULL);
// add the new scope
else
scope = scope->addChild(tok);
@ -1691,7 +1822,7 @@ void CheckOther::functionVariableUsage()
if (!start->tokAt(3)->isStandardType())
{
// lookup the type
const SymbolDatabase::SpaceInfo *type = symbolDatabase->findVarType(info, start->tokAt(3));
const Scope *type = symbolDatabase->findVariableType(info, start->tokAt(3));
// unknown type?
if (!type)
@ -1699,7 +1830,7 @@ void CheckOther::functionVariableUsage()
// has default constructor or
// has members with unknown type or default constructor
else if (type->needInitialization == SymbolDatabase::SpaceInfo::False)
else if (type->needInitialization == Scope::False)
allocate = false;
}
}
@ -1876,7 +2007,7 @@ void CheckOther::unusedVariableError(const Token *tok, const std::string &varnam
void CheckOther::allocatedButUnusedVariableError(const Token *tok, const std::string &varname)
{
reportError(tok, Severity::style, "unusedVariable", "Variable '" + varname + "' is allocated memory that is never used");
reportError(tok, Severity::style, "unusedAllocatedMemory", "Variable '" + varname + "' is allocated memory that is never used");
}
void CheckOther::unreadVariableError(const Token *tok, const std::string &varname)
@ -1903,21 +2034,21 @@ void CheckOther::checkVariableScope()
if (!_settings->isEnabled("information"))
return;
SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
std::list<SymbolDatabase::SpaceInfo *>::const_iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
// Walk through all tokens..
int indentlevel = 0;
for (const Token *tok = info->classStart; tok; tok = tok->next())
for (const Token *tok = scope->classStart; tok; tok = tok->next())
{
// Skip function local class and struct declarations..
if ((tok->str() == "class") || (tok->str() == "struct") || (tok->str() == "union"))
@ -2005,7 +2136,17 @@ void CheckOther::lookupVar(const Token *tok1, const std::string &varname)
{
if (tok->str() == "{")
{
++indentlevel;
if (tok->strAt(-1) == "=")
{
if (Token::findmatch(tok, varname.c_str(), tok->link()))
{
return;
}
tok = tok->link();
}
else
++indentlevel;
}
else if (tok->str() == "}")
@ -2101,6 +2242,8 @@ void CheckOther::checkConstantFunctionParameter()
if (!_settings->_checkCodingStyle)
return;
const SymbolDatabase * const symbolDatabase = _tokenizer->getSymbolDatabase();
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if (Token::Match(tok, "[,(] const std :: %type% %var% [,)]"))
@ -2141,8 +2284,7 @@ void CheckOther::checkConstantFunctionParameter()
else if (Token::Match(tok, "[,(] const %type% %var% [,)]"))
{
// Check if type is a struct or class.
const std::string pattern(std::string("class|struct ") + tok->strAt(2));
if (Token::findmatch(_tokenizer->tokens(), pattern.c_str()))
if (symbolDatabase->isClassOrStruct(tok->strAt(2)))
{
passedByValueError(tok, tok->strAt(3));
}
@ -2343,52 +2485,32 @@ void CheckOther::checkIncompleteStatement()
if (!_settings->_checkCodingStyle)
return;
int parlevel = 0;
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if (tok->str() == "(")
++parlevel;
else if (tok->str() == ")")
--parlevel;
tok = tok->link();
if (parlevel != 0)
continue;
else if (Token::simpleMatch(tok, "= {"))
tok = tok->next()->link();
if (Token::simpleMatch(tok, "= {"))
else if (tok->str() == "{" && Token::Match(tok->tokAt(-2), "%type% %var%"))
tok = tok->link();
else if (Token::Match(tok, "[;{}] %str%") || Token::Match(tok, "[;{}] %num%"))
{
/* We are in an assignment, so it's not a statement.
* Skip until ";" */
while (tok->str() != ";")
// bailout if there is a "? :" in this statement
bool bailout = false;
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
{
int level = 0;
do
{
if (tok->str() == "(" || tok->str() == "{")
++level;
else if (tok->str() == ")" || tok->str() == "}")
--level;
tok = tok->next();
if (tok == NULL)
return;
}
while (level > 0);
if (tok2->str() == "?")
bailout = true;
else if (tok2->str() == ";")
break;
}
if (bailout)
continue;
continue;
}
if (Token::Match(tok, "[;{}] %str%") && !Token::Match(tok->tokAt(2), "[,}]"))
{
constStatementError(tok->next(), "string");
}
if (Token::Match(tok, "[;{}] %num%") && !Token::Match(tok->tokAt(2), "[,}]"))
{
constStatementError(tok->next(), "numeric");
constStatementError(tok->next(), tok->next()->isNumber() ? "numeric" : "string");
}
}
}
@ -2543,24 +2665,6 @@ void CheckOther::checkMathFunctions()
}
}
bool CheckOther::isIdentifierObjectType(const Token * const tok)
{
const std::string identifier = tok->tokAt(1)->str();
const std::map<std::string, bool>::const_iterator found = isClassResults.find(identifier);
if (found != isClassResults.end())
{
return found->second;
}
const std::string classDefnOrDecl = std::string("class|struct ") + identifier + " [{:;]";
const bool result = Token::findmatch(_tokenizer->tokens(), classDefnOrDecl.c_str()) != NULL;
isClassResults.insert(std::make_pair(identifier, result));
return result;
}
void CheckOther::checkMisusedScopedObject()
{
// Skip this check for .c files
@ -2571,21 +2675,21 @@ void CheckOther::checkMisusedScopedObject()
return;
}
SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
const SymbolDatabase * const symbolDatabase = _tokenizer->getSymbolDatabase();
std::list<SymbolDatabase::SpaceInfo *>::iterator i;
std::list<Scope *>::const_iterator i;
for (i = symbolDatabase->spaceInfoList.begin(); i != symbolDatabase->spaceInfoList.end(); ++i)
for (i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i)
{
SymbolDatabase::SpaceInfo *info = *i;
const Scope *scope = *i;
// only check functions
if (info->type != SymbolDatabase::SpaceInfo::Function)
if (scope->type != Scope::eFunction)
continue;
unsigned int depth = 0;
for (const Token *tok = info->classStart; tok; tok = tok->next())
for (const Token *tok = scope->classStart; tok; tok = tok->next())
{
if (tok->str() == "{")
{
@ -2600,7 +2704,7 @@ void CheckOther::checkMisusedScopedObject()
if (Token::Match(tok, "[;{}] %var% (")
&& Token::Match(tok->tokAt(2)->link(), ") ;")
&& isIdentifierObjectType(tok)
&& symbolDatabase->isClassOrStruct(tok->next()->str())
)
{
tok = tok->next();

Some files were not shown because too many files have changed in this diff Show More