This commit is contained in:
Sébastien Debrard 2011-02-28 19:57:36 +01:00
commit 30f7625750
54 changed files with 3563 additions and 1454 deletions

View File

@ -197,6 +197,18 @@ bool CmdLineParser::ParseFromArgs(int argc, const char* const argv[])
} }
} }
else if (strncmp(argv[i], "--suppress=", 11) == 0)
{
std::string suppression = argv[i];
suppression = suppression.substr(11);
const std::string errmsg(_settings->nomsg.addSuppressionLine(suppression));
if (!errmsg.empty())
{
PrintMessage(errmsg);
return false;
}
}
// Enables inline suppressions. // Enables inline suppressions.
else if (strcmp(argv[i], "--inline-suppr") == 0) else if (strcmp(argv[i], "--inline-suppr") == 0)
_settings->_inlineSuppressions = true; _settings->_inlineSuppressions = true;
@ -628,7 +640,8 @@ void CmdLineParser::PrintHelp()
" * information - Enable information messages\n" " * information - Enable information messages\n"
" * unusedFunction - check for unused functions\n" " * unusedFunction - check for unused functions\n"
" * missingInclude - check for missing includes\n" " * missingInclude - check for missing includes\n"
" Several ids can be given if you separate them with commas.\n" " Several ids can be given if you separate them with\n"
" commas.\n"
" --error-exitcode=<n> If errors are found, integer [n] is returned instead\n" " --error-exitcode=<n> If errors are found, integer [n] is returned instead\n"
" of default 0. EXIT_FAILURE is returned\n" " of default 0. EXIT_FAILURE is returned\n"
" if arguments are not valid or if no input files are\n" " if arguments are not valid or if no input files are\n"
@ -638,17 +651,18 @@ void CmdLineParser::PrintHelp()
" --exitcode-suppressions=<file>\n" " --exitcode-suppressions=<file>\n"
" Used when certain messages should be displayed but\n" " Used when certain messages should be displayed but\n"
" should not cause a non-zero exitcode.\n" " should not cause a non-zero exitcode.\n"
" --file-list=<file> Specify the files to check in a text file. One Filename per line.\n" " --file-list=<file> Specify the files to check in a text file. One Filename\n"
" per line.\n"
" -f, --force Force checking on files that have \"too many\"\n" " -f, --force Force checking on files that have \"too many\"\n"
" configurations.\n" " configurations.\n"
" -h, --help Print this help.\n" " -h, --help Print this help.\n"
" -I <dir> Give include path. Give several -I parameters to give\n" " -I <dir> Give include path. Give several -I parameters to give\n"
" several paths. First given path is checked first. If\n" " several paths. First given path is checked first. If\n"
" paths are relative to source files, this is not needed.\n" " paths are relative to source files, this is not needed.\n"
" -i <dir> Give path to ignore. Give several -i parameters to ignore\n" " -i <dir> Give path to ignore. Give several -i parameters to\n"
" several paths. Give directory name or filename with path\n" " ignore several paths. Give directory name or filename\n"
" as parameter. Directory name is matched to all parts of the\n" " with path as parameter. Directory name is matched to\n"
" path.\n" " all parts of the path.\n"
" --inline-suppr Enable inline suppressions. Use them by placing one or\n" " --inline-suppr Enable inline suppressions. Use them by placing one or\n"
" more comments, like: // cppcheck-suppress warningId\n" " more comments, like: // cppcheck-suppress warningId\n"
" on the lines before the warning to suppress.\n" " on the lines before the warning to suppress.\n"
@ -659,11 +673,12 @@ void CmdLineParser::PrintHelp()
" --rule-file=<file> Use given rule file. For more information, see: \n" " --rule-file=<file> Use given rule file. For more information, see: \n"
" https://sourceforge.net/projects/cppcheck/files/Articles/\n" " https://sourceforge.net/projects/cppcheck/files/Articles/\n"
" -s, --style Deprecated, use --enable=style\n" " -s, --style Deprecated, use --enable=style\n"
" --suppressions-list=<file>\n" " --suppress=<spec> Suppress a specific warning. The format of <spec> is:\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" " [error id]:[filename]:[line]\n"
" The [filename] and [line] are optional.\n"
" --suppressions-list=<file>\n"
" Suppress warnings listed in the file. Each suppression\n"
" is in the same format as <spec> above.\n"
" --template '<text>' Format the error messages. E.g.\n" " --template '<text>' Format the error messages. E.g.\n"
" '{file}:{line},{severity},{id},{message}' or\n" " '{file}:{line},{severity},{id},{message}' or\n"
" '{file}({line}):({severity}) {message}'\n" " '{file}({line}):({severity}) {message}'\n"

View File

@ -27,7 +27,8 @@
ApplicationList::ApplicationList(QObject *parent) : ApplicationList::ApplicationList(QObject *parent) :
QObject(parent) QObject(parent),
mDefaultApplicationIndex(-1)
{ {
//ctor //ctor
} }
@ -42,6 +43,7 @@ void ApplicationList::LoadSettings(QSettings *programSettings)
QStringList names = programSettings->value(SETTINGS_APPLICATION_NAMES, QStringList()).toStringList(); QStringList names = programSettings->value(SETTINGS_APPLICATION_NAMES, QStringList()).toStringList();
QStringList paths = programSettings->value(SETTINGS_APPLICATION_PATHS, QStringList()).toStringList(); QStringList paths = programSettings->value(SETTINGS_APPLICATION_PATHS, QStringList()).toStringList();
int defapp = programSettings->value(SETTINGS_APPLICATION_DEFAULT, -1).toInt();
if (names.empty() && paths.empty()) if (names.empty() && paths.empty())
{ {
@ -50,28 +52,37 @@ void ApplicationList::LoadSettings(QSettings *programSettings)
// use as default for gnome environments // use as default for gnome environments
if (QFileInfo("/usr/bin/gedit").isExecutable()) if (QFileInfo("/usr/bin/gedit").isExecutable())
{ {
AddApplicationType("gedit", "/usr/bin/gedit +(line) (file)"); AddApplication("gedit", "/usr/bin/gedit +(line) (file)");
defapp = 0;
break; break;
} }
// use as default for kde environments // use as default for kde environments
if (QFileInfo("/usr/bin/kate").isExecutable()) if (QFileInfo("/usr/bin/kate").isExecutable())
{ {
AddApplicationType("kate", "/usr/bin/kate -l(line) (file)"); AddApplication("kate", "/usr/bin/kate -l(line) (file)");
defapp = 0;
break; break;
} }
// use as default for windows environments
if (FindDefaultWindowsEditor()) if (FindDefaultWindowsEditor())
{
defapp = 0;
break; break;
}
} }
while (0); while (0);
} }
if (names.size() == paths.size()) if (names.size() > 0 && (names.size() == paths.size()))
{ {
for (int i = 0; i < names.size(); i++) for (int i = 0; i < names.size(); i++)
{ AddApplication(names[i], paths[i]);
AddApplicationType(names[i], paths[i]);
} if (defapp == -1)
mDefaultApplicationIndex = 0;
else if (defapp < names.size())
mDefaultApplicationIndex = defapp;
else
mDefaultApplicationIndex = 0;
} }
} }
@ -88,6 +99,7 @@ void ApplicationList::SaveSettings(QSettings *programSettings)
programSettings->setValue(SETTINGS_APPLICATION_NAMES, names); programSettings->setValue(SETTINGS_APPLICATION_NAMES, names);
programSettings->setValue(SETTINGS_APPLICATION_PATHS, paths); programSettings->setValue(SETTINGS_APPLICATION_PATHS, paths);
programSettings->setValue(SETTINGS_APPLICATION_DEFAULT, mDefaultApplicationIndex);
} }
@ -117,9 +129,9 @@ QString ApplicationList::GetApplicationPath(const int index) const
} }
void ApplicationList::SetApplicationType(const int index, void ApplicationList::SetApplication(const int index,
const QString &name, const QString &name,
const QString &path) const QString &path)
{ {
if (index >= 0 && index < mApplications.size()) if (index >= 0 && index < mApplications.size())
{ {
@ -128,7 +140,7 @@ void ApplicationList::SetApplicationType(const int index,
} }
} }
void ApplicationList::AddApplicationType(const QString &name, const QString &path) void ApplicationList::AddApplication(const QString &name, const QString &path)
{ {
if (name.isEmpty() || path.isEmpty()) if (name.isEmpty() || path.isEmpty())
{ {
@ -146,15 +158,15 @@ void ApplicationList::RemoveApplication(const int index)
mApplications.removeAt(index); mApplications.removeAt(index);
} }
void ApplicationList::MoveFirst(const int index) void ApplicationList::SetDefault(const int index)
{ {
if (index < mApplications.size() && index > 0) if (index < mApplications.size() && index >= 0)
{ {
mApplications.move(index, 0); mDefaultApplicationIndex = index;
} }
} }
void ApplicationList::Copy(ApplicationList *list) void ApplicationList::Copy(const ApplicationList *list)
{ {
if (!list) if (!list)
{ {
@ -164,13 +176,15 @@ void ApplicationList::Copy(ApplicationList *list)
Clear(); Clear();
for (int i = 0; i < list->GetApplicationCount(); i++) for (int i = 0; i < list->GetApplicationCount(); i++)
{ {
AddApplicationType(list->GetApplicationName(i), list->GetApplicationPath(i)); AddApplication(list->GetApplicationName(i), list->GetApplicationPath(i));
} }
mDefaultApplicationIndex = list->GetDefaultApplication();
} }
void ApplicationList::Clear() void ApplicationList::Clear()
{ {
mApplications.clear(); mApplications.clear();
mDefaultApplicationIndex = -1;
} }
bool ApplicationList::FindDefaultWindowsEditor() bool ApplicationList::FindDefaultWindowsEditor()
@ -179,7 +193,7 @@ bool ApplicationList::FindDefaultWindowsEditor()
const QString notepadppPath = appPath + "\\Notepad++\\notepad++.exe"; const QString notepadppPath = appPath + "\\Notepad++\\notepad++.exe";
if (QFileInfo(notepadppPath).isExecutable()) if (QFileInfo(notepadppPath).isExecutable())
{ {
AddApplicationType("Notepad++", "\"" + notepadppPath + "\" -n(line) (file)"); AddApplication("Notepad++", "\"" + notepadppPath + "\" -n(line) (file)");
return true; return true;
} }
@ -187,7 +201,7 @@ bool ApplicationList::FindDefaultWindowsEditor()
const QString notepadPath = windowsPath + "\\system32\\notepad.exe"; const QString notepadPath = windowsPath + "\\system32\\notepad.exe";
if (QFileInfo(notepadPath).isExecutable()) if (QFileInfo(notepadPath).isExecutable())
{ {
AddApplicationType("Notepad", notepadPath + " (file)"); AddApplication("Notepad", notepadPath + " (file)");
return true; return true;
} }
return false; return false;

View File

@ -56,7 +56,7 @@ public:
typedef struct typedef struct
{ {
/** /**
* @brief Applicaton's name * @brief Application's name
* *
*/ */
QString Name; QString Name;
@ -106,6 +106,15 @@ public:
*/ */
QString GetApplicationPath(const int index) const; QString GetApplicationPath(const int index) const;
/**
* @brief Return the default application.
* @return Index of the default application.
*/
int GetDefaultApplication() const
{
return mDefaultApplicationIndex;
}
/** /**
* @brief Modify an application * @brief Modify an application
* *
@ -113,9 +122,8 @@ public:
* @param name New name for the application * @param name New name for the application
* @param path New path for the application * @param path New path for the application
*/ */
void SetApplicationType(const int index, void SetApplication(const int index, const QString &name,
const QString &name, const QString &path);
const QString &path);
/** /**
* @brief Add a new application * @brief Add a new application
@ -123,7 +131,7 @@ public:
* @param name Name of the application * @param name Name of the application
* @param path Path to the application * @param path Path to the application
*/ */
void AddApplicationType(const QString &name, const QString &path); void AddApplication(const QString &name, const QString &path);
/** /**
* @brief Remove an application from the list * @brief Remove an application from the list
@ -133,21 +141,18 @@ public:
void RemoveApplication(const int index); void RemoveApplication(const int index);
/** /**
* @brief Move certain application as first. * @brief Set application as default application.
* Position of the application is used by the application to determine
* which of the applications is the default application. First application
* (index 0) is the default application.
*
* @param index Index of the application to make the default one * @param index Index of the application to make the default one
*/ */
void MoveFirst(const int index); void SetDefault(const int index);
/** /**
* @brief Remove all applications from this list and copy all applications from * @brief Remove all applications from this list and copy all applications from
* list given as a parameter. * list given as a parameter.
* @param list Copying source * @param list Copying source
*/ */
void Copy(ApplicationList *list); void Copy(const ApplicationList *list);
protected: protected:
/** /**
@ -162,12 +167,19 @@ protected:
*/ */
bool FindDefaultWindowsEditor(); bool FindDefaultWindowsEditor();
private:
/** /**
* @brief List of applications * @brief List of applications
* *
*/ */
QList<ApplicationType> mApplications; QList<ApplicationType> mApplications;
private:
/**
* @brief Index of the default application.
*
*/
int mDefaultApplicationIndex;
}; };
/// @} /// @}
#endif // APPLICATIONLIST_H #endif // APPLICATIONLIST_H

View File

@ -25,7 +25,7 @@
CheckThread::CheckThread(ThreadResult &result) : CheckThread::CheckThread(ThreadResult &result) :
mState(Ready), mState(Ready),
mResult(result), mResult(result),
mCppcheck(result) mCppcheck(result, true)
{ {
//ctor //ctor
} }

View File

@ -77,6 +77,7 @@ ShowTypes;
#define SETTINGS_SAVE_FULL_PATH "Save full path" #define SETTINGS_SAVE_FULL_PATH "Save full path"
#define SETTINGS_APPLICATION_NAMES "Application names" #define SETTINGS_APPLICATION_NAMES "Application names"
#define SETTINGS_APPLICATION_PATHS "Application paths" #define SETTINGS_APPLICATION_PATHS "Application paths"
#define SETTINGS_APPLICATION_DEFAULT "Default Application"
#define SETTINGS_LANGUAGE "Application language" #define SETTINGS_LANGUAGE "Application language"
#define SETTINGS_GLOBAL_INCLUDE_PATHS "Global include paths" #define SETTINGS_GLOBAL_INCLUDE_PATHS "Global include paths"
#define SETTINGS_INLINE_SUPPRESSIONS "Inline suppressions" #define SETTINGS_INLINE_SUPPRESSIONS "Inline suppressions"

View File

@ -220,12 +220,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -537,97 +537,103 @@ kate -l(line) (file)</translation>
<translation>&amp;Hilfe</translation> <translation>&amp;Hilfe</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Dateien zum Überprüfen auswählen</translation> <translation>Dateien zum Überprüfen auswählen</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Verzeichnis zum Überprüfen auswählen</translation> <translation>Verzeichnis zum Überprüfen auswählen</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>Kein passenden Dateien zum Überprüfen gefunden!</translation> <translation>Kein passenden Dateien zum Überprüfen gefunden!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>Lizenz</translation> <translation>Lizenz</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Autoren</translation> <translation>Autoren</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML-Dateien (*.xml);;Textdateien (*.txt);;CSV-Dateien (*.csv)</translation> <translation type="unfinished">XML-Dateien (*.xml);;Textdateien (*.txt);;CSV-Dateien (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Speichert die Berichtdatei</translation> <translation>Speichert die Berichtdatei</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML-Dateien (*.xml)</translation> <translation>XML-Dateien (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Textdateien (*.txt)</translation> <translation>Textdateien (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation>CSV-Dateien (*.csv)</translation> <translation>CSV-Dateien (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -636,56 +642,56 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Fehler beim Ändern der Sprache: <translation type="obsolete">Fehler beim Ändern der Sprache:
%1 %1
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Finnisch</translation> <translation>Finnisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Englisch</translation> <translation>Englisch</translation>
</message> </message>
@ -695,33 +701,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation>Niederländisch</translation> <translation>Niederländisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Schwedisch</translation> <translation>Schwedisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Deutsch</translation> <translation>Deutsch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Russisch</translation> <translation>Russisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Polnisch</translation> <translation>Polnisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -753,28 +764,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -800,18 +833,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Falsche Sprache angegeben!</translation> <translation type="obsolete">Falsche Sprache angegeben!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Sprachdatei %1 nicht gefunden!</translation> <translation>Sprachdatei %1 nicht gefunden!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Die Übersetzungen der Sprache %1 konnten nicht aus der Datei %2 geladen werden</translation>
@ -821,71 +858,71 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>Datei</translation> <translation>Datei</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Schweregrad</translation> <translation>Schweregrad</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Zeile</translation> <translation>Zeile</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Undefinierte Datei</translation> <translation>Undefinierte Datei</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Dateiname kopieren</translation> <translation>Dateiname kopieren</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Vollständigen Pfad kopieren</translation> <translation>Vollständigen Pfad kopieren</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation>Meldung kopieren</translation> <translation>Meldung kopieren</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>Konfigurieren Sie das Text-Dateibetrachter-Programm unter Einstellungen/Anwendungen.</translation> <translation>Konfigurieren Sie das Text-Dateibetrachter-Programm unter Einstellungen/Anwendungen.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -894,44 +931,44 @@ Please check the application path and parameters are correct.</source>
Bitte überprüfen Sie ob der Pfad und die Parameter der Anwendung richtig eingestellt sind.</translation> Bitte überprüfen Sie ob der Pfad und die Parameter der Anwendung richtig eingestellt sind.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>Stil</translation> <translation>Stil</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1003,98 +1040,121 @@ Legen Sie unter dem Menü Ansicht fest, welche Art von Fehlern angezeigt werden
<translation>Allgemein</translation> <translation>Allgemein</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Anzahl der Threads: </translation> <translation>Anzahl der Threads: </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Alle #ifdef-Konfigurationen überprüfen</translation> <translation type="unfinished">Alle #ifdef-Konfigurationen überprüfen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Vollständigen Dateipfad anzeigen</translation> <translation>Vollständigen Dateipfad anzeigen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>&quot;Keine Fehler gefunden&quot;-Meldung anzeigen, wenn keine Fehler gefunden werden</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Anwendungen</translation> <translation>Anwendungen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Anwendung hinzufügen</translation> <translation type="obsolete">Anwendung hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Anwendung löschen</translation> <translation type="obsolete">Anwendung löschen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Anwendung ändern</translation> <translation type="obsolete">Anwendung ändern</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Als Standard-Anwendung verwenden</translation> <translation type="obsolete">Als Standard-Anwendung verwenden</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Berichte</translation> <translation>Berichte</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Alle Fehler beim Erstellen von Berichten speichern</translation> <translation>Alle Fehler beim Erstellen von Berichten speichern</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Vollständigen Dateipfad in Berichten speichern</translation> <translation>Vollständigen Dateipfad in Berichten speichern</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1102,22 +1162,27 @@ Legen Sie unter dem Menü Ansicht fest, welche Art von Fehlern angezeigt werden
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Neue Anwendung hinzufügen</translation> <translation>Neue Anwendung hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Anwendung ändern</translation> <translation>Anwendung ändern</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -222,12 +222,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -539,97 +539,103 @@ kate -l(line) (file)</translation>
<translation>&amp;Help</translation> <translation>&amp;Help</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Select files to check</translation> <translation>Select files to check</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Select directory to check</translation> <translation>Select directory to check</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>No suitable files found to check!</translation> <translation>No suitable files found to check!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>License</translation> <translation>License</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Authors</translation> <translation>Authors</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation> <translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Save the report file</translation> <translation>Save the report file</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation> <translation>XML files (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation> <translation>Text files (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -638,54 +644,54 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Failed to change language: <translation type="obsolete">Failed to change language:
%1</translation> %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Finnish</translation> <translation>Finnish</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>English</translation> <translation>English</translation>
</message> </message>
@ -695,33 +701,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Swedish</translation> <translation>Swedish</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>German</translation> <translation>German</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Russian</translation> <translation>Russian</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Polish</translation> <translation>Polish</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation>Serbian</translation> <translation>Serbian</translation>
</message> </message>
@ -753,28 +764,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -800,18 +833,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Incorrect language specified!</translation> <translation type="obsolete">Incorrect language specified!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Could not find the file: %1!</translation> <translation>Could not find the file: %1!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Failed to load translation for language %1 from file %2</translation>
@ -821,71 +858,71 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>File</translation> <translation>File</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Severity</translation> <translation>Severity</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Line</translation> <translation>Line</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Undefined file</translation> <translation>Undefined file</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Copy filename</translation> <translation>Copy filename</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Copy full path</translation> <translation>Copy full path</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>You can open this error by specifying applications in program&apos;s settings.</translation> <translation>You can open this error by specifying applications in program&apos;s settings.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -894,44 +931,44 @@ Please check the application path and parameters are correct.</source>
Please check the application path and parameters are correct.</translation> Please check the application path and parameters are correct.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>Style</translation> <translation>Style</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1003,98 +1040,121 @@ To toggle what kind of errors are shown, open view menu.</translation>
<translation>General</translation> <translation>General</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Number of threads: </translation> <translation>Number of threads: </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Check all #ifdef configurations</translation> <translation type="unfinished">Check all #ifdef configurations</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Show full path of files</translation> <translation>Show full path of files</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>Show &quot;No errors found&quot; message when no errors found</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Applications</translation> <translation>Applications</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Add application</translation> <translation type="obsolete">Add application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Delete application</translation> <translation type="obsolete">Delete application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Modify application</translation> <translation type="obsolete">Modify application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Set as default application</translation> <translation type="obsolete">Set as default application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Reports</translation> <translation>Reports</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Save all errors when creating report</translation> <translation>Save all errors when creating report</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Save full path to files in reports</translation> <translation>Save full path to files in reports</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1102,22 +1162,27 @@ To toggle what kind of errors are shown, open view menu.</translation>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Add a new application</translation> <translation>Add a new application</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Modify an application</translation> <translation>Modify an application</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -224,12 +224,12 @@ kate -l(line) (file)
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -541,97 +541,103 @@ kate -l(line) (file)
<translation>&amp;Ohje</translation> <translation>&amp;Ohje</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Valitse tarkistettavat tiedostot</translation> <translation>Valitse tarkistettavat tiedostot</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Valitse tarkistettava hakemisto</translation> <translation>Valitse tarkistettava hakemisto</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>Tarkistettavaksi sopivia tiedostoja ei löytynyt!</translation> <translation>Tarkistettavaksi sopivia tiedostoja ei löytynyt!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>Lisenssi</translation> <translation>Lisenssi</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Tekijät</translation> <translation>Tekijät</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML-tiedostot (*.xml);;Tekstitiedostot (*.txt);;CSV-tiedostot (*.csv)</translation> <translation type="unfinished">XML-tiedostot (*.xml);;Tekstitiedostot (*.txt);;CSV-tiedostot (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Tallenna raportti</translation> <translation>Tallenna raportti</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML-tiedostot (*xml)</translation> <translation>XML-tiedostot (*xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Tekstitiedostot (*.txt)</translation> <translation>Tekstitiedostot (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -640,56 +646,56 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Ohjelman kielen vaihtaminen epäonnistui: <translation type="obsolete">Ohjelman kielen vaihtaminen epäonnistui:
%1 %1
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Suomi</translation> <translation>Suomi</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Englanti</translation> <translation>Englanti</translation>
</message> </message>
@ -699,33 +705,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Ruotsi</translation> <translation>Ruotsi</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Saksa</translation> <translation>Saksa</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Venäjä</translation> <translation>Venäjä</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Puola</translation> <translation>Puola</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -757,28 +768,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -804,18 +837,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Virheellinen kieli valittu!</translation> <translation type="obsolete">Virheellinen kieli valittu!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Käännöstiedostoa %1 ei löytynyt!</translation> <translation>Käännöstiedostoa %1 ei löytynyt!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Käänöksen lataaminen kielelle %1 tiedostosta %2 epäonnistui</translation>
@ -825,71 +862,71 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>Tiedosto</translation> <translation>Tiedosto</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Tyyppi</translation> <translation>Tyyppi</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Rivi</translation> <translation>Rivi</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Määrittelemätön tiedosto</translation> <translation>Määrittelemätön tiedosto</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Kopioi tiedostonimi</translation> <translation>Kopioi tiedostonimi</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Kopioi tiedoston koko polku</translation> <translation>Kopioi tiedoston koko polku</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>Voit asetuksista määritellä muita ohjelmia joilla avata tämän virheen sisältävän tiedoston.</translation> <translation>Voit asetuksista määritellä muita ohjelmia joilla avata tämän virheen sisältävän tiedoston.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -898,44 +935,44 @@ Please check the application path and parameters are correct.</source>
Tarkista että ohjelman polku ja parametrit ovat oikeat.</translation> Tarkista että ohjelman polku ja parametrit ovat oikeat.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>Tyyli</translation> <translation>Tyyli</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>Yleinen</translation> <translation>Yleinen</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1007,98 +1044,121 @@ Määrittääksesi minkä tyyppisiä virheitä näytetään, avaa näkymä valik
<translation>Yleiset</translation> <translation>Yleiset</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Säikeiden lukumäärä: </translation> <translation>Säikeiden lukumäärä: </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Tarkista kaikki #ifdef kombinaatiot</translation> <translation type="unfinished">Tarkista kaikki #ifdef kombinaatiot</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Näytä tiedostojen täysi polku</translation> <translation>Näytä tiedostojen täysi polku</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>Näytä &quot;virheitä ei löytynyt&quot;-viesti jos virheitä ei löydy</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Ohjelmat</translation> <translation>Ohjelmat</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Lisää ohjelma</translation> <translation type="obsolete">Lisää ohjelma</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Poista ohjelma</translation> <translation type="obsolete">Poista ohjelma</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Muokkaa ohjelmaa</translation> <translation type="obsolete">Muokkaa ohjelmaa</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Aseta oletusohjelmaksi</translation> <translation type="obsolete">Aseta oletusohjelmaksi</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Raportit</translation> <translation>Raportit</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Tallenna kaikki virheet raporttia luodessa</translation> <translation>Tallenna kaikki virheet raporttia luodessa</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Tallenna tiedostojen koko polku raportteihin</translation> <translation>Tallenna tiedostojen koko polku raportteihin</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1106,22 +1166,27 @@ Määrittääksesi minkä tyyppisiä virheitä näytetään, avaa näkymä valik
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Lisää uusi ohjelma</translation> <translation>Lisää uusi ohjelma</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Muokkaa ohjelmaa</translation> <translation>Muokkaa ohjelmaa</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -339,7 +339,7 @@ kate -l(ligne) (fichier)</translation>
%1 %1
</source> </source>
<translation type="unfinished">Erreur lors du chargement de la langue : <translation type="obsolete">Erreur lors du chargement de la langue :
%1 %1
@ -563,6 +563,16 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>French</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>Project</name> <name>Project</name>
@ -593,18 +603,34 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Browse...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include paths:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ProjectFileDialog</name> <name>ProjectFileDialog</name>
@ -625,7 +651,7 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>QObject</name> <name>QObject</name>
<message> <message>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation type="unfinished">Langue incorrecte !</translation> <translation type="obsolete">Langue incorrecte !</translation>
</message> </message>
<message> <message>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
@ -635,6 +661,10 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<source>Failed to load translation for language %1 from file %2</source> <source>Failed to load translation for language %1 from file %2</source>
<translation type="unfinished">Erreur lors du chargement de la langue %1 depuis le fichier %2</translation> <translation type="unfinished">Erreur lors du chargement de la langue %1 depuis le fichier %2</translation>
</message> </message>
<message>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ResultsTree</name> <name>ResultsTree</name>
@ -798,19 +828,19 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
</message> </message>
<message> <message>
<source>Add application</source> <source>Add application</source>
<translation type="unfinished">Ajouter une application</translation> <translation type="obsolete">Ajouter une application</translation>
</message> </message>
<message> <message>
<source>Delete application</source> <source>Delete application</source>
<translation type="unfinished">Supprimer l&apos;application</translation> <translation type="obsolete">Supprimer l&apos;application</translation>
</message> </message>
<message> <message>
<source>Modify application</source> <source>Modify application</source>
<translation type="unfinished">Modifier l&apos;application</translation> <translation type="obsolete">Modifier l&apos;application</translation>
</message> </message>
<message> <message>
<source>Set as default application</source> <source>Set as default application</source>
<translation type="unfinished">Définir comme application par défaut</translation> <translation type="obsolete">Définir comme application par défaut</translation>
</message> </message>
<message> <message>
<source>Reports</source> <source>Reports</source>
@ -856,6 +886,26 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
@ -875,6 +925,10 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>StatsDialog</name> <name>StatsDialog</name>

View File

@ -208,12 +208,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -525,44 +525,44 @@ kate -l(line) (file)</translation>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML (*.xml)</translation> <translation>XML (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
@ -571,103 +571,109 @@ Do you want to stop the checking and exit Cppcheck?.</source>
Cppcheckを終了しますか.</translation> Cppcheckを終了しますか.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML (*.xml);; (*.txt);;CSV形式ファイル (*.csv)</translation> <translation type="unfinished">XML (*.xml);; (*.txt);;CSV形式ファイル (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation> (*.txt)</translation> <translation> (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation>CSV形式ファイル (*.csv)</translation> <translation>CSV形式ファイル (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
</source> </source>
<translation>: <translation type="obsolete">:
%1 %1
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation>Cppcheck </translation> <translation>Cppcheck </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation> (*.cppcheck);;All files(*.*)</translation> <translation> (*.cppcheck);;All files(*.*)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation></translation> <translation></translation>
</message> </message>
@ -677,38 +683,43 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -740,28 +751,54 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation></translation> <translation type="unfinished">...</translation>
</message>
<message>
<location filename="projectfile.ui" line="104"/>
<location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation>Include :</translation> <translation type="obsolete">Include :</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation>Defines:</translation> <translation>Defines:</translation>
</message> </message>
@ -787,17 +824,17 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/> <location filename="translationhandler.cpp" line="89"/>
<source>Incorrect language specified!</source> <source>Unknown language specified!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<translation> %1 !</translation> <translation> %1 !</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <source>Failed to load translation for language %1 from file %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -806,70 +843,70 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -878,7 +915,7 @@ Please check the application path and parameters are correct.</source>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
@ -887,37 +924,37 @@ Please select the directory where file is located.</source>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -988,98 +1025,121 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation>Include :</translation> <translation>Include :</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation>...</translation> <translation>...</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished"> #ifdef </translation> <translation type="unfinished"> #ifdef </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>&quot;&quot;</translation> <translation>&quot;&quot;</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation>cppcheck内部警告をログに表示する</translation> <translation>cppcheck内部警告をログに表示する</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>/</translation> <translation>/</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1087,22 +1147,27 @@ To toggle what kind of errors are shown, open view menu.</source>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation>include </translation> <translation>include </translation>
</message> </message>

View File

@ -222,12 +222,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -539,97 +539,103 @@ kate -l(line) (file)</translation>
<translation>&amp;Help</translation> <translation>&amp;Help</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Selecteer bestanden om te controleren</translation> <translation>Selecteer bestanden om te controleren</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Selecteer een map om te controleren</translation> <translation>Selecteer een map om te controleren</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>Geen geschikte bestanden gevonden om te controleren!</translation> <translation>Geen geschikte bestanden gevonden om te controleren!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>Licentie</translation> <translation>Licentie</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Auteurs</translation> <translation>Auteurs</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML bestanden (*.xml);;Tekst bestanden (*.txt);;CSV bestanden (*.csv)</translation> <translation type="unfinished">XML bestanden (*.xml);;Tekst bestanden (*.txt);;CSV bestanden (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Rapport opslaan </translation> <translation>Rapport opslaan </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML bestanden (*.xml)</translation> <translation>XML bestanden (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Tekst bestanden (*.txt)</translation> <translation>Tekst bestanden (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -638,54 +644,54 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Kon de taal niet wisselen: <translation type="obsolete">Kon de taal niet wisselen:
%1</translation> %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Fins</translation> <translation>Fins</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Engels</translation> <translation>Engels</translation>
</message> </message>
@ -695,33 +701,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation>Nederlands</translation> <translation>Nederlands</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Zweeds</translation> <translation>Zweeds</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Duits</translation> <translation>Duits</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Russisch</translation> <translation>Russisch</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Pools</translation> <translation>Pools</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -753,28 +764,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -800,18 +833,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Ongeldige taal gespecifieerd!</translation> <translation type="obsolete">Ongeldige taal gespecifieerd!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Kon het taalbestand niet vinden: %1!</translation> <translation>Kon het taalbestand niet vinden: %1!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Kon de vertaling voor taal %1 in bestand %2 niet laden</translation>
@ -821,71 +858,71 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>Bestand</translation> <translation>Bestand</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Ernst</translation> <translation>Ernst</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Regel</translation> <translation>Regel</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Niet gedefinieerd bestand</translation> <translation>Niet gedefinieerd bestand</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Kopier bestandsnaam</translation> <translation>Kopier bestandsnaam</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Kopieer volledig pad</translation> <translation>Kopieer volledig pad</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>U dient een applicatie te configureren in de instellingen om deze fout in te openen.</translation> <translation>U dient een applicatie te configureren in de instellingen om deze fout in te openen.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -894,44 +931,44 @@ Please check the application path and parameters are correct.</source>
Gelieve te controleren of de het pad en de parameters correct zijn.</translation> Gelieve te controleren of de het pad en de parameters correct zijn.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>Stijlfouten</translation> <translation>Stijlfouten</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>Fouten</translation> <translation>Fouten</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1003,98 +1040,121 @@ Gebruik het uitzicht menu om te selecteren welke fouten getoond worden.</transla
<translation>Algemeen</translation> <translation>Algemeen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Aantal threads: </translation> <translation>Aantal threads: </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Controleer alle #ifdef combinaties</translation> <translation type="unfinished">Controleer alle #ifdef combinaties</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Toon het volledige pad van bestanden</translation> <translation>Toon het volledige pad van bestanden</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>Toon &quot;Geen fouten gevonden&quot; indien geen fouten gevonden werden</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Applicaties</translation> <translation>Applicaties</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Applicatie toevoegen</translation> <translation type="obsolete">Applicatie toevoegen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Applicatie verwijderen</translation> <translation type="obsolete">Applicatie verwijderen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Applicatie wijzigen</translation> <translation type="obsolete">Applicatie wijzigen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Configureer als standaard applicatie</translation> <translation type="obsolete">Configureer als standaard applicatie</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Rapporten</translation> <translation>Rapporten</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Alle fouten opslaan</translation> <translation>Alle fouten opslaan</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Volledig pad opslaan</translation> <translation>Volledig pad opslaan</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1102,22 +1162,27 @@ Gebruik het uitzicht menu om te selecteren welke fouten getoond worden.</transla
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Nieuwe applicatie toevoegen</translation> <translation>Nieuwe applicatie toevoegen</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Applicatie wijzigen</translation> <translation>Applicatie wijzigen</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -209,12 +209,12 @@ kate -l(line) (file)</oldsource>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -526,143 +526,141 @@ kate -l(line) (file)</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="729"/>
<source>Failed to change the language: <location filename="mainwindow.cpp" line="774"/>
%1
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="738"/>
<location filename="mainwindow.cpp" line="783"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -672,38 +670,43 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -735,28 +738,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -782,17 +807,17 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/> <location filename="translationhandler.cpp" line="89"/>
<source>Incorrect language specified!</source> <source>Unknown language specified!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <source>Failed to load translation for language %1 from file %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -801,114 +826,114 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -979,98 +1004,105 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <source>Show &quot;No errors found&quot; message when no errors found</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Add application</source> <source>Edit...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/> <location filename="settings.ui" line="260"/>
<source>Delete application</source> <source>Set as default</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/> <location filename="settings.ui" line="285"/>
<source>Modify application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="225"/>
<source>Reports</source> <source>Reports</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1078,22 +1110,27 @@ To toggle what kind of errors are shown, open view menu.</source>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -212,12 +212,12 @@ kate -l(line) (file)</oldsource>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -529,97 +529,103 @@ kate -l(line) (file)</oldsource>
<translation>Помощь</translation> <translation>Помощь</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Выберите файлы для проверки</translation> <translation>Выберите файлы для проверки</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Выберите каталог для проверки</translation> <translation>Выберите каталог для проверки</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>Лицензия</translation> <translation>Лицензия</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Авторы</translation> <translation>Авторы</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Текстовые файлы (*.txt)</translation> <translation>Текстовые файлы (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -628,56 +634,56 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Невозможно изменить язык приложения: <translation type="obsolete">Невозможно изменить язык приложения:
%1 %1
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Финский</translation> <translation>Финский</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Английский</translation> <translation>Английский</translation>
</message> </message>
@ -687,33 +693,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Швецкий</translation> <translation>Швецкий</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Немецкий</translation> <translation>Немецкий</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Русский</translation> <translation>Русский</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -745,28 +756,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -792,18 +825,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Выбран неверный язык!</translation> <translation type="obsolete">Выбран неверный язык!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <oldsource>Failed to load translation for language %1 from file %2.qm</oldsource>
<translation>Ошибка загрузки переводов для языка %1 из файла %2</translation> <translation>Ошибка загрузки переводов для языка %1 из файла %2</translation>
@ -813,115 +850,115 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>Файл</translation> <translation>Файл</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Важность</translation> <translation>Важность</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Строка</translation> <translation>Строка</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Скопировать имя файла</translation> <translation>Скопировать имя файла</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Скопировать полный путь</translation> <translation>Скопировать полный путь</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -992,98 +1029,105 @@ To toggle what kind of errors are shown, open view menu.</source>
<translation>Общие</translation> <translation>Общие</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Количество потоков исполнения:</translation> <translation>Количество потоков исполнения:</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Проверять все варианты #ifdef конфигураций</translation> <translation type="unfinished">Проверять все варианты #ifdef конфигураций</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Показывать полные пути к файлам</translation> <translation>Показывать полные пути к файлам</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <source>Show &quot;No errors found&quot; message when no errors found</source>
<translation>Показывать сообщение, если ошибок не найдено</translation> <translation>Показывать сообщение, если ошибок не найдено</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Add application</source> <source>Edit...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/> <location filename="settings.ui" line="260"/>
<source>Delete application</source> <source>Set as default</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/> <location filename="settings.ui" line="285"/>
<source>Modify application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="225"/>
<source>Reports</source> <source>Reports</source>
<translation>Отчёты</translation> <translation>Отчёты</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Сохранять все ошибки при создании отчёта</translation> <translation>Сохранять все ошибки при создании отчёта</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Сохранять полные пути к файлам в отчётах</translation> <translation>Сохранять полные пути к файлам в отчётах</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1091,22 +1135,27 @@ To toggle what kind of errors are shown, open view menu.</source>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -222,12 +222,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -540,65 +540,65 @@ kate -l(line) (file)</translation>
<translation>&amp;Hjälp</translation> <translation>&amp;Hjälp</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Välj filer att kontrollera</translation> <translation>Välj filer att kontrollera</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Välj katalog som skall kontrolleras</translation> <translation>Välj katalog som skall kontrolleras</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>Inga lämpliga filer hittades!</translation> <translation>Inga lämpliga filer hittades!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>Licens</translation> <translation>Licens</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Utvecklare</translation> <translation>Utvecklare</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML filer (*.xml);;Text filer (*.txt);;CSV filer (*.csv)</translation> <translation type="unfinished">XML filer (*.xml);;Text filer (*.txt);;CSV filer (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Spara rapport</translation> <translation>Spara rapport</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML filer (*.xml)</translation> <translation>XML filer (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation>Du måste stänga projektfilen innan nya filer eller sökvägar kan väljas!</translation> <translation>Du måste stänga projektfilen innan nya filer eller sökvägar kan väljas!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation>Projekt.</translation> <translation>Projekt.</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation>Öppna rapportfilen</translation> <translation>Öppna rapportfilen</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
@ -607,32 +607,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
Vill du stoppa analysen och avsluta Cppcheck?</translation> Vill du stoppa analysen och avsluta Cppcheck?</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Text filer (*.txt)</translation> <translation>Text filer (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation>CSV filer (*.csv)</translation> <translation>CSV filer (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -641,56 +647,56 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Misslyckades med att byta språk: <translation type="obsolete">Misslyckades med att byta språk:
%1 %1
</translation> </translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation>Cppcheck Hjälp</translation> <translation>Cppcheck Hjälp</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation>Misslyckades att öppna hjälpfilen (hittades ej)</translation> <translation>Misslyckades att öppna hjälpfilen (hittades ej)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation>Misslykades att öppna hjälpfilen</translation> <translation>Misslykades att öppna hjälpfilen</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation>Projektfiler (*.cppcheck);;Alla filer(*.*)</translation> <translation>Projektfiler (*.cppcheck);;Alla filer(*.*)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation>Välj projektfil</translation> <translation>Välj projektfil</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation>Välj Projektfil</translation> <translation>Välj Projektfil</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation>Inget projekt laddat</translation> <translation>Inget projekt laddat</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Finska</translation> <translation>Finska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Engelska</translation> <translation>Engelska</translation>
</message> </message>
@ -700,33 +706,38 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
<translation>Nederländska</translation> <translation>Nederländska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Svenska</translation> <translation>Svenska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Tyska</translation> <translation>Tyska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Ryska</translation> <translation>Ryska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Polska</translation> <translation>Polska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation>Japanska</translation> <translation>Japanska</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation>Serbiska</translation> <translation>Serbiska</translation>
</message> </message>
@ -758,28 +769,58 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
<translation>Projektfil</translation> <translation>Projektfil</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished">Projekt</translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation>Projekt:</translation> <translation>Projekt:</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation>Sökvägar:</translation> <translation>Sökvägar:</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Add...</source>
<translation type="unfinished">Lägg till...</translation>
</message>
<message>
<location filename="projectfile.ui" line="104"/>
<location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Browse...</source> <source>Browse...</source>
<translation>Bläddra...</translation> <translation type="obsolete">Bläddra...</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation>Include sökvägar:</translation> <translation type="obsolete">Include sökvägar:</translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation>Defines:</translation> <translation>Defines:</translation>
</message> </message>
@ -805,18 +846,22 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>valt språk är ej korrekt!</translation> <translation type="obsolete">valt språk är ej korrekt!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Språk filen %1 hittades ej!</translation> <translation>Språk filen %1 hittades ej!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Misslyckades med att ladda översättningen för %1 från filen %2</translation>
@ -826,71 +871,71 @@ Vill du stoppa analysen och avsluta Cppcheck?</translation>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>Fil</translation> <translation>Fil</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Typ</translation> <translation>Typ</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Rad</translation> <translation>Rad</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation>Sammanfattning</translation> <translation>Sammanfattning</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Odefinierad fil</translation> <translation>Odefinierad fil</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Kopiera filnamn</translation> <translation>Kopiera filnamn</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Kopiera full sökväg</translation> <translation>Kopiera full sökväg</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation>Kopiera meddelande</translation> <translation>Kopiera meddelande</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation>Dölj</translation> <translation>Dölj</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>Konfigurera program i inställningar/program.</translation> <translation>Konfigurera program i inställningar/program.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation>Kunde inte hitta filen!</translation> <translation>Kunde inte hitta filen!</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -899,7 +944,7 @@ Please check the application path and parameters are correct.</source>
Kontrollera att sökvägen och parametrarna är korrekta.</translation> Kontrollera att sökvägen och parametrarna är korrekta.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
@ -908,37 +953,37 @@ Please select the directory where file is located.</source>
Välj mappen där filen finns.</translation> Välj mappen där filen finns.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation>Välj mapp</translation> <translation>Välj mapp</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>stil</translation> <translation>stil</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>fel</translation> <translation>fel</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation>varning</translation> <translation>varning</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation>prestanda</translation> <translation>prestanda</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation>portabilitet</translation> <translation>portabilitet</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation>information</translation> <translation>information</translation>
</message> </message>
@ -1010,98 +1055,121 @@ För att ställa in vilka fel som skall visas använd visa menyn.</translation>
<translation>Allmänt</translation> <translation>Allmänt</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation>Include sökvägar:</translation> <translation>Include sökvägar:</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation>Lägg till...</translation> <translation>Lägg till...</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Antal trådar:</translation> <translation>Antal trådar:</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation>Optimalt värde:</translation> <translation>Optimalt värde:</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation>TextLabel</translation> <translation>TextLabel</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation>Kontrollera alla #ifdef konfigurationer</translation> <translation>Kontrollera alla #ifdef konfigurationer</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Visa den fulla sökvägen för filer</translation> <translation>Visa den fulla sökvägen för filer</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>Visa &quot;Inga fel hittades&quot; meddelande när inga fel hittas</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation>Visa interna fel i loggen</translation> <translation>Visa interna fel i loggen</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation>Använd inline suppressions</translation> <translation>Använd inline suppressions</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Program</translation> <translation>Program</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Lägg till program</translation> <translation type="obsolete">Lägg till program</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Ta bort program</translation> <translation type="obsolete">Ta bort program</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Ändra program</translation> <translation type="obsolete">Ändra program</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Ange som standard program</translation> <translation type="obsolete">Ange som standard program</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Rapporter</translation> <translation>Rapporter</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Spara alla fel</translation> <translation>Spara alla fel</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Spara fulla sökvägar</translation> <translation>Spara fulla sökvägar</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation>Språk</translation> <translation>Språk</translation>
</message> </message>
@ -1109,22 +1177,27 @@ För att ställa in vilka fel som skall visas använd visa menyn.</translation>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation>Ej tillgängligt</translation> <translation>Ej tillgängligt</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Lägg till program</translation> <translation>Lägg till program</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Ändra program</translation> <translation>Ändra program</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation>Välj include mapp</translation> <translation>Välj include mapp</translation>
</message> </message>

View File

@ -222,12 +222,12 @@ kate -l(line) (file)</translation>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="main.ui" line="26"/> <location filename="main.ui" line="26"/>
<location filename="mainwindow.cpp" line="203"/> <location filename="mainwindow.cpp" line="202"/>
<location filename="mainwindow.cpp" line="233"/> <location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="524"/> <location filename="mainwindow.cpp" line="527"/>
<location filename="mainwindow.cpp" line="648"/> <location filename="mainwindow.cpp" line="651"/>
<location filename="mainwindow.cpp" line="666"/> <location filename="mainwindow.cpp" line="667"/>
<location filename="mainwindow.cpp" line="817"/> <location filename="mainwindow.cpp" line="808"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
@ -539,97 +539,103 @@ kate -l(line) (file)</translation>
<translation>&amp;Help</translation> <translation>&amp;Help</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="249"/> <location filename="mainwindow.cpp" line="245"/>
<source>Select files to check</source> <source>Select files to check</source>
<translation>Select files to check</translation> <translation>Select files to check</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="263"/> <location filename="mainwindow.cpp" line="259"/>
<source>Select directory to check</source> <source>Select directory to check</source>
<translation>Select directory to check</translation> <translation>Select directory to check</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="204"/> <location filename="mainwindow.cpp" line="203"/>
<source>No suitable files found to check!</source> <source>No suitable files found to check!</source>
<translation>No suitable files found to check!</translation> <translation>No suitable files found to check!</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="567"/> <location filename="mainwindow.cpp" line="570"/>
<source>License</source> <source>License</source>
<translation>License</translation> <translation>License</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="574"/> <location filename="mainwindow.cpp" line="577"/>
<source>Authors</source> <source>Authors</source>
<translation>Authors</translation> <translation>Authors</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="582"/> <location filename="mainwindow.cpp" line="585"/>
<source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source> <source>XML files version 2 (*.xml);;XML files version 1 (*.xml);;Text files (*.txt);;CSV files (*.csv)</source>
<oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource> <oldsource>XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</oldsource>
<translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation> <translation type="unfinished">XML files (*.xml);;Text files (*.txt);;CSV files (*.csv)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="584"/> <location filename="mainwindow.cpp" line="587"/>
<source>Save the report file</source> <source>Save the report file</source>
<translation>Save the report file</translation> <translation>Save the report file</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="443"/> <location filename="mainwindow.cpp" line="446"/>
<source>XML files (*.xml)</source> <source>XML files (*.xml)</source>
<translation>XML files (*.xml)</translation> <translation>XML files (*.xml)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="234"/> <location filename="mainwindow.cpp" line="230"/>
<source>You must close the project file before selecting new files or directories!</source> <source>You must close the project file before selecting new files or directories!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="306"/> <location filename="mainwindow.cpp" line="302"/>
<location filename="mainwindow.cpp" line="748"/> <location filename="mainwindow.cpp" line="739"/>
<location filename="mainwindow.cpp" line="794"/> <location filename="mainwindow.cpp" line="785"/>
<source>Project: </source> <source>Project: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="445"/> <location filename="mainwindow.cpp" line="448"/>
<source>Open the report file</source> <source>Open the report file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="520"/> <location filename="mainwindow.cpp" line="523"/>
<source>Checking is running. <source>Checking is running.
Do you want to stop the checking and exit Cppcheck?.</source> Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="592"/> <location filename="mainwindow.cpp" line="595"/>
<source>XML files version 1 (*.xml)</source> <source>XML files version 1 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="598"/> <location filename="mainwindow.cpp" line="601"/>
<source>XML files version 2 (*.xml)</source> <source>XML files version 2 (*.xml)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="604"/> <location filename="mainwindow.cpp" line="607"/>
<source>Text files (*.txt)</source> <source>Text files (*.txt)</source>
<translation>Text files (*.txt)</translation> <translation>Text files (*.txt)</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="610"/> <location filename="mainwindow.cpp" line="613"/>
<source>CSV files (*.csv)</source> <source>CSV files (*.csv)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="650"/> <location filename="mainwindow.cpp" line="653"/>
<source>Cppcheck - %1</source> <source>Cppcheck - %1</source>
<translation>Cppcheck - %1</translation> <translation>Cppcheck - %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="667"/> <location filename="mainwindow.cpp" line="668"/>
<source>Failed to change the language:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to change the language: <source>Failed to change the language:
%1 %1
@ -638,54 +644,54 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<oldsource>Failed to change language: <oldsource>Failed to change language:
%1</oldsource> %1</oldsource>
<translation>Failed to change language: <translation type="obsolete">Failed to change language:
%1</translation> %1</translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="706"/>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="715"/>
<location filename="mainwindow.cpp" line="724"/>
<source>Cppcheck Help</source> <source>Cppcheck Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="715"/> <location filename="mainwindow.cpp" line="706"/>
<source>Failed to load help file (not found)</source> <source>Failed to load help file (not found)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="724"/> <location filename="mainwindow.cpp" line="715"/>
<source>Failed to load help file</source> <source>Failed to load help file</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="738"/> <location filename="mainwindow.cpp" line="729"/>
<location filename="mainwindow.cpp" line="783"/> <location filename="mainwindow.cpp" line="774"/>
<source>Project files (*.cppcheck);;All files(*.*)</source> <source>Project files (*.cppcheck);;All files(*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="740"/> <location filename="mainwindow.cpp" line="731"/>
<source>Select Project File</source> <source>Select Project File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="785"/> <location filename="mainwindow.cpp" line="776"/>
<source>Select Project Filename</source> <source>Select Project Filename</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="mainwindow.cpp" line="818"/> <location filename="mainwindow.cpp" line="809"/>
<source>No project file loaded</source> <source>No project file loaded</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="33"/> <location filename="translationhandler.cpp" line="34"/>
<source>Finnish</source> <source>Finnish</source>
<translation>Finski</translation> <translation>Finski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="31"/> <location filename="translationhandler.cpp" line="33"/>
<source>English</source> <source>English</source>
<translation>Engleski</translation> <translation>Engleski</translation>
</message> </message>
@ -695,33 +701,38 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation>Holandski</translation> <translation>Holandski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="34"/> <location filename="translationhandler.cpp" line="35"/>
<source>French</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="41"/>
<source>Swedish</source> <source>Swedish</source>
<translation>Švedski</translation> <translation>Švedski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="35"/> <location filename="translationhandler.cpp" line="36"/>
<source>German</source> <source>German</source>
<translation>Nemački</translation> <translation>Nemački</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="36"/> <location filename="translationhandler.cpp" line="39"/>
<source>Russian</source> <source>Russian</source>
<translation>Ruski</translation> <translation>Ruski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="37"/> <location filename="translationhandler.cpp" line="38"/>
<source>Polish</source> <source>Polish</source>
<translation>Poljski</translation> <translation>Poljski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="38"/> <location filename="translationhandler.cpp" line="37"/>
<source>Japanese</source> <source>Japanese</source>
<oldsource>Japanease</oldsource> <oldsource>Japanease</oldsource>
<translation type="unfinished">Japanski</translation> <translation type="unfinished">Japanski</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="39"/> <location filename="translationhandler.cpp" line="40"/>
<source>Serbian</source> <source>Serbian</source>
<translation>Srpski</translation> <translation>Srpski</translation>
</message> </message>
@ -753,28 +764,50 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="22"/> <location filename="projectfile.ui" line="24"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="34"/>
<source>Project:</source> <source>Project:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="39"/> <location filename="projectfile.ui" line="70"/>
<source>Paths:</source> <source>Paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="52"/> <location filename="projectfile.ui" line="97"/>
<location filename="projectfile.ui" line="76"/> <location filename="projectfile.ui" line="162"/>
<source>Browse...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="63"/> <location filename="projectfile.ui" line="104"/>
<source>Include paths:</source> <location filename="projectfile.ui" line="169"/>
<source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="projectfile.ui" line="87"/> <location filename="projectfile.ui" line="111"/>
<location filename="projectfile.ui" line="176"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="138"/>
<source>Includes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="144"/>
<source>Include directories:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="projectfile.ui" line="51"/>
<source>Defines:</source> <source>Defines:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -800,18 +833,22 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="translationhandler.cpp" line="96"/>
<source>Incorrect language specified!</source> <source>Incorrect language specified!</source>
<translation>Incorrect language specified!</translation> <translation type="obsolete">Incorrect language specified!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="106"/> <location filename="translationhandler.cpp" line="89"/>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="translationhandler.cpp" line="99"/>
<source>Language file %1 not found!</source> <source>Language file %1 not found!</source>
<oldsource>Language file %1.qm not found!</oldsource> <oldsource>Language file %1.qm not found!</oldsource>
<translation>Could not find the file: %1!</translation> <translation>Could not find the file: %1!</translation>
</message> </message>
<message> <message>
<location filename="translationhandler.cpp" line="112"/> <location filename="translationhandler.cpp" line="105"/>
<source>Failed to load translation for language %1 from file %2</source> <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> <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> <translation>Failed to load translation for language %1 from file %2</translation>
@ -821,71 +858,71 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>ResultsTree</name> <name>ResultsTree</name>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>File</source> <source>File</source>
<translation>File</translation> <translation>File</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Severity</source> <source>Severity</source>
<translation>Severity</translation> <translation>Severity</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Line</source> <source>Line</source>
<translation>Line</translation> <translation>Line</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="59"/> <location filename="resultstree.cpp" line="59"/>
<location filename="resultstree.cpp" line="978"/> <location filename="resultstree.cpp" line="982"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="108"/> <location filename="resultstree.cpp" line="109"/>
<source>Undefined file</source> <source>Undefined file</source>
<translation>Undefined file</translation> <translation>Undefined file</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="508"/> <location filename="resultstree.cpp" line="509"/>
<source>Copy filename</source> <source>Copy filename</source>
<translation>Copy filename</translation> <translation>Copy filename</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="509"/> <location filename="resultstree.cpp" line="510"/>
<source>Copy full path</source> <source>Copy full path</source>
<translation>Copy full path</translation> <translation>Copy full path</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="510"/> <location filename="resultstree.cpp" line="511"/>
<source>Copy message</source> <source>Copy message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="511"/> <location filename="resultstree.cpp" line="512"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="558"/> <location filename="resultstree.cpp" line="559"/>
<source>Cppcheck</source> <source>Cppcheck</source>
<translation>Cppcheck</translation> <translation>Cppcheck</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="559"/> <location filename="resultstree.cpp" line="560"/>
<source>Configure the text file viewer program in Cppcheck preferences/Applications.</source> <source>Configure the text file viewer program in Cppcheck preferences/Applications.</source>
<oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource> <oldsource>You can open this error by specifying applications in program&apos;s settings.</oldsource>
<translation>You can open this error by specifying applications in program&apos;s settings.</translation> <translation>You can open this error by specifying applications in program&apos;s settings.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="586"/> <location filename="resultstree.cpp" line="590"/>
<source>Could not find the file!</source> <source>Could not find the file!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="624"/> <location filename="resultstree.cpp" line="628"/>
<source>Could not start %1 <source>Could not start %1
Please check the application path and parameters are correct.</source> Please check the application path and parameters are correct.</source>
@ -894,44 +931,44 @@ Please check the application path and parameters are correct.</source>
Please check the application path and parameters are correct.</translation> Please check the application path and parameters are correct.</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="638"/> <location filename="resultstree.cpp" line="642"/>
<source>Could not find file: <source>Could not find file:
%1 %1
Please select the directory where file is located.</source> Please select the directory where file is located.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="645"/> <location filename="resultstree.cpp" line="649"/>
<source>Select Directory</source> <source>Select Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="827"/> <location filename="resultstree.cpp" line="831"/>
<source>style</source> <source>style</source>
<translation>Style</translation> <translation>Style</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="831"/> <location filename="resultstree.cpp" line="835"/>
<source>error</source> <source>error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="835"/> <location filename="resultstree.cpp" line="839"/>
<source>warning</source> <source>warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="839"/> <location filename="resultstree.cpp" line="843"/>
<source>performance</source> <source>performance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="843"/> <location filename="resultstree.cpp" line="847"/>
<source>portability</source> <source>portability</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="resultstree.cpp" line="847"/> <location filename="resultstree.cpp" line="851"/>
<source>information</source> <source>information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1003,98 +1040,121 @@ To toggle what kind of errors are shown, open view menu.</translation>
<translation>General</translation> <translation>General</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="32"/> <location filename="settings.ui" line="169"/>
<source>Include paths:</source> <source>Include paths:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="45"/> <location filename="settings.ui" line="187"/>
<location filename="settings.ui" line="239"/>
<source>Add...</source> <source>Add...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="65"/> <location filename="settings.ui" line="41"/>
<source>Number of threads: </source> <source>Number of threads: </source>
<translation>Number of threads: </translation> <translation>Number of threads: </translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="109"/> <location filename="settings.ui" line="85"/>
<source>Ideal count:</source> <source>Ideal count:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="116"/> <location filename="settings.ui" line="92"/>
<source>TextLabel</source> <source>TextLabel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="138"/> <location filename="settings.ui" line="114"/>
<source>Force checking all #ifdef configurations</source> <source>Force checking all #ifdef configurations</source>
<oldsource>Check all #ifdef configurations</oldsource> <oldsource>Check all #ifdef configurations</oldsource>
<translation type="unfinished">Check all #ifdef configurations</translation> <translation type="unfinished">Check all #ifdef configurations</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="145"/> <location filename="settings.ui" line="121"/>
<source>Show full path of files</source> <source>Show full path of files</source>
<translation>Show full path of files</translation> <translation>Show full path of files</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="152"/> <location filename="settings.ui" line="128"/>
<source>Show &quot;No errors found&quot; message when no errors found</source> <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> <translation>Show &quot;No errors found&quot; message when no errors found</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="159"/> <location filename="settings.ui" line="135"/>
<source>Show internal warnings in log</source> <source>Show internal warnings in log</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="166"/> <location filename="settings.ui" line="142"/>
<source>Enable inline suppressions</source> <source>Enable inline suppressions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="187"/> <location filename="settings.ui" line="163"/>
<source>Paths</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="194"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="201"/>
<location filename="settings.ui" line="253"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="226"/>
<source>Applications</source> <source>Applications</source>
<translation>Applications</translation> <translation>Applications</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="196"/> <location filename="settings.ui" line="246"/>
<source>Edit...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settings.ui" line="260"/>
<source>Set as default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add application</source> <source>Add application</source>
<translation>Add application</translation> <translation type="obsolete">Add application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="203"/>
<source>Delete application</source> <source>Delete application</source>
<translation>Delete application</translation> <translation type="obsolete">Delete application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="210"/>
<source>Modify application</source> <source>Modify application</source>
<translation>Modify application</translation> <translation type="obsolete">Modify application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="217"/>
<source>Set as default application</source> <source>Set as default application</source>
<translation>Set as default application</translation> <translation type="obsolete">Set as default application</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="225"/> <location filename="settings.ui" line="285"/>
<source>Reports</source> <source>Reports</source>
<translation>Reports</translation> <translation>Reports</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="231"/> <location filename="settings.ui" line="291"/>
<source>Save all errors when creating report</source> <source>Save all errors when creating report</source>
<translation>Save all errors when creating report</translation> <translation>Save all errors when creating report</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="238"/> <location filename="settings.ui" line="298"/>
<source>Save full path to files in reports</source> <source>Save full path to files in reports</source>
<translation>Save full path to files in reports</translation> <translation>Save full path to files in reports</translation>
</message> </message>
<message> <message>
<location filename="settings.ui" line="259"/> <location filename="settings.ui" line="319"/>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1102,22 +1162,27 @@ To toggle what kind of errors are shown, open view menu.</translation>
<context> <context>
<name>SettingsDialog</name> <name>SettingsDialog</name>
<message> <message>
<location filename="settingsdialog.cpp" line="81"/> <location filename="settingsdialog.cpp" line="84"/>
<source>N/A</source> <source>N/A</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="161"/> <location filename="settingsdialog.cpp" line="201"/>
<source>Add a new application</source> <source>Add a new application</source>
<translation>Add a new application</translation> <translation>Add a new application</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="194"/> <location filename="settingsdialog.cpp" line="239"/>
<source>Modify an application</source> <source>Modify an application</source>
<translation>Modify an application</translation> <translation>Modify an application</translation>
</message> </message>
<message> <message>
<location filename="settingsdialog.cpp" line="259"/> <location filename="settingsdialog.cpp" line="270"/>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="settingsdialog.cpp" line="317"/>
<source>Select include directory</source> <source>Select include directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -96,12 +96,54 @@ void FileList::AddPathList(const QStringList &paths)
QStringList FileList::GetFileList() const QStringList FileList::GetFileList() const
{ {
QStringList names; if (mIgnoredPaths.empty())
QFileInfo item; {
foreach(item, mFileList) QStringList names;
foreach(QFileInfo item, mFileList)
{
QString name = QDir::fromNativeSeparators(item.canonicalFilePath());
names << name;
}
return names;
}
else
{
return ApplyIgnoreList();
}
}
void FileList::AddIngoreList(const QStringList &paths)
{
mIgnoredPaths = paths;
}
QStringList FileList::ApplyIgnoreList() const
{
QStringList paths;
foreach(QFileInfo item, mFileList)
{ {
QString name = QDir::fromNativeSeparators(item.canonicalFilePath()); QString name = QDir::fromNativeSeparators(item.canonicalFilePath());
names << name; if (!Match(name))
paths << name;
} }
return names; return paths;
}
bool FileList::Match(const QString &path) const
{
for (int i = 0; i < mIgnoredPaths.size(); i++)
{
if (mIgnoredPaths[i].endsWith('/'))
{
const QString pathignore("/" + mIgnoredPaths[i]);
if (path.indexOf(pathignore) != -1)
return true;
}
else
{
if (path.endsWith(mIgnoredPaths[i]))
return true;
}
}
return false;
} }

View File

@ -30,6 +30,10 @@
* can be also added recursively when all files in subdirectories are added too. * can be also added recursively when all files in subdirectories are added too.
* The filenames are matched against the filter and only those files whose * The filenames are matched against the filter and only those files whose
* filename extension is included in the filter list are added. * filename extension is included in the filter list are added.
*
* This class also handles filtering of paths against ignore filters given. If
* there is ignore filters then only paths not matching those filters are
* returned.
*/ */
class FileList class FileList
{ {
@ -60,6 +64,12 @@ public:
*/ */
QStringList GetFileList() const; QStringList GetFileList() const;
/**
* @brief Add list of paths to ignore list.
* @param paths Paths to ignore.
*/
void AddIngoreList(const QStringList &paths);
protected: protected:
/** /**
@ -74,8 +84,25 @@ protected:
*/ */
bool FilterMatches(const QFileInfo &inf); bool FilterMatches(const QFileInfo &inf);
/**
* @brief Get filtered list of paths.
* This method takes the list of paths and applies the ignore lists to
* it. And then returns the list of paths that did not match the
* ignore filters.
* @return Filtered list of paths.
*/
QStringList ApplyIgnoreList() const;
/**
* @brief Test if path matches any of the ignore filters.
* @param path Path to test against filters.
* @return true if any of the filters matches, false otherwise.
*/
bool Match(const QString &path) const;
private: private:
QFileInfoList mFileList; QFileInfoList mFileList;
QStringList mIgnoredPaths;
}; };
#endif // FILELIST_H #endif // FILELIST_H

View File

@ -191,6 +191,8 @@ void MainWindow::DoCheckFiles(const QStringList &files)
FileList pathList; FileList pathList;
pathList.AddPathList(files); pathList.AddPathList(files);
if (mProject)
pathList.AddIngoreList(mProject->GetProjectFile()->GetIgnoredPaths());
QStringList fileNames = pathList.GetFileList(); QStringList fileNames = pathList.GetFileList();
mUI.mResults->Clear(); mUI.mResults->Clear();
@ -724,8 +726,6 @@ void MainWindow::OpenHtmlHelpContents()
void MainWindow::OpenProjectFile() void MainWindow::OpenProjectFile()
{ {
delete mProject;
const QString filter = tr("Project files (*.cppcheck);;All files(*.*)"); const QString filter = tr("Project files (*.cppcheck);;All files(*.*)");
QString filepath = QFileDialog::getOpenFileName(this, QString filepath = QFileDialog::getOpenFileName(this,
tr("Select Project File"), tr("Select Project File"),
@ -740,6 +740,7 @@ void MainWindow::OpenProjectFile()
mUI.mActionCloseProjectFile->setEnabled(true); mUI.mActionCloseProjectFile->setEnabled(true);
mUI.mActionEditProjectFile->setEnabled(true); mUI.mActionEditProjectFile->setEnabled(true);
delete mProject;
mProject = new Project(filepath, this); mProject = new Project(filepath, this);
mProject->Open(); mProject->Open();
QString rootpath = mProject->GetProjectFile()->GetRootPath(); QString rootpath = mProject->GetProjectFile()->GetRootPath();

View File

@ -85,6 +85,9 @@ void Project::Edit()
dlg.SetDefines(defines); dlg.SetDefines(defines);
QStringList paths = mPFile->GetCheckPaths(); QStringList paths = mPFile->GetCheckPaths();
dlg.SetPaths(paths); dlg.SetPaths(paths);
QStringList ignorepaths = mPFile->GetIgnoredPaths();
dlg.SetIgnorePaths(ignorepaths);
int rv = dlg.exec(); int rv = dlg.exec();
if (rv == QDialog::Accepted) if (rv == QDialog::Accepted)
{ {
@ -96,6 +99,9 @@ void Project::Edit()
mPFile->SetDefines(defines); mPFile->SetDefines(defines);
QStringList paths = dlg.GetPaths(); QStringList paths = dlg.GetPaths();
mPFile->SetCheckPaths(paths); mPFile->SetCheckPaths(paths);
QStringList ignorepaths = dlg.GetIgnorePaths();
mPFile->SetIgnoredPaths(ignorepaths);
bool writeSuccess = mPFile->Write(); bool writeSuccess = mPFile->Write();
if (!writeSuccess) if (!writeSuccess)
{ {

View File

@ -21,6 +21,7 @@
#include <QXmlStreamReader> #include <QXmlStreamReader>
#include <QXmlStreamWriter> #include <QXmlStreamWriter>
#include <QFile> #include <QFile>
#include <QDir>
#include "projectfile.h" #include "projectfile.h"
static const char ProjectElementName[] = "project"; static const char ProjectElementName[] = "project";
@ -37,6 +38,9 @@ static const char PathName[] = "dir";
static const char PathNameAttrib[] = "name"; static const char PathNameAttrib[] = "name";
static const char RootPathName[] = "root"; static const char RootPathName[] = "root";
static const char RootPathNameAttrib[] = "name"; static const char RootPathNameAttrib[] = "name";
static const char IgnoreElementName[] = "ignore";
static const char IgnorePathName[] = "path";
static const char IgnorePathNameAttrib[] = "name";
ProjectFile::ProjectFile(QObject *parent) : ProjectFile::ProjectFile(QObject *parent) :
QObject(parent) QObject(parent)
@ -87,6 +91,10 @@ bool ProjectFile::Read(const QString &filename)
if (insideProject && xmlReader.name() == DefinesElementName) if (insideProject && xmlReader.name() == DefinesElementName)
ReadDefines(xmlReader); ReadDefines(xmlReader);
// Find ignore list from inside project element
if (insideProject && xmlReader.name() == IgnoreElementName)
ReadIgnores(xmlReader);
break; break;
case QXmlStreamReader::EndElement: case QXmlStreamReader::EndElement:
@ -117,7 +125,12 @@ bool ProjectFile::Read(const QString &filename)
QStringList ProjectFile::GetIncludeDirs() const QStringList ProjectFile::GetIncludeDirs() const
{ {
return mIncludeDirs; QStringList dirs;
foreach(QString path, mIncludeDirs)
{
dirs << QDir::fromNativeSeparators(path);
}
return dirs;
} }
QStringList ProjectFile::GetDefines() const QStringList ProjectFile::GetDefines() const
@ -127,7 +140,22 @@ QStringList ProjectFile::GetDefines() const
QStringList ProjectFile::GetCheckPaths() const QStringList ProjectFile::GetCheckPaths() const
{ {
return mPaths; QStringList paths;
foreach(QString path, mPaths)
{
paths << QDir::fromNativeSeparators(path);
}
return paths;
}
QStringList ProjectFile::GetIgnoredPaths() const
{
QStringList paths;
foreach(QString path, mIgnoredPaths)
{
paths << QDir::fromNativeSeparators(path);
}
return paths;
} }
void ProjectFile::ReadRootPath(QXmlStreamReader &reader) void ProjectFile::ReadRootPath(QXmlStreamReader &reader)
@ -263,21 +291,67 @@ void ProjectFile::ReadCheckPaths(QXmlStreamReader &reader)
while (!allRead); while (!allRead);
} }
void ProjectFile::SetIncludes(QStringList includes) void ProjectFile::ReadIgnores(QXmlStreamReader &reader)
{
QXmlStreamReader::TokenType type;
bool allRead = false;
do
{
type = reader.readNext();
switch (type)
{
case QXmlStreamReader::StartElement:
// Read define-elements
if (reader.name().toString() == IgnorePathName)
{
QXmlStreamAttributes attribs = reader.attributes();
QString name = attribs.value("", IgnorePathNameAttrib).toString();
if (!name.isEmpty())
mIgnoredPaths << name;
}
break;
case QXmlStreamReader::EndElement:
if (reader.name().toString() == IgnoreElementName)
allRead = true;
break;
// Not handled
case QXmlStreamReader::NoToken:
case QXmlStreamReader::Invalid:
case QXmlStreamReader::StartDocument:
case QXmlStreamReader::EndDocument:
case QXmlStreamReader::Characters:
case QXmlStreamReader::Comment:
case QXmlStreamReader::DTD:
case QXmlStreamReader::EntityReference:
case QXmlStreamReader::ProcessingInstruction:
break;
}
}
while (!allRead);
}
void ProjectFile::SetIncludes(const QStringList &includes)
{ {
mIncludeDirs = includes; mIncludeDirs = includes;
} }
void ProjectFile::SetDefines(QStringList defines) void ProjectFile::SetDefines(const QStringList &defines)
{ {
mDefines = defines; mDefines = defines;
} }
void ProjectFile::SetCheckPaths(QStringList paths) void ProjectFile::SetCheckPaths(const QStringList &paths)
{ {
mPaths = paths; mPaths = paths;
} }
void ProjectFile::SetIgnoredPaths(const QStringList &paths)
{
mIgnoredPaths = paths;
}
bool ProjectFile::Write(const QString &filename) bool ProjectFile::Write(const QString &filename)
{ {
if (!filename.isEmpty()) if (!filename.isEmpty())
@ -303,8 +377,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mIncludeDirs.isEmpty()) if (!mIncludeDirs.isEmpty())
{ {
xmlWriter.writeStartElement(IncludDirElementName); xmlWriter.writeStartElement(IncludDirElementName);
QString incdir; foreach(QString incdir, mIncludeDirs)
foreach(incdir, mIncludeDirs)
{ {
xmlWriter.writeStartElement(DirElementName); xmlWriter.writeStartElement(DirElementName);
xmlWriter.writeAttribute(DirNameAttrib, incdir); xmlWriter.writeAttribute(DirNameAttrib, incdir);
@ -316,8 +389,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mDefines.isEmpty()) if (!mDefines.isEmpty())
{ {
xmlWriter.writeStartElement(DefinesElementName); xmlWriter.writeStartElement(DefinesElementName);
QString define; foreach(QString define, mDefines)
foreach(define, mDefines)
{ {
xmlWriter.writeStartElement(DefineName); xmlWriter.writeStartElement(DefineName);
xmlWriter.writeAttribute(DefineNameAttrib, define); xmlWriter.writeAttribute(DefineNameAttrib, define);
@ -329,8 +401,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mPaths.isEmpty()) if (!mPaths.isEmpty())
{ {
xmlWriter.writeStartElement(PathsElementName); xmlWriter.writeStartElement(PathsElementName);
QString path; foreach(QString path, mPaths)
foreach(path, mPaths)
{ {
xmlWriter.writeStartElement(PathName); xmlWriter.writeStartElement(PathName);
xmlWriter.writeAttribute(PathNameAttrib, path); xmlWriter.writeAttribute(PathNameAttrib, path);
@ -339,6 +410,18 @@ bool ProjectFile::Write(const QString &filename)
xmlWriter.writeEndElement(); xmlWriter.writeEndElement();
} }
if (!mIgnoredPaths.isEmpty())
{
xmlWriter.writeStartElement(IgnoreElementName);
foreach(QString path, mIgnoredPaths)
{
xmlWriter.writeStartElement(IgnorePathName);
xmlWriter.writeAttribute(IgnorePathNameAttrib, path);
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
}
xmlWriter.writeEndDocument(); xmlWriter.writeEndDocument();
file.close(); file.close();
return true; return true;

View File

@ -74,6 +74,12 @@ public:
*/ */
QStringList GetCheckPaths() const; QStringList GetCheckPaths() const;
/**
* @brief Get list of paths to ignore.
* @return list of paths.
*/
QStringList GetIgnoredPaths() const;
/** /**
* @brief Set project root path. * @brief Set project root path.
* @param rootpath new project root path. * @param rootpath new project root path.
@ -87,19 +93,25 @@ public:
* @brief Set list of includes. * @brief Set list of includes.
* @param includes List of defines. * @param includes List of defines.
*/ */
void SetIncludes(QStringList includes); void SetIncludes(const QStringList &includes);
/** /**
* @brief Set list of defines. * @brief Set list of defines.
* @param defines List of defines. * @param defines List of defines.
*/ */
void SetDefines(QStringList defines); void SetDefines(const QStringList &defines);
/** /**
* @brief Set list of paths to check. * @brief Set list of paths to check.
* @param defines List of paths. * @param defines List of paths.
*/ */
void SetCheckPaths(QStringList paths); void SetCheckPaths(const QStringList &paths);
/**
* @brief Set list of paths to ignore.
* @param defines List of paths.
*/
void SetIgnoredPaths(const QStringList &paths);
/** /**
* @brief Write project file (to disk). * @brief Write project file (to disk).
@ -142,6 +154,12 @@ protected:
*/ */
void ReadCheckPaths(QXmlStreamReader &reader); void ReadCheckPaths(QXmlStreamReader &reader);
/**
* @brief Read lists of ignores.
* @param reader XML stream reader.
*/
void ReadIgnores(QXmlStreamReader &reader);
private: private:
/** /**
@ -171,6 +189,11 @@ private:
* @brief List of paths to check. * @brief List of paths to check.
*/ */
QStringList mPaths; QStringList mPaths;
/**
* @brief Paths ignored from the check.
*/
QStringList mIgnoredPaths;
}; };
/// @} /// @}
#endif // PROJECT_FILE_H #endif // PROJECT_FILE_H

View File

@ -27,6 +27,9 @@ program. The format is:
<define name="_MSC_VER=1400" /> <define name="_MSC_VER=1400" />
<define name="_WIN32" /> <define name="_WIN32" />
</defines> </defines>
<ignore>
<path name="gui/temp/" />
</ignore>
</project> </project>
where: where:
@ -42,5 +45,7 @@ where:
recommended that relative paths are used for paths inside the project root recommended that relative paths are used for paths inside the project root
folder for better portability. folder for better portability.
- defines element contains a list of C/C++ preprocessor defines. - defines element contains a list of C/C++ preprocessor defines.
- ignore element contains list of paths to ignore. The path can be a
directory (must end with path separator) or file.
See also gui.cppcheck file in gui-directory of cppcheck sources. See also gui.cppcheck file in gui-directory of cppcheck sources.

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>467</width>
<height>159</height> <height>329</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -15,99 +15,247 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <widget class="QTabWidget" name="tabWidget">
<item> <property name="currentIndex">
<widget class="QLabel" name="label_4"> <number>2</number>
<property name="text">
<string>Project:</string>
</property>
<property name="buddy">
<cstring>mEditProjectRoot</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditProjectRoot"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Paths:</string>
</property>
<property name="buddy">
<cstring>mEditPaths</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditPaths"/>
</item>
<item>
<widget class="QPushButton" name="mBtnBrowsePaths">
<property name="text">
<string>Browse...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Include paths:</string>
</property>
<property name="buddy">
<cstring>mEditIncludePaths</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditIncludePaths"/>
</item>
<item>
<widget class="QPushButton" name="mBtnBrowseIncludes">
<property name="text">
<string>Browse...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Defines:</string>
</property>
<property name="buddy">
<cstring>mEditDefines</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditDefines"/>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <widget class="QWidget" name="tab">
<size> <attribute name="title">
<width>20</width> <string>Project</string>
<height>40</height> </attribute>
</size> <layout class="QVBoxLayout" name="verticalLayout_7">
</property> <item>
</spacer> <layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Project:</string>
</property>
<property name="buddy">
<cstring>mEditProjectRoot</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditProjectRoot"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Defines:</string>
</property>
<property name="buddy">
<cstring>mEditDefines</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditDefines"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Paths:</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QListWidget" name="mListPaths"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="mBtnAddPath">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnEditPath">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnRemovePath">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Includes</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Include directories:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="mListIncludeDirs">
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="mBtnAddInclude">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnEditInclude">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnRemoveInclude">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Ignore</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Paths:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QListWidget" name="mListIgnoredPaths"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QPushButton" name="mBtnAddIgnorePath">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnEditIgnorePath">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnRemoveIgnorePath">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="mButtons"> <widget class="QDialogButtonBox" name="mButtons">
@ -122,13 +270,18 @@
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>mEditProjectRoot</tabstop>
<tabstop>mEditPaths</tabstop>
<tabstop>mBtnBrowsePaths</tabstop>
<tabstop>mEditIncludePaths</tabstop>
<tabstop>mBtnBrowseIncludes</tabstop>
<tabstop>mEditDefines</tabstop>
<tabstop>mButtons</tabstop> <tabstop>mButtons</tabstop>
<tabstop>tabWidget</tabstop>
<tabstop>mEditProjectRoot</tabstop>
<tabstop>mEditDefines</tabstop>
<tabstop>mListPaths</tabstop>
<tabstop>mBtnAddPath</tabstop>
<tabstop>mBtnEditPath</tabstop>
<tabstop>mBtnRemovePath</tabstop>
<tabstop>mListIncludeDirs</tabstop>
<tabstop>mBtnAddInclude</tabstop>
<tabstop>mBtnEditInclude</tabstop>
<tabstop>mBtnRemoveInclude</tabstop>
</tabstops> </tabstops>
<resources/> <resources/>
<connections> <connections>
@ -139,8 +292,8 @@
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>257</x> <x>266</x>
<y>148</y> <y>319</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>157</x> <x>157</x>
@ -155,8 +308,8 @@
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>325</x> <x>334</x>
<y>148</y> <y>319</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>286</x> <x>286</x>

View File

@ -37,31 +37,68 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
setWindowTitle(title); setWindowTitle(title);
connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept())); connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept()));
connect(mUI.mBtnBrowseIncludes, SIGNAL(clicked()), this, SLOT(BrowseIncludes())); connect(mUI.mBtnAddInclude, SIGNAL(clicked()), this, SLOT(AddIncludeDir()));
connect(mUI.mBtnBrowsePaths, SIGNAL(clicked()), this, SLOT(BrowsePaths())); connect(mUI.mBtnAddPath, SIGNAL(clicked()), this, SLOT(AddPath()));
connect(mUI.mBtnEditInclude, SIGNAL(clicked()), this, SLOT(EditIncludeDir()));
connect(mUI.mBtnRemoveInclude, SIGNAL(clicked()), this, SLOT(RemoveIncludeDir()));
connect(mUI.mBtnEditPath, SIGNAL(clicked()), this, SLOT(EditPath()));
connect(mUI.mBtnRemovePath, SIGNAL(clicked()), this, SLOT(RemovePath()));
connect(mUI.mBtnAddIgnorePath, SIGNAL(clicked()), this, SLOT(AddIgnorePath()));
connect(mUI.mBtnEditIgnorePath, SIGNAL(clicked()), this, SLOT(EditIgnorePath()));
connect(mUI.mBtnRemoveIgnorePath, SIGNAL(clicked()), this, SLOT(RemoveIgnorePath()));
}
void ProjectFileDialog::AddIncludeDir(const QString &dir)
{
if (dir.isNull() || dir.isEmpty())
return;
const QString newdir = QDir::toNativeSeparators(dir);
QListWidgetItem *item = new QListWidgetItem(newdir);
item->setFlags(item->flags() | Qt::ItemIsEditable);
mUI.mListIncludeDirs->addItem(item);
}
void ProjectFileDialog::AddPath(const QString &path)
{
if (path.isNull() || path.isEmpty())
return;
const QString newpath = QDir::toNativeSeparators(path);
QListWidgetItem *item = new QListWidgetItem(newpath);
item->setFlags(item->flags() | Qt::ItemIsEditable);
mUI.mListPaths->addItem(item);
}
void ProjectFileDialog::AddIgnorePath(const QString &path)
{
if (path.isNull() || path.isEmpty())
return;
const QString newpath = QDir::toNativeSeparators(path);
QListWidgetItem *item = new QListWidgetItem(newpath);
item->setFlags(item->flags() | Qt::ItemIsEditable);
mUI.mListIgnoredPaths->addItem(item);
} }
QString ProjectFileDialog::GetRootPath() const QString ProjectFileDialog::GetRootPath() const
{ {
QString root = mUI.mEditProjectRoot->text(); QString root = mUI.mEditProjectRoot->text();
root = root.trimmed(); root = root.trimmed();
root = QDir::fromNativeSeparators(root);
return root; return root;
} }
QStringList ProjectFileDialog::GetIncludePaths() const QStringList ProjectFileDialog::GetIncludePaths() const
{ {
QString include = mUI.mEditIncludePaths->text(); const int count = mUI.mListIncludeDirs->count();
QStringList includes; QStringList includePaths;
if (!include.isEmpty()) for (int i = 0; i < count; i++)
{ {
include = include.trimmed(); QListWidgetItem *item = mUI.mListIncludeDirs->item(i);
include = QDir::fromNativeSeparators(include); includePaths << QDir::fromNativeSeparators(item->text());
if (include.indexOf(';') != -1)
includes = include.split(";");
else
includes.append(include);
} }
return includes; return includePaths;
} }
QStringList ProjectFileDialog::GetDefines() const QStringList ProjectFileDialog::GetDefines() const
@ -81,39 +118,40 @@ QStringList ProjectFileDialog::GetDefines() const
QStringList ProjectFileDialog::GetPaths() const QStringList ProjectFileDialog::GetPaths() const
{ {
QString path = mUI.mEditPaths->text(); const int count = mUI.mListPaths->count();
QStringList paths; QStringList paths;
if (!path.isEmpty()) for (int i = 0; i < count; i++)
{ {
path = path.trimmed(); QListWidgetItem *item = mUI.mListPaths->item(i);
path = QDir::fromNativeSeparators(path); paths << QDir::fromNativeSeparators(item->text());
if (path.indexOf(';') != -1) }
paths = path.split(";"); return paths;
else }
paths.append(path);
QStringList ProjectFileDialog::GetIgnorePaths() const
{
const int count = mUI.mListIgnoredPaths->count();
QStringList paths;
for (int i = 0; i < count; i++)
{
QListWidgetItem *item = mUI.mListIgnoredPaths->item(i);
paths << QDir::fromNativeSeparators(item->text());
} }
return paths; return paths;
} }
void ProjectFileDialog::SetRootPath(const QString &root) void ProjectFileDialog::SetRootPath(const QString &root)
{ {
mUI.mEditProjectRoot->setText(root); QString newroot = QDir::toNativeSeparators(root);
mUI.mEditProjectRoot->setText(newroot);
} }
void ProjectFileDialog::SetIncludepaths(const QStringList &includes) void ProjectFileDialog::SetIncludepaths(const QStringList &includes)
{ {
QString includestr; foreach(QString dir, includes)
QString dir;
foreach(dir, includes)
{ {
includestr += dir; AddIncludeDir(dir);
includestr += ";";
} }
// Remove ; from the end of the string
if (includestr.endsWith(';'))
includestr = includestr.left(includestr.length() - 1);
includestr = QDir::toNativeSeparators(includestr);
mUI.mEditIncludePaths->setText(includestr);
} }
void ProjectFileDialog::SetDefines(const QStringList &defines) void ProjectFileDialog::SetDefines(const QStringList &defines)
@ -133,21 +171,21 @@ void ProjectFileDialog::SetDefines(const QStringList &defines)
void ProjectFileDialog::SetPaths(const QStringList &paths) void ProjectFileDialog::SetPaths(const QStringList &paths)
{ {
QString pathstr; foreach(QString path, paths)
QString path;
foreach(path, paths)
{ {
pathstr += path; AddPath(path);
pathstr += ";";
} }
// Remove ; from the end of the string
if (pathstr.endsWith(';'))
pathstr = pathstr.left(pathstr.length() - 1);
pathstr = QDir::toNativeSeparators(pathstr);
mUI.mEditPaths->setText(pathstr);
} }
void ProjectFileDialog::BrowseIncludes() void ProjectFileDialog::SetIgnorePaths(const QStringList &paths)
{
foreach(QString path, paths)
{
AddIgnorePath(path);
}
}
void ProjectFileDialog::AddIncludeDir()
{ {
QString selectedDir = QFileDialog::getExistingDirectory(this, QString selectedDir = QFileDialog::getExistingDirectory(this,
tr("Select include directory"), tr("Select include directory"),
@ -155,11 +193,11 @@ void ProjectFileDialog::BrowseIncludes()
if (!selectedDir.isEmpty()) if (!selectedDir.isEmpty())
{ {
AppendDirname(mUI.mEditIncludePaths, selectedDir); AddIncludeDir(selectedDir);
} }
} }
void ProjectFileDialog::BrowsePaths() void ProjectFileDialog::AddPath()
{ {
QString selectedDir = QFileDialog::getExistingDirectory(this, QString selectedDir = QFileDialog::getExistingDirectory(this,
tr("Select directory to check"), tr("Select directory to check"),
@ -167,16 +205,59 @@ void ProjectFileDialog::BrowsePaths()
if (!selectedDir.isEmpty()) if (!selectedDir.isEmpty())
{ {
AppendDirname(mUI.mEditPaths, selectedDir); AddPath(selectedDir);
} }
} }
void ProjectFileDialog::AppendDirname(QLineEdit *edit, const QString &dir) void ProjectFileDialog::RemoveIncludeDir()
{ {
QString wholeText = edit->text(); const int row = mUI.mListIncludeDirs->currentRow();
wholeText += ";"; QListWidgetItem *item = mUI.mListIncludeDirs->takeItem(row);
wholeText += dir; delete item;
if (!wholeText.endsWith(QDir::separator())) }
wholeText += QDir::separator();
edit->setText(wholeText); void ProjectFileDialog::EditIncludeDir()
{
QListWidgetItem *item = mUI.mListIncludeDirs->currentItem();
mUI.mListIncludeDirs->editItem(item);
}
void ProjectFileDialog::EditPath()
{
QListWidgetItem *item = mUI.mListPaths->currentItem();
mUI.mListPaths->editItem(item);
}
void ProjectFileDialog::RemovePath()
{
const int row = mUI.mListPaths->currentRow();
QListWidgetItem *item = mUI.mListPaths->takeItem(row);
delete item;
}
void ProjectFileDialog::AddIgnorePath()
{
QString selectedDir = QFileDialog::getExistingDirectory(this,
tr("Select directory to ignore"),
QString());
if (!selectedDir.isEmpty())
{
if (!selectedDir.endsWith('/'))
selectedDir += '/';
AddIgnorePath(selectedDir);
}
}
void ProjectFileDialog::EditIgnorePath()
{
QListWidgetItem *item = mUI.mListIgnoredPaths->currentItem();
mUI.mListIgnoredPaths->editItem(item);
}
void ProjectFileDialog::RemoveIgnorePath()
{
const int row = mUI.mListIgnoredPaths->currentRow();
QListWidgetItem *item = mUI.mListIgnoredPaths->takeItem(row);
delete item;
} }

View File

@ -66,6 +66,12 @@ public:
*/ */
QStringList GetPaths() const; QStringList GetPaths() const;
/**
* @brief Return ignored paths from the dialog control.
* @return List of ignored paths.
*/
QStringList GetIgnorePaths() const;
/** /**
* @brief Set project root path to dialog control. * @brief Set project root path to dialog control.
* @param root Project root path to set to dialog control. * @param root Project root path to set to dialog control.
@ -90,25 +96,78 @@ public:
*/ */
void SetPaths(const QStringList &paths); void SetPaths(const QStringList &paths);
/**
* @brief Set ignored paths to dialog control.
* @param paths List of path names to set to dialog control.
*/
void SetIgnorePaths(const QStringList &paths);
protected slots: protected slots:
/** /**
* @brief Browse for include directory. * @brief Browse for include directory.
* Allow user to choose new include directory. * Allow user to add new include directory to the list.
*/ */
void BrowseIncludes(); void AddIncludeDir();
/** /**
* @brief Browse for checked directory. * @brief Add new path to check.
* Allow user to choose new checked directory.
*/ */
void BrowsePaths(); void AddPath();
/**
* @brief Remove include directory from the list.
*/
void RemoveIncludeDir();
/**
* @brief Edit include directory in the list.
*/
void EditIncludeDir();
/**
* @brief Edit path in the list.
*/
void EditPath();
/**
* @brief Remove path from the list.
*/
void RemovePath();
/**
* @brief Add new path to ignore.
*/
void AddIgnorePath();
/**
* @brief Edit ignored path in the list.
*/
void EditIgnorePath();
/**
* @brief Remove ignored path from the list.
*/
void RemoveIgnorePath();
protected: protected:
/** /**
* @brief Append new path to the edit control. * @brief Add new indlude directory.
* @param edit Edit control to modify. * @param dir Directory to add.
* @param dir Path to add.
*/ */
void AppendDirname(QLineEdit *edit, const QString &dir); void AddIncludeDir(const QString &dir);
/**
* @brief Add new path to check.
* @param path Path to add.
*/
void AddPath(const QString &path);
/**
* @brief Add new path to ignore list.
* @param path Path to add.
*/
void AddIgnorePath(const QString &path);
private: private:
Ui::ProjectFile mUI; Ui::ProjectFile mUI;

View File

@ -564,6 +564,9 @@ void ResultsTree::StartApplication(QStandardItem *target, int application)
return; return;
} }
if (application == -1)
application = mApplications->GetDefaultApplication();
if (target && application >= 0 && application < mApplications->GetApplicationCount() && target->parent()) if (target && application >= 0 && application < mApplications->GetApplicationCount() && target->parent())
{ {
// Make sure we are working with the first column // Make sure we are working with the first column
@ -704,7 +707,7 @@ void ResultsTree::Context(int application)
void ResultsTree::QuickStartApplication(const QModelIndex &index) void ResultsTree::QuickStartApplication(const QModelIndex &index)
{ {
StartApplication(mModel.itemFromIndex(index), 0); StartApplication(mModel.itemFromIndex(index));
} }
void ResultsTree::CopyPath(QStandardItem *target, bool fullPath) void ResultsTree::CopyPath(QStandardItem *target, bool fullPath)

View File

@ -238,9 +238,10 @@ protected:
* @brief Helper function to open an error within target with application* * @brief Helper function to open an error within target with application*
* *
* @param target Error tree item to open * @param target Error tree item to open
* @param application Index of the application to open with * @param application Index of the application to open with. Giving -1
* (default value) will open the default application.
*/ */
void StartApplication(QStandardItem *target, int application); void StartApplication(QStandardItem *target, int application = -1);
/** /**
* @brief Helper function to copy filename/full path to the clipboard * @brief Helper function to copy filename/full path to the clipboard

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>589</width> <width>589</width>
<height>313</height> <height>319</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -17,37 +17,13 @@
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>2</number>
</property> </property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">
<string>General</string> <string>General</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Include paths:</string>
</property>
<property name="buddy">
<cstring>mEditIncludePaths</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mEditIncludePaths"/>
</item>
<item>
<widget class="QPushButton" name="mBtnAddIncludePath">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sizeConstraint"> <property name="sizeConstraint">
@ -182,41 +158,125 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Paths</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Include paths:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="mListIncludePaths">
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QPushButton" name="mBtnAddIncludePath">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnEditIncludePath">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnRemoveIncludePath">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2"> <widget class="QWidget" name="tab_2">
<attribute name="title"> <attribute name="title">
<string>Applications</string> <string>Applications</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QListWidget" name="mListWidget"/> <layout class="QHBoxLayout" name="horizontalLayout_3">
</item> <item>
<item> <widget class="QListWidget" name="mListWidget"/>
<widget class="QPushButton" name="mButtonAdd"> </item>
<property name="text"> <item>
<string>Add application</string> <layout class="QVBoxLayout" name="verticalLayout_2">
</property> <item>
</widget> <widget class="QPushButton" name="mBtnAddApplication">
</item> <property name="text">
<item> <string>Add...</string>
<widget class="QPushButton" name="mButtonDelete"> </property>
<property name="text"> </widget>
<string>Delete application</string> </item>
</property> <item>
</widget> <widget class="QPushButton" name="mBtnEditApplication">
</item> <property name="text">
<item> <string>Edit...</string>
<widget class="QPushButton" name="mButtonModify"> </property>
<property name="text"> </widget>
<string>Modify application</string> </item>
</property> <item>
</widget> <widget class="QPushButton" name="mBtnRemoveApplication">
</item> <property name="text">
<item> <string>Remove</string>
<widget class="QPushButton" name="mButtonDefault"> </property>
<property name="text"> </widget>
<string>Set as default application</string> </item>
</property> <item>
</widget> <widget class="QPushButton" name="mBtnDefaultApplication">
<property name="text">
<string>Set as default</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -284,18 +344,15 @@
</widget> </widget>
<tabstops> <tabstops>
<tabstop>tabWidget</tabstop> <tabstop>tabWidget</tabstop>
<tabstop>mEditIncludePaths</tabstop>
<tabstop>mBtnAddIncludePath</tabstop>
<tabstop>mJobs</tabstop> <tabstop>mJobs</tabstop>
<tabstop>mForce</tabstop> <tabstop>mForce</tabstop>
<tabstop>mShowFullPath</tabstop> <tabstop>mShowFullPath</tabstop>
<tabstop>mShowNoErrorsMessage</tabstop> <tabstop>mShowNoErrorsMessage</tabstop>
<tabstop>mShowDebugWarnings</tabstop> <tabstop>mShowDebugWarnings</tabstop>
<tabstop>mListWidget</tabstop> <tabstop>mListWidget</tabstop>
<tabstop>mButtonAdd</tabstop> <tabstop>mBtnAddApplication</tabstop>
<tabstop>mButtonDelete</tabstop> <tabstop>mBtnEditApplication</tabstop>
<tabstop>mButtonModify</tabstop> <tabstop>mBtnDefaultApplication</tabstop>
<tabstop>mButtonDefault</tabstop>
<tabstop>mSaveAllErrors</tabstop> <tabstop>mSaveAllErrors</tabstop>
<tabstop>mSaveFullPath</tabstop> <tabstop>mSaveFullPath</tabstop>
<tabstop>mButtons</tabstop> <tabstop>mButtons</tabstop>

View File

@ -46,7 +46,6 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
mUI.setupUi(this); mUI.setupUi(this);
mTempApplications->Copy(list); mTempApplications->Copy(list);
mUI.mEditIncludePaths->setText(programSettings->value(SETTINGS_GLOBAL_INCLUDE_PATHS).toString());
mUI.mJobs->setText(programSettings->value(SETTINGS_CHECK_THREADS, 1).toString()); mUI.mJobs->setText(programSettings->value(SETTINGS_CHECK_THREADS, 1).toString());
mUI.mForce->setCheckState(BoolToCheckState(programSettings->value(SETTINGS_CHECK_FORCE, false).toBool())); mUI.mForce->setCheckState(BoolToCheckState(programSettings->value(SETTINGS_CHECK_FORCE, false).toBool()));
mUI.mShowFullPath->setCheckState(BoolToCheckState(programSettings->value(SETTINGS_SHOW_FULL_PATH, false).toBool())); mUI.mShowFullPath->setCheckState(BoolToCheckState(programSettings->value(SETTINGS_SHOW_FULL_PATH, false).toBool()));
@ -58,21 +57,25 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(Ok())); connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(Ok()));
connect(mUI.mButtons, SIGNAL(rejected()), this, SLOT(reject())); connect(mUI.mButtons, SIGNAL(rejected()), this, SLOT(reject()));
connect(mUI.mButtonAdd, SIGNAL(clicked()), connect(mUI.mBtnAddApplication, SIGNAL(clicked()),
this, SLOT(AddApplication())); this, SLOT(AddApplication()));
connect(mUI.mButtonDelete, SIGNAL(clicked()), connect(mUI.mBtnRemoveApplication, SIGNAL(clicked()),
this, SLOT(DeleteApplication())); this, SLOT(RemoveApplication()));
connect(mUI.mButtonModify, SIGNAL(clicked()), connect(mUI.mBtnEditApplication, SIGNAL(clicked()),
this, SLOT(ModifyApplication())); this, SLOT(EditApplication()));
connect(mUI.mButtonDefault, SIGNAL(clicked()), connect(mUI.mBtnDefaultApplication, SIGNAL(clicked()),
this, SLOT(DefaultApplication())); this, SLOT(DefaultApplication()));
connect(mUI.mListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)), connect(mUI.mListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
this, SLOT(ModifyApplication())); this, SLOT(EditApplication()));
connect(mUI.mBtnAddIncludePath, SIGNAL(clicked()), connect(mUI.mBtnAddIncludePath, SIGNAL(clicked()),
this, SLOT(AddIncludePath())); this, SLOT(AddIncludePath()));
connect(mUI.mBtnRemoveIncludePath, SIGNAL(clicked()),
this, SLOT(RemoveIncludePath()));
connect(mUI.mBtnEditIncludePath, SIGNAL(clicked()),
this, SLOT(EditIncludePath()));
mUI.mListWidget->setSortingEnabled(false); mUI.mListWidget->setSortingEnabled(false);
PopulateListWidget(); PopulateApplicationList();
const int count = QThread::idealThreadCount(); const int count = QThread::idealThreadCount();
if (count != -1) if (count != -1)
@ -82,6 +85,7 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
LoadSettings(); LoadSettings();
InitTranslationsList(); InitTranslationsList();
InitIncludepathsList();
} }
SettingsDialog::~SettingsDialog() SettingsDialog::~SettingsDialog()
@ -89,6 +93,26 @@ SettingsDialog::~SettingsDialog()
SaveSettings(); SaveSettings();
} }
void SettingsDialog::AddIncludePath(const QString &path)
{
if (path.isNull() || path.isEmpty())
return;
QListWidgetItem *item = new QListWidgetItem(path);
item->setFlags(item->flags() | Qt::ItemIsEditable);
mUI.mListIncludePaths->addItem(item);
}
void SettingsDialog::InitIncludepathsList()
{
const QString allPaths = mSettings->value(SETTINGS_GLOBAL_INCLUDE_PATHS).toString();
const QStringList paths = allPaths.split(";", QString::SkipEmptyParts);
foreach(QString path, paths)
{
AddIncludePath(path);
}
}
void SettingsDialog::InitTranslationsList() void SettingsDialog::InitTranslationsList()
{ {
const QString current = mTranslator->GetCurrentLanguage(); const QString current = mTranslator->GetCurrentLanguage();
@ -151,11 +175,20 @@ void SettingsDialog::SaveSettingValues()
SaveCheckboxValue(mUI.mShowNoErrorsMessage, SETTINGS_SHOW_NO_ERRORS); SaveCheckboxValue(mUI.mShowNoErrorsMessage, SETTINGS_SHOW_NO_ERRORS);
SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS); SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS);
SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS); SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS);
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, mUI.mEditIncludePaths->text());
QListWidgetItem *currentLang = mUI.mListLanguages->currentItem(); QListWidgetItem *currentLang = mUI.mListLanguages->currentItem();
const QString langcode = currentLang->data(LangCodeRole).toString(); const QString langcode = currentLang->data(LangCodeRole).toString();
mSettings->setValue(SETTINGS_LANGUAGE, langcode); mSettings->setValue(SETTINGS_LANGUAGE, langcode);
const int count = mUI.mListIncludePaths->count();
QString includePaths;
for (int i = 0; i < count; i++)
{
QListWidgetItem *item = mUI.mListIncludePaths->item(i);
includePaths += item->text();
includePaths += ";";
}
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, includePaths);
} }
void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name) void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name)
@ -169,26 +202,31 @@ void SettingsDialog::AddApplication()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
mTempApplications->AddApplicationType(dialog.GetName(), dialog.GetPath()); mTempApplications->AddApplication(dialog.GetName(), dialog.GetPath());
mUI.mListWidget->addItem(dialog.GetName()); mUI.mListWidget->addItem(dialog.GetName());
} }
} }
void SettingsDialog::DeleteApplication() void SettingsDialog::RemoveApplication()
{ {
QList<QListWidgetItem *> selected = mUI.mListWidget->selectedItems(); QList<QListWidgetItem *> selected = mUI.mListWidget->selectedItems();
QListWidgetItem *item = 0; foreach(QListWidgetItem *item, selected)
foreach(item, selected)
{ {
mTempApplications->RemoveApplication(mUI.mListWidget->row(item)); const int removeIndex = mUI.mListWidget->row(item);
mUI.mListWidget->clear(); const int currentDefault = mTempApplications->GetDefaultApplication();
PopulateListWidget(); mTempApplications->RemoveApplication(removeIndex);
if (removeIndex == currentDefault)
// If default app is removed set default to unknown
mTempApplications->SetDefault(-1);
else if (removeIndex < currentDefault)
// Move default app one up if earlier app was removed
mTempApplications->SetDefault(currentDefault - 1);
} }
mUI.mListWidget->clear();
PopulateApplicationList();
} }
void SettingsDialog::ModifyApplication() void SettingsDialog::EditApplication()
{ {
QList<QListWidgetItem *> selected = mUI.mListWidget->selectedItems(); QList<QListWidgetItem *> selected = mUI.mListWidget->selectedItems();
QListWidgetItem *item = 0; QListWidgetItem *item = 0;
@ -202,7 +240,7 @@ void SettingsDialog::ModifyApplication()
if (dialog.exec() == QDialog::Accepted) if (dialog.exec() == QDialog::Accepted)
{ {
mTempApplications->SetApplicationType(row, dialog.GetName(), dialog.GetPath()); mTempApplications->SetApplication(row, dialog.GetName(), dialog.GetPath());
item->setText(dialog.GetName()); item->setText(dialog.GetName());
} }
} }
@ -214,23 +252,36 @@ void SettingsDialog::DefaultApplication()
if (selected.size() > 0) if (selected.size() > 0)
{ {
int index = mUI.mListWidget->row(selected[0]); int index = mUI.mListWidget->row(selected[0]);
mTempApplications->MoveFirst(index); mTempApplications->SetDefault(index);
mUI.mListWidget->clear(); mUI.mListWidget->clear();
PopulateListWidget(); PopulateApplicationList();
} }
} }
void SettingsDialog::PopulateListWidget() void SettingsDialog::PopulateApplicationList()
{ {
const int defapp = mTempApplications->GetDefaultApplication();
for (int i = 0; i < mTempApplications->GetApplicationCount(); i++) for (int i = 0; i < mTempApplications->GetApplicationCount(); i++)
{ {
mUI.mListWidget->addItem(mTempApplications->GetApplicationName(i)); QString name = mTempApplications->GetApplicationName(i);
if (i == defapp)
{
name += " ";
name += tr("[Default]");
}
mUI.mListWidget->addItem(name);
} }
// If list contains items select first item // Select default application, or if there is no default app then the
if (mTempApplications->GetApplicationCount()) // first item.
{ if (defapp == -1)
mUI.mListWidget->setCurrentRow(0); mUI.mListWidget->setCurrentRow(0);
else
{
if (mTempApplications->GetApplicationCount() > defapp)
mUI.mListWidget->setCurrentRow(defapp);
else
mUI.mListWidget->setCurrentRow(0);
} }
} }
@ -268,10 +319,19 @@ void SettingsDialog::AddIncludePath()
if (!selectedDir.isEmpty()) if (!selectedDir.isEmpty())
{ {
QString text = mUI.mEditIncludePaths->text(); AddIncludePath(selectedDir);
if (!text.isEmpty())
text += ';';
text += selectedDir;
mUI.mEditIncludePaths->setText(text);
} }
} }
void SettingsDialog::RemoveIncludePath()
{
const int row = mUI.mListIncludePaths->currentRow();
QListWidgetItem *item = mUI.mListIncludePaths->takeItem(row);
delete item;
}
void SettingsDialog::EditIncludePath()
{
QListWidgetItem *item = mUI.mListIncludePaths->currentItem();
mUI.mListIncludePaths->editItem(item);
}

View File

@ -98,13 +98,13 @@ protected slots:
* @brief Slot for deleting an application from the list * @brief Slot for deleting an application from the list
* *
*/ */
void DeleteApplication(); void RemoveApplication();
/** /**
* @brief Slot for modifying an application in the list * @brief Slot for modifying an application in the list
* *
*/ */
void ModifyApplication(); void EditApplication();
/** /**
* @brief Slot for making the selected application as the default (first) * @brief Slot for making the selected application as the default (first)
@ -118,19 +118,38 @@ protected slots:
*/ */
void AddIncludePath(); void AddIncludePath();
/**
* @brief Slot for removing an include path.
*
*/
void RemoveIncludePath();
/**
* @brief Slot for editing an include path.
*
*/
void EditIncludePath();
protected: protected:
/**
* @brief Add new include path to the list.
* @param path Path to add.
*
*/
void AddIncludePath(const QString &path);
/** /**
* @brief Clear all applications from the list and re insert them from mTempApplications * @brief Clear all applications from the list and re insert them from mTempApplications
* *
*/ */
void PopulateListWidget(); void PopulateApplicationList();
/** /**
* @brief Load saved values * @brief Load saved values
* Loads dialog size and column widths. * Loads dialog size and column widths.
* *
*/ */
void SaveSettings(); void SaveSettings();
/** /**
@ -165,6 +184,11 @@ protected:
*/ */
bool CheckStateToBool(Qt::CheckState state) const; bool CheckStateToBool(Qt::CheckState state) const;
/**
* @brief Populate the include paths-list.
*/
void InitIncludepathsList();
/** /**
* @brief Populate the translations list. * @brief Populate the translations list.
*/ */

View File

@ -695,6 +695,8 @@ void CheckClass::unusedPrivateFunctionError(const Token *tok, const std::string
void CheckClass::noMemset() void CheckClass::noMemset()
{ {
createSymbolDatabase();
// Locate all 'memset' tokens.. // Locate all 'memset' tokens..
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{ {
@ -712,6 +714,13 @@ void CheckClass::noMemset()
type = tok->strAt(10); type = tok->strAt(10);
else if (Token::Match(tok, "%type% ( %var% , %var% , sizeof ( %type% ) )")) else if (Token::Match(tok, "%type% ( %var% , %var% , sizeof ( %type% ) )"))
type = tok->strAt(8); type = tok->strAt(8);
else if (Token::Match(tok, "memset ( & %var% , %num% , sizeof ( %var% ) )"))
{
unsigned int varid = tok->tokAt(3)->varId();
const Variable *var = symbolDatabase->getVariableFromVarId(varid);
if (var && var->typeStartToken() == var->typeEndToken())
type = var->typeStartToken()->str();
}
// No type defined => The tokens didn't match // No type defined => The tokens didn't match
if (type.empty()) if (type.empty())
@ -719,7 +728,14 @@ void CheckClass::noMemset()
// Warn if type is a class or struct that contains any std::* variables // Warn if type is a class or struct that contains any std::* variables
const std::string pattern2(std::string("struct|class ") + type + " {"); const std::string pattern2(std::string("struct|class ") + type + " {");
for (const Token *tstruct = Token::findmatch(_tokenizer->tokens(), pattern2.c_str()); tstruct; tstruct = tstruct->next()) const Token *tstruct = Token::findmatch(_tokenizer->tokens(), pattern2.c_str());
if (!tstruct)
continue;
const std::string &typeName = tstruct->str();
for (; tstruct; tstruct = tstruct->next())
{ {
if (tstruct->str() == "}") if (tstruct->str() == "}")
break; break;
@ -739,7 +755,7 @@ void CheckClass::noMemset()
tstruct->str().find(":") != std::string::npos) tstruct->str().find(":") != std::string::npos)
{ {
if (Token::Match(tstruct->next(), "std :: %type% %var% ;")) if (Token::Match(tstruct->next(), "std :: %type% %var% ;"))
memsetStructError(tok, tok->str(), tstruct->strAt(3)); memsetError(tok, tok->str(), tstruct->strAt(3), typeName);
else if (Token::Match(tstruct->next(), "std :: %type% <")) else if (Token::Match(tstruct->next(), "std :: %type% <"))
{ {
@ -767,21 +783,16 @@ void CheckClass::noMemset()
// found error => report // found error => report
if (Token::Match(tstruct, "> %var% ;")) if (Token::Match(tstruct, "> %var% ;"))
memsetStructError(tok, tok->str(), typestr); memsetError(tok, tok->str(), typestr, typeName);
} }
} }
} }
} }
} }
void CheckClass::memsetClassError(const Token *tok, const std::string &memfunc) void CheckClass::memsetError(const Token *tok, const std::string &memfunc, const std::string &classname, const std::string &type)
{ {
reportError(tok, Severity::error, "memsetClass", "Using '" + memfunc + "' on class"); reportError(tok, Severity::error, "memsetClass", "Using '" + memfunc + "' on " + type + " that contains a 'std::" + classname + "'");
}
void CheckClass::memsetStructError(const Token *tok, const std::string &memfunc, const std::string &classname)
{
reportError(tok, Severity::error, "memsetStruct", "Using '" + memfunc + "' on struct that contains a 'std::" + classname + "'");
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@ -117,8 +117,7 @@ private:
void uninitVarError(const Token *tok, const std::string &classname, const std::string &varname); void uninitVarError(const Token *tok, const std::string &classname, const std::string &varname);
void operatorEqVarError(const Token *tok, const std::string &classname, const std::string &varname); void operatorEqVarError(const Token *tok, const std::string &classname, const std::string &varname);
void unusedPrivateFunctionError(const Token *tok, const std::string &classname, const std::string &funcname); void unusedPrivateFunctionError(const Token *tok, const std::string &classname, const std::string &funcname);
void memsetClassError(const Token *tok, const std::string &memfunc); void memsetError(const Token *tok, const std::string &memfunc, const std::string &classname, const std::string &type);
void memsetStructError(const Token *tok, const std::string &memfunc, const std::string &classname);
void operatorEqReturnError(const Token *tok); void operatorEqReturnError(const Token *tok);
void virtualDestructorError(const Token *tok, const std::string &Base, const std::string &Derived); void virtualDestructorError(const Token *tok, const std::string &Base, const std::string &Derived);
void thisSubtractionError(const Token *tok); void thisSubtractionError(const Token *tok);
@ -134,8 +133,7 @@ private:
c.uninitVarError(0, "classname", "varname"); c.uninitVarError(0, "classname", "varname");
c.operatorEqVarError(0, "classname", ""); c.operatorEqVarError(0, "classname", "");
c.unusedPrivateFunctionError(0, "classname", "funcname"); c.unusedPrivateFunctionError(0, "classname", "funcname");
c.memsetClassError(0, "memfunc"); c.memsetError(0, "memfunc", "classname", "class");
c.memsetStructError(0, "memfunc", "classname");
c.operatorEqReturnError(0); c.operatorEqReturnError(0);
//c.virtualDestructorError(0, "Base", "Derived"); //c.virtualDestructorError(0, "Base", "Derived");
c.thisSubtractionError(0); c.thisSubtractionError(0);

View File

@ -75,7 +75,7 @@ private:
"Found obsolete function 'usleep'. POSIX.1-2001 declares usleep() function obsolete and POSIX.1-2008 removes it. It is recommended that new applications use the 'nanosleep' or 'setitimer' function.")); "Found obsolete function 'usleep'. POSIX.1-2001 declares usleep() function obsolete and POSIX.1-2008 removes it. It is recommended that new applications use the 'nanosleep' or 'setitimer' function."));
_obsoleteFunctions.push_back(std::make_pair("bcmp","Found obsolete function 'bcmp'. It is recommended that new applications use the 'memcmp' function")); _obsoleteFunctions.push_back(std::make_pair("bcmp","Found obsolete function 'bcmp'. It is recommended that new applications use the 'memcmp' function"));
_obsoleteFunctions.push_back(std::make_pair("bcopy","Found obsolete function 'bcopy'. It is recommended that new applications use the 'memmove' function")); _obsoleteFunctions.push_back(std::make_pair("bcopy","Found obsolete function 'bcopy'. It is recommended that new applications use the 'memmove' or 'memcpy' functions"));
_obsoleteFunctions.push_back(std::make_pair("bzero","Found obsolete function 'bzero'. It is recommended that new applications use the 'memset' function")); _obsoleteFunctions.push_back(std::make_pair("bzero","Found obsolete function 'bzero'. It is recommended that new applications use the 'memset' function"));
_obsoleteFunctions.push_back(std::make_pair("ecvt","Found obsolete function 'ecvt'. It is recommended that new applications use the 'sprintf' function")); _obsoleteFunctions.push_back(std::make_pair("ecvt","Found obsolete function 'ecvt'. It is recommended that new applications use the 'sprintf' function"));

View File

@ -608,6 +608,35 @@ void CheckOther::invalidScanf()
} }
} }
//---------------------------------------------------------------------------
// if (!x==3) <- Probably meant to be "x!=3"
//---------------------------------------------------------------------------
void CheckOther::checkComparisonOfBoolWithInt()
{
if (!_settings->_checkCodingStyle)
return;
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
if (Token::Match(tok, "( ! %var% ==|!= %num% )"))
{
const Token *numTok = tok->tokAt(4);
if (numTok && numTok->str() != "0")
{
comparisonOfBoolWithIntError(numTok, tok->strAt(2));
}
}
else if (Token::Match(tok, "( %num% ==|!= ! %var% )"))
{
const Token *numTok = tok->tokAt(1);
if (numTok && numTok->str() != "0")
{
comparisonOfBoolWithIntError(numTok, tok->strAt(4));
}
}
}
}
void CheckOther::sizeofForArrayParameterError(const Token *tok) void CheckOther::sizeofForArrayParameterError(const Token *tok)
{ {
reportError(tok, Severity::error, reportError(tok, Severity::error,
@ -3016,3 +3045,10 @@ void CheckOther::incorrectStringCompareError(const Token *tok, const std::string
{ {
reportError(tok, Severity::warning, "incorrectStringCompare", "String literal " + string + " doesn't match length argument for " + func + "(" + len + ")."); reportError(tok, Severity::warning, "incorrectStringCompare", "String literal " + string + " doesn't match length argument for " + func + "(" + len + ").");
} }
void CheckOther::comparisonOfBoolWithIntError(const Token *tok, const std::string &varname)
{
reportError(tok, Severity::warning, "comparisonOfBoolWithInt",
"Comparison of a boolean with a non-zero integer\n"
"The expression \"!" + varname + "\" is of type 'bool' but is compared against a non-zero 'int'.");
}

View File

@ -89,6 +89,7 @@ public:
checkOther.checkMemsetZeroBytes(); checkOther.checkMemsetZeroBytes();
checkOther.checkIncorrectStringCompare(); checkOther.checkIncorrectStringCompare();
checkOther.checkIncrementBoolean(); checkOther.checkIncrementBoolean();
checkOther.checkComparisonOfBoolWithInt();
} }
/** @brief Clarify calculation for ".. a * b ? .." */ /** @brief Clarify calculation for ".. a * b ? .." */
@ -188,6 +189,9 @@ public:
/** @brief %Check for using postfix increment on bool */ /** @brief %Check for using postfix increment on bool */
void checkIncrementBoolean(); void checkIncrementBoolean();
/** @brief %Check for suspicious comparison of a bool and a non-zero (and non-one) value (e.g. "if (!x==4)") */
void checkComparisonOfBoolWithInt();
// Error messages.. // Error messages..
void cstyleCastError(const Token *tok); void cstyleCastError(const Token *tok);
void dangerousUsageStrtolError(const Token *tok); void dangerousUsageStrtolError(const Token *tok);
@ -214,6 +218,7 @@ public:
void sizeofForArrayParameterError(const Token *tok); void sizeofForArrayParameterError(const Token *tok);
void incorrectStringCompareError(const Token *tok, const std::string& func, const std::string &string, const std::string &len); void incorrectStringCompareError(const Token *tok, const std::string& func, const std::string &string, const std::string &len);
void incrementBooleanError(const Token *tok); void incrementBooleanError(const Token *tok);
void comparisonOfBoolWithIntError(const Token *tok, const std::string &varname);
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings)
{ {
@ -255,6 +260,7 @@ public:
c.clarifyCalculationError(0); c.clarifyCalculationError(0);
c.incorrectStringCompareError(0, "substr", "\"Hello World\"", "12"); c.incorrectStringCompareError(0, "substr", "\"Hello World\"", "12");
c.incrementBooleanError(0); c.incrementBooleanError(0);
c.comparisonOfBoolWithIntError(0, "varname");
} }
std::string myName() const std::string myName() const
@ -296,6 +302,7 @@ public:
"* exception caught by value instead of by reference\n" "* exception caught by value instead of by reference\n"
"* Clarify calculation with parantheses\n" "* Clarify calculation with parantheses\n"
"* using increment on boolean\n" "* using increment on boolean\n"
"* comparison of a boolean with a non-zero integer\n"
// optimisations // optimisations
"* optimisation: detect post increment/decrement\n"; "* optimisation: detect post increment/decrement\n";

View File

@ -74,10 +74,10 @@ void CheckPostfixOperator::postfixOperator()
if (result && tok->previous()->varId()) if (result && tok->previous()->varId())
{ {
const Token *decltok = Token::findmatch(_tokenizer->tokens(), "%varid%", tok->previous()->varId()); const Token *decltok = Token::findmatch(_tokenizer->tokens(), "%varid%", tok->previous()->varId());
if (!Token::Match(decltok->tokAt(-1), "%type%")) if (decltok == NULL || !Token::Match(decltok->tokAt(-1), "%type%"))
continue; continue;
if (decltok && Token::Match(decltok->previous(), "iterator|const_iterator|reverse_iterator|const_reverse_iterator")) if (Token::Match(decltok->previous(), "iterator|const_iterator|reverse_iterator|const_reverse_iterator"))
{ {
// the variable is an iterator // the variable is an iterator
postfixOperatorError(tok); postfixOperatorError(tok);

View File

@ -603,7 +603,10 @@ private:
std::list<const Token *> var; std::list<const Token *> var;
CheckNullPointer::parseFunctionCall(tok, var, 1); CheckNullPointer::parseFunctionCall(tok, var, 1);
for (std::list<const Token *>::const_iterator it = var.begin(); it != var.end(); ++it) for (std::list<const Token *>::const_iterator it = var.begin(); it != var.end(); ++it)
{
use_array(checks, *it); use_array(checks, *it);
use_dead_pointer(checks, *it);
}
// Using uninitialized pointer is bad if using null pointer is bad // Using uninitialized pointer is bad if using null pointer is bad
std::list<const Token *> var2; std::list<const Token *> var2;

View File

@ -178,6 +178,10 @@ std::string Preprocessor::read(std::istream &istr, const std::string &filename,
// Remove all comments.. // Remove all comments..
result = removeComments(result, filename, settings); result = removeComments(result, filename, settings);
// Remove '#if 0' blocks
if (result.find("#if 0\n") != std::string::npos)
result = removeIf0(result);
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
// //
// Clean up all preprocessor statements // Clean up all preprocessor statements
@ -547,6 +551,37 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
return code.str(); return code.str();
} }
std::string Preprocessor::removeIf0(const std::string &code)
{
std::ostringstream ret;
std::istringstream istr(code);
std::string line;
while (std::getline(istr,line))
{
if (line != "#if 0")
ret << line << "\n";
else
{
// replace '#if 0' with empty line
ret << "\n";
// goto the end of the '#if 0' block
unsigned int level = 1;
while (level > 0 && std::getline(istr,line))
{
if (line.compare(0,3,"#if") == 0)
++level;
else if (line == "#endif")
--level;
// replace code within '#if 0' block with empty lines
ret << "\n";
}
}
}
return ret.str();
}
std::string Preprocessor::removeParantheses(const std::string &str) std::string Preprocessor::removeParantheses(const std::string &str)
{ {
@ -927,7 +962,18 @@ std::list<std::string> Preprocessor::getcfgs(const std::string &filedata, const
if (line.compare(0, 8, "#define ") == 0) if (line.compare(0, 8, "#define ") == 0)
{ {
if (line.find(" ", 8) == std::string::npos) bool valid = true;
for (std::string::size_type pos = 8; pos < line.size() && line[pos] != ' '; ++pos)
{
char ch = line[pos];
if (ch=='_' || (ch>='a' && ch<='z') || (ch>='A' && ch<='Z') || (pos>8 && ch>='0' && ch<='9'))
continue;
valid = false;
break;
}
if (!valid)
line.clear();
else if (line.find(" ", 8) == std::string::npos)
defines.insert(line.substr(8)); defines.insert(line.substr(8));
else else
{ {
@ -1278,8 +1324,12 @@ void Preprocessor::simplifyCondition(const std::map<std::string, std::string> &v
if (Token::Match(tokenizer.tokens(), "( %var% )")) if (Token::Match(tokenizer.tokens(), "( %var% )"))
{ {
if (variables.find(tokenizer.tokens()->strAt(1)) != variables.end()) std::map<std::string,std::string>::const_iterator var = variables.find(tokenizer.tokens()->strAt(1));
condition = "1"; if (var != variables.end())
{
const std::string &value = (*var).second;
condition = (value == "0") ? "0" : "1";
}
else if (match) else if (match)
condition = "0"; condition = "0";
return; return;

View File

@ -144,6 +144,13 @@ protected:
*/ */
std::string removeComments(const std::string &str, const std::string &filename, Settings *settings); std::string removeComments(const std::string &str, const std::string &filename, Settings *settings);
/**
* Cleanup 'if 0' from the code
* @param str Code processed by read().
* @return code without 'if 0'
*/
static std::string removeIf0(const std::string &code);
/** /**
* Remove redundant parentheses from preprocessor commands. This should only be called from read(). * Remove redundant parentheses from preprocessor commands. This should only be called from read().
* @param str Code processed by read(). * @param str Code processed by read().

View File

@ -399,6 +399,68 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
} }
} }
} }
else if (scope->type == Scope::eFunction || scope->isLocal())
{
if (Token::simpleMatch(tok, "if (") &&
Token::simpleMatch(tok->next()->link(), ") {"))
{
scope = new Scope(this, tok, scope, Scope::eIf, tok->next()->link()->next());
tok = tok->next()->link()->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "else {"))
{
scope = new Scope(this, tok, scope, Scope::eElse, tok->next());
tok = tok->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "else if (") &&
Token::simpleMatch(tok->next()->next()->link(), ") {"))
{
scope = new Scope(this, tok, scope, Scope::eElseIf, tok->next()->next()->link()->next());
tok = tok->next()->next()->link()->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "for (") &&
Token::simpleMatch(tok->next()->link(), ") {"))
{
scope = new Scope(this, tok, scope, Scope::eFor, tok->next()->link()->next());
tok = tok->next()->link()->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "while (") &&
Token::simpleMatch(tok->next()->link(), ") {"))
{
scope = new Scope(this, tok, scope, Scope::eWhile, tok->next()->link()->next());
tok = tok->next()->link()->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "do {"))
{
scope = new Scope(this, tok, scope, Scope::eDo, tok->next());
tok = tok->next();
scopeList.push_back(scope);
}
else if (Token::simpleMatch(tok, "switch (") &&
Token::simpleMatch(tok->next()->link(), ") {"))
{
scope = new Scope(this, tok, scope, Scope::eSwitch, tok->next()->link()->next());
tok = tok->next()->link()->next();
scopeList.push_back(scope);
}
else if (tok->str() == "{")
{
if (!Token::Match(tok->previous(), "=|,|{"))
{
scope = new Scope(this, tok, scope, Scope::eUnconditional, tok);
scopeList.push_back(scope);
}
else
{
tok = tok->link();
}
}
}
} }
} }
@ -448,11 +510,21 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
{ {
scope = *it; scope = *it;
// skip functions // find variables
if (scope->type != Scope::eFunction) scope->getVariableList();
}
// fill in function arguments
for (it = scopeList.begin(); it != scopeList.end(); ++it)
{
scope = *it;
std::list<Function>::iterator func;
for (func = scope->functionList.begin(); func != scope->functionList.end(); ++func)
{ {
// find variables // add arguments
scope->getVariableList(); func->addArguments(this, scope);
} }
} }
@ -569,6 +641,46 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
} }
} }
} }
// create variable symbol table
_variableList.resize(_tokenizer->varIdCount() + 1);
fill_n(_variableList.begin(), _variableList.size(), (const Variable*)NULL);
// check all scopes for variables
for (it = scopeList.begin(); it != scopeList.end(); ++it)
{
scope = *it;
// add all variables
std::list<Variable>::const_iterator var;
for (var = scope->varlist.begin(); var != scope->varlist.end(); ++var)
{
unsigned int varId = var->varId();
if (varId)
_variableList[varId] = &*var;
}
// add all function paramaters
std::list<Function>::const_iterator func;
for (func = scope->functionList.begin(); func != scope->functionList.end(); ++func)
{
// ignore function without implementations
if (!func->hasBody)
continue;
std::list<Variable>::const_iterator arg;
for (arg = func->argumentList.begin(); arg != func->argumentList.end(); ++arg)
{
// check for named parameters
if (arg->nameToken() && arg->varId())
{
unsigned int varId = arg->varId();
if (varId)
_variableList[varId] = &*arg;
}
}
}
}
} }
SymbolDatabase::~SymbolDatabase() SymbolDatabase::~SymbolDatabase()
@ -1002,8 +1114,75 @@ unsigned int Function::initializedArgCount() const
return count; return count;
} }
void Function::addArguments(const SymbolDatabase *symbolDatabase, const Scope *scope)
{
// check for non-empty argument list "( ... )"
if (arg->link() != arg->next())
{
unsigned int count = 0;
const Token *startTok;
const Token *endTok;
const Token *nameTok;
bool isConstVar;
const Token *tok = arg->next();
for (;;)
{
startTok = tok;
endTok = NULL;
nameTok = NULL;
isConstVar = bool(tok->str() == "const");
while (tok->str() != "," && tok->str() != ")")
{
if (tok->varId() != 0)
{
nameTok = tok;
endTok = tok->previous();
}
tok = tok->next();
}
// check for argument with no name
if (!endTok)
endTok = tok->previous();
const Token *typeTok = startTok;
if (isConstVar)
typeTok = typeTok->next();
const Scope *argType = NULL;
if (!typeTok->isStandardType())
argType = symbolDatabase->findVariableType(scope, typeTok);
bool isClassVar = startTok == endTok && !startTok->isStandardType();
argumentList.push_back(Variable(nameTok, startTok, endTok, count++, Argument, false, false, isConstVar, isClassVar, argType, scope, false));
if (tok->str() == ")")
break;
tok = tok->next();
}
}
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
Scope::Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_, ScopeType type_, const Token *start_) :
check(check_),
type(type_),
classDef(classDef_),
classStart(start_),
classEnd(start_->link()),
nestedIn(nestedIn_),
access(Public),
numConstructors(0),
needInitialization(Scope::Unknown),
functionOf(NULL)
{
nestedIn->nestedList.push_back(this);
}
Scope::Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_) : Scope::Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_) :
check(check_), check(check_),
classDef(classDef_), classDef(classDef_),
@ -1071,10 +1250,31 @@ Scope::hasDefaultConstructor() const
return false; return false;
} }
AccessControl Scope::defaultAccess() const
{
switch (type)
{
case eGlobal:
return Global;
case eClass:
return Private;
case eStruct:
return Public;
case eUnion:
return Public;
case eNamespace:
return Namespace;
default:
return Local;
}
return Public;
}
// Get variable list.. // Get variable list..
void Scope::getVariableList() void Scope::getVariableList()
{ {
AccessControl varaccess = type == eClass ? Private : Public; AccessControl varaccess = defaultAccess();
const Token *start; const Token *start;
if (classStart) if (classStart)
@ -1163,8 +1363,16 @@ void Scope::getVariableList()
else if (tok->str() == "__property") else if (tok->str() == "__property")
continue; continue;
// skip return and delete
else if (Token::Match(tok, "return|delete"))
{
while (tok->next()->str() != ";")
tok = tok->next();
continue;
}
// Search for start of statement.. // Search for start of statement..
else if (!tok->previous() || !Token::Match(tok->previous(), ";|{|}|public:|protected:|private:")) else if (tok->previous() && !Token::Match(tok->previous(), ";|{|}|public:|protected:|private:"))
continue; continue;
else if (Token::Match(tok, ";|{|}")) else if (Token::Match(tok, ";|{|}"))
continue; continue;
@ -1210,7 +1418,9 @@ void Scope::getVariableList()
tok = tok->next(); tok = tok->next();
} }
if (isVariableDeclaration(tok, vartok, typetok)) bool isArray = false;
if (isVariableDeclaration(tok, vartok, typetok, isArray))
{ {
isClass = (!typetok->isStandardType() && vartok->previous()->str() != "*"); isClass = (!typetok->isStandardType() && vartok->previous()->str() != "*");
tok = vartok->next(); tok = vartok->next();
@ -1219,7 +1429,7 @@ void Scope::getVariableList()
// If the vartok was set in the if-blocks above, create a entry for this variable.. // If the vartok was set in the if-blocks above, create a entry for this variable..
if (vartok && vartok->str() != "operator") if (vartok && vartok->str() != "operator")
{ {
if (vartok->varId() == 0 && check->_settings->debugwarnings) if (vartok->varId() == 0 && !vartok->isBoolean() && check->_settings->debugwarnings)
{ {
std::list<ErrorLogger::ErrorMessage::FileLocation> locationList; std::list<ErrorLogger::ErrorMessage::FileLocation> locationList;
ErrorLogger::ErrorMessage::FileLocation loc; ErrorLogger::ErrorMessage::FileLocation loc;
@ -1242,7 +1452,7 @@ void Scope::getVariableList()
if (typetok) if (typetok)
scope = check->findVariableType(this, typetok); scope = check->findVariableType(this, typetok);
addVariable(vartok, typestart, varaccess, isMutable, isStatic, isConst, isClass, scope); addVariable(vartok, typestart, vartok->previous(), varaccess, isMutable, isStatic, isConst, isClass, scope, this, isArray);
} }
} }
} }
@ -1275,7 +1485,7 @@ const Token* skipPointers(const Token* tok)
return ret; return ret;
} }
bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const Token*& typetok) const bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const Token*& typetok, bool &isArray) const
{ {
const Token* localTypeTok = skipScopeIdentifiers(tok); const Token* localTypeTok = skipScopeIdentifiers(tok);
const Token* localVarTok = NULL; const Token* localVarTok = NULL;
@ -1288,7 +1498,7 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const
{ {
localVarTok = skipPointers(closeTok->next()); localVarTok = skipPointers(closeTok->next());
if (Token::Match(localVarTok, ":: %type% %var% ;")) if (Token::Match(localVarTok, ":: %type% %var% ;|="))
{ {
localTypeTok = localVarTok->next(); localTypeTok = localVarTok->next();
localVarTok = localVarTok->tokAt(2); localVarTok = localVarTok->tokAt(2);
@ -1300,10 +1510,17 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const
localVarTok = skipPointers(localTypeTok->next()); localVarTok = skipPointers(localTypeTok->next());
} }
if (isSimpleVariable(localVarTok) || isArrayVariable(localVarTok)) if (isSimpleVariable(localVarTok))
{ {
vartok = localVarTok; vartok = localVarTok;
typetok = localTypeTok; typetok = localTypeTok;
isArray = false;
}
else if (isArrayVariable(localVarTok))
{
vartok = localVarTok;
typetok = localTypeTok;
isArray = true;
} }
return NULL != vartok; return NULL != vartok;
@ -1311,7 +1528,7 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const
bool Scope::isSimpleVariable(const Token* tok) const bool Scope::isSimpleVariable(const Token* tok) const
{ {
return Token::Match(tok, "%var% ;"); return Token::Match(tok, "%var% ;|=");
} }
bool Scope::isArrayVariable(const Token* tok) const bool Scope::isArrayVariable(const Token* tok) const
@ -1325,7 +1542,7 @@ bool Scope::findClosingBracket(const Token* tok, const Token*& close) const
if (NULL != tok && tok->str() == "<") if (NULL != tok && tok->str() == "<")
{ {
unsigned int depth = 0; unsigned int depth = 0;
for (close = tok; (close != NULL) && (close->str() != ";"); close = close->next()) for (close = tok; (close != NULL) && (close->str() != ";") && (close->str() != "="); close = close->next())
{ {
if (close->str() == "<") if (close->str() == "<")
{ {

View File

@ -38,7 +38,7 @@ class SymbolDatabase;
/** /**
* @brief Access control enumerations. * @brief Access control enumerations.
*/ */
enum AccessControl { Public, Protected, Private }; enum AccessControl { Public, Protected, Private, Global, Namespace, Argument, Local };
/** @brief Information about a member variable. */ /** @brief Information about a member variable. */
class Variable class Variable
@ -49,7 +49,8 @@ class Variable
fIsMutable = (1 << 0), /** @brief mutable variable */ fIsMutable = (1 << 0), /** @brief mutable variable */
fIsStatic = (1 << 1), /** @brief static variable */ fIsStatic = (1 << 1), /** @brief static variable */
fIsConst = (1 << 2), /** @brief const variable */ fIsConst = (1 << 2), /** @brief const variable */
fIsClass = (1 << 3) /** @brief user defined type */ fIsClass = (1 << 3), /** @brief user defined type */
fIsArray = (1 << 4) /** @brief array variable */
}; };
/** /**
@ -73,20 +74,24 @@ class Variable
} }
public: public:
Variable(const Token *name_, const Token *start_, std::size_t index_, Variable(const Token *name_, const Token *start_, const Token *end_,
AccessControl access_, bool mutable_, bool static_, bool const_, std::size_t index_, AccessControl access_, bool mutable_,
bool class_, const Scope *type_) bool static_, bool const_, bool class_, const Scope *type_,
const Scope *scope_, bool array_)
: _name(name_), : _name(name_),
_start(start_), _start(start_),
_end(end_),
_index(index_), _index(index_),
_access(access_), _access(access_),
_flags(0), _flags(0),
_type(type_) _type(type_),
_scope(scope_)
{ {
setFlag(fIsMutable, mutable_); setFlag(fIsMutable, mutable_);
setFlag(fIsStatic, static_); setFlag(fIsStatic, static_);
setFlag(fIsConst, const_); setFlag(fIsConst, const_);
setFlag(fIsClass, class_); setFlag(fIsClass, class_);
setFlag(fIsArray, array_);
} }
/** /**
@ -107,13 +112,28 @@ public:
return _start; return _start;
} }
/**
* Get type end token.
* @return type end token
*/
const Token *typeEndToken() const
{
return _end;
}
/** /**
* Get name string. * Get name string.
* @return name string * @return name string
*/ */
const std::string &name() const const std::string &name() const
{ {
return _name->str(); static const std::string noname;
// name may not exist for function arguments
if (_name)
return _name->str();
return noname;
} }
/** /**
@ -122,7 +142,11 @@ public:
*/ */
unsigned int varId() const unsigned int varId() const
{ {
return _name->varId(); // name may not exist for function arguments
if (_name)
return _name->varId();
return 0;
} }
/** /**
@ -161,6 +185,42 @@ public:
return _access == Private; return _access == Private;
} }
/**
* Is variable global.
* @return true if global, false if not
*/
bool isGlobal() const
{
return _access == Global;
}
/**
* Is variable in a namespace.
* @return true if in a namespace, false if not
*/
bool isNamespace() const
{
return _access == Namespace;
}
/**
* Is variable a function argument.
* @return true if a function argument, false if not
*/
bool isArgument() const
{
return _access == Argument;
}
/**
* Is variable local.
* @return true if local, false if not
*/
bool isLocal() const
{
return _access == Local;
}
/** /**
* Is variable mutable. * Is variable mutable.
* @return true if mutable, false if not * @return true if mutable, false if not
@ -197,6 +257,15 @@ public:
return getFlag(fIsClass); return getFlag(fIsClass);
} }
/**
* Is variable an array.
* @return true if array, false if not
*/
bool isArray() const
{
return getFlag(fIsArray);
}
/** /**
* Get Scope pointer of known type. * Get Scope pointer of known type.
* @return pointer to type if known, NULL if not known * @return pointer to type if known, NULL if not known
@ -206,6 +275,15 @@ public:
return _type; return _type;
} }
/**
* Get Scope pointer of enclosing scope.
* @return pointer to enclosing scope
*/
const Scope *scope() const
{
return _scope;
}
private: private:
/** @brief variable name token */ /** @brief variable name token */
const Token *_name; const Token *_name;
@ -213,6 +291,9 @@ private:
/** @brief variable type start token */ /** @brief variable type start token */
const Token *_start; const Token *_start;
/** @brief variable type end token */
const Token *_end;
/** @brief order declared */ /** @brief order declared */
std::size_t _index; std::size_t _index;
@ -224,6 +305,9 @@ private:
/** @brief pointer to user defined type info (for known types) */ /** @brief pointer to user defined type info (for known types) */
const Scope *_type; const Scope *_type;
/** @brief pointer to scope this variable is in */
const Scope *_scope;
}; };
class Function class Function
@ -254,6 +338,7 @@ public:
unsigned int argCount() const; unsigned int argCount() const;
unsigned int initializedArgCount() const; unsigned int initializedArgCount() const;
void addArguments(const SymbolDatabase *symbolDatabase, const Scope *scope);
const Token *tokenDef; // function name token in class definition const Token *tokenDef; // function name token in class definition
const Token *argDef; // function argument start '(' in class definition const Token *argDef; // function argument start '(' in class definition
@ -272,6 +357,7 @@ public:
bool isOperator; // is operator bool isOperator; // is operator
bool retFuncPtr; // returns function pointer bool retFuncPtr; // returns function pointer
Type type; // constructor, destructor, ... Type type; // constructor, destructor, ...
std::list<Variable> argumentList; // argument list
}; };
class Scope class Scope
@ -293,10 +379,11 @@ public:
Scope *scope; Scope *scope;
}; };
enum ScopeType { eGlobal, eClass, eStruct, eUnion, eNamespace, eFunction }; enum ScopeType { eGlobal, eClass, eStruct, eUnion, eNamespace, eFunction, eIf, eElse, eElseIf, eFor, eWhile, eDo, eSwitch, eUnconditional };
enum NeedInitialization { Unknown, True, False }; enum NeedInitialization { Unknown, True, False };
Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_); Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_);
Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_, ScopeType type_, const Token *start_);
SymbolDatabase *check; SymbolDatabase *check;
ScopeType type; ScopeType type;
@ -313,13 +400,19 @@ public:
AccessControl access; AccessControl access;
unsigned int numConstructors; unsigned int numConstructors;
NeedInitialization needInitialization; NeedInitialization needInitialization;
Scope * functionOf; // class/struct this function belongs to Scope *functionOf; // class/struct this function belongs to
bool isClassOrStruct() const bool isClassOrStruct() const
{ {
return (type == eClass || type == eStruct); return (type == eClass || type == eStruct);
} }
bool isLocal() const
{
return (type == eIf || type == eElse || type == eElseIf ||
type == eFor || type == eWhile || type == eDo ||
type == eSwitch || type == eUnconditional);
}
/** /**
* @brief find if name is in nested list * @brief find if name is in nested list
* @param name name of nested scope * @param name name of nested scope
@ -332,9 +425,14 @@ public:
*/ */
Scope * findInNestedListRecursive(const std::string & name); Scope * findInNestedListRecursive(const std::string & name);
void addVariable(const Token *token_, const Token *start_, AccessControl access_, bool mutable_, bool static_, bool const_, bool class_, const Scope *type_) void addVariable(const Token *token_, const Token *start_,
const Token *end_, AccessControl access_, bool mutable_,
bool static_, bool const_, bool class_, const Scope *type_,
const Scope *scope_, bool array_)
{ {
varlist.push_back(Variable(token_, start_, varlist.size(), access_, mutable_, static_, const_, class_, type_)); varlist.push_back(Variable(token_, start_, end_, varlist.size(),
access_, mutable_, static_, const_, class_,
type_, scope_, array_));
} }
/** @brief initialize varlist */ /** @brief initialize varlist */
@ -352,15 +450,18 @@ public:
bool hasDefaultConstructor() const; bool hasDefaultConstructor() const;
AccessControl defaultAccess() const;
private: private:
/** /**
* @brief helper function for getVariableList() * @brief helper function for getVariableList()
* @param tok pointer to token to check * @param tok pointer to token to check
* @param vartok populated with pointer to the variable token, if found * @param vartok populated with pointer to the variable token, if found
* @param typetok populated with pointer to the type token, if found * @param typetok populated with pointer to the type token, if found
* @param isArray reference to variable to set if array is found
* @return true if tok points to a variable declaration, false otherwise * @return true if tok points to a variable declaration, false otherwise
*/ */
bool isVariableDeclaration(const Token* tok, const Token*& vartok, const Token*& typetok) const; bool isVariableDeclaration(const Token* tok, const Token*& vartok, const Token*& typetok, bool &isArray) const;
bool isSimpleVariable(const Token* tok) const; bool isSimpleVariable(const Token* tok) const;
bool isArrayVariable(const Token* tok) const; bool isArrayVariable(const Token* tok) const;
bool findClosingBracket(const Token* tok, const Token*& close) const; bool findClosingBracket(const Token* tok, const Token*& close) const;
@ -394,6 +495,11 @@ public:
return bool(classAndStructTypes.find(type) != classAndStructTypes.end()); return bool(classAndStructTypes.find(type) != classAndStructTypes.end());
} }
const Variable *getVariableFromVarId(unsigned int varId) const
{
return _variableList[varId];
}
private: private:
// Needed by Borland C++: // Needed by Borland C++:
@ -410,6 +516,9 @@ private:
const Tokenizer *_tokenizer; const Tokenizer *_tokenizer;
const Settings *_settings; const Settings *_settings;
ErrorLogger *_errorLogger; ErrorLogger *_errorLogger;
/** variable symbol table */
std::vector<const Variable *> _variableList;
}; };
#endif #endif

View File

@ -58,6 +58,9 @@ Tokenizer::Tokenizer()
// symbol database // symbol database
_symbolDatabase = NULL; _symbolDatabase = NULL;
// variable count
_varId = 0;
} }
Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger) Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger)
@ -75,6 +78,9 @@ Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger)
// symbol database // symbol database
_symbolDatabase = NULL; _symbolDatabase = NULL;
// variable count
_varId = 0;
} }
Tokenizer::~Tokenizer() Tokenizer::~Tokenizer()
@ -886,6 +892,9 @@ static Token *processFunc(Token *tok2, bool inOperator)
tok2 = tok2->tokAt(4)->link()->next(); tok2 = tok2->tokAt(4)->link()->next();
else if (Token::Match(tok2->next(), "* ( * %type% (")) else if (Token::Match(tok2->next(), "* ( * %type% ("))
tok2 = tok2->tokAt(5)->link()->next(); tok2 = tok2->tokAt(5)->link()->next();
else if (Token::Match(tok2->next(), "* [") &&
Token::simpleMatch(tok2->tokAt(2)->link(), "] ;"))
tok2 = tok2->next();
else else
{ {
if (tok2->next()->str() == "(") if (tok2->next()->str() == "(")
@ -3268,7 +3277,7 @@ void Tokenizer::setVarId()
tok->varId(0); tok->varId(0);
// Set variable ids.. // Set variable ids..
unsigned int _varId = 0; _varId = 0;
for (Token *tok = _tokens; tok; tok = tok->next()) for (Token *tok = _tokens; tok; tok = tok->next())
{ {
if (tok != _tokens && !Token::Match(tok, "[;{}(,] %type%")) if (tok != _tokens && !Token::Match(tok, "[;{}(,] %type%"))
@ -3915,10 +3924,14 @@ void Tokenizer::simplifySizeof()
--parlevel; --parlevel;
if (Token::Match(tempToken, "%var%")) if (Token::Match(tempToken, "%var%"))
{ {
while (tempToken->next()->str() == "[") while (tempToken && tempToken->next() && tempToken->next()->str() == "[")
{ {
tempToken = tempToken->next()->link(); tempToken = tempToken->next()->link();
} }
if (!tempToken || !tempToken->next())
{
break;
}
if (tempToken->next()->str() == ".") if (tempToken->next()->str() == ".")
{ {
@ -4656,6 +4669,8 @@ void Tokenizer::simplifyIfAddBraces()
break; break;
} }
tempToken = tempToken->link(); tempToken = tempToken->link();
if (!tempToken || !tempToken->next())
break;
if (tempToken->next()->isName() && tempToken->next()->str() != "else") if (tempToken->next()->isName() && tempToken->next()->str() != "else")
break; break;
continue; continue;
@ -6341,6 +6356,22 @@ bool Tokenizer::simplifyKnownVariables()
ret |= simplifyKnownVariablesSimplify(&tok2, tok3, varid, structname, value, valueVarId, valueIsPointer, valueToken, indentlevel); ret |= simplifyKnownVariablesSimplify(&tok2, tok3, varid, structname, value, valueVarId, valueIsPointer, valueToken, indentlevel);
} }
else if (Token::Match(tok2, "strcpy ( %var% , %str% ) ;"))
{
const unsigned int varid(tok2->tokAt(2)->varId());
if (varid == 0)
continue;
const std::string structname("");
const Token * const valueToken = tok2->tokAt(4);
std::string value(valueToken->str());
const unsigned int valueVarId(0);
const bool valueIsPointer(false);
Token *tok3 = tok2;
for (int i = 0; i < 6; ++i)
tok3 = tok3->next();
ret |= simplifyKnownVariablesSimplify(&tok2, tok3, varid, structname, value, valueVarId, valueIsPointer, valueToken, indentlevel);
}
} }
if (tok2) if (tok2)
@ -9375,7 +9406,8 @@ void Tokenizer::removeUnnecessaryQualification()
classInfo.pop(); classInfo.pop();
else if (tok->str() == classInfo.top().className && else if (tok->str() == classInfo.top().className &&
Token::Match(tok, "%type% :: %type% (") && Token::Match(tok, "%type% :: %type% (") &&
Token::Match(tok->tokAt(3)->link(), ") const| {|;")) Token::Match(tok->tokAt(3)->link(), ") const| {|;") &&
tok->previous()->str() != ":")
{ {
std::list<ErrorLogger::ErrorMessage::FileLocation> locationList; std::list<ErrorLogger::ErrorMessage::FileLocation> locationList;
ErrorLogger::ErrorMessage::FileLocation loc; ErrorLogger::ErrorMessage::FileLocation loc;

View File

@ -650,6 +650,15 @@ public:
Token *deleteInvalidTypedef(Token *typeDef); Token *deleteInvalidTypedef(Token *typeDef);
/**
* Get variable count.
* @return number of variables
*/
unsigned int varIdCount() const
{
return _varId;
}
private: private:
/** Disable copy constructor, no implementation */ /** Disable copy constructor, no implementation */
Tokenizer(const Tokenizer &); Tokenizer(const Tokenizer &);
@ -684,6 +693,9 @@ private:
/** Symbol database that all checks etc can use */ /** Symbol database that all checks etc can use */
mutable SymbolDatabase *_symbolDatabase; mutable SymbolDatabase *_symbolDatabase;
/** variable count */
unsigned int _varId;
}; };
/// @} /// @}

View File

@ -120,6 +120,7 @@ man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
<arg choice="opt"><option>--rule=&lt;rule&gt;</option></arg> <arg choice="opt"><option>--rule=&lt;rule&gt;</option></arg>
<arg choice="opt"><option>--rule-file=&lt;file&gt;</option></arg> <arg choice="opt"><option>--rule-file=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--style</option></arg> <arg choice="opt"><option>--style</option></arg>
<arg choice="opt"><option>--suppress=&lt;spec&gt;</option></arg>
<arg choice="opt"><option>--suppressions-list=&lt;file&gt;</option></arg> <arg choice="opt"><option>--suppressions-list=&lt;file&gt;</option></arg>
<arg choice="opt"><option>--template '&lt;text&gt;'</option></arg> <arg choice="opt"><option>--template '&lt;text&gt;'</option></arg>
<arg choice="opt"><option>--verbose</option></arg> <arg choice="opt"><option>--verbose</option></arg>
@ -303,12 +304,19 @@ Directory name is matched to all parts of the path.</para>
<para>Deprecated, use --enable=style</para> <para>Deprecated, use --enable=style</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--suppress=&lt;spec&gt;</option></term>
<listitem>
<para>Suppress a specific warning. The format of &lt;spec&gt; is: [error id]:[filename]:[line].
The [filename] and [line] are optional.
[filename] may contain the wildcard characters * or ?.</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>--suppressions-list=&lt;file&gt;</option></term> <term><option>--suppressions-list=&lt;file&gt;</option></term>
<listitem> <listitem>
<para>Suppress warnings listed in the file. Filename and line are optional. The format of the single line in file is: [error id]:[filename]:[line]. <para>Suppress warnings listed in the file.
You can use --template or --xml to see the error id. Each suppression is in the format of &lt;spec&gt; above.</para>
The filename may contain the wildcard characters * or ?.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -374,7 +374,8 @@ gui/test.cpp,16,error,mismatchAllocDealloc,Mismatching allocation and deallocati
<title>Suppressions</title> <title>Suppressions</title>
<para>If you want to filter out certain errors you can suppress these. <para>If you want to filter out certain errors you can suppress these.
First you need to create a suppressions file. The format is:</para> The <literal>--suppress=</literal> command line option is used to specify
suppressions on the command line. The format is one of:</para>
<programlisting>[error id]:[filename]:[line] <programlisting>[error id]:[filename]:[line]
[error id]:[filename2] [error id]:[filename2]
@ -389,6 +390,11 @@ gui/test.cpp,16,error,mismatchAllocDealloc,Mismatching allocation and deallocati
* or ?, which match any sequence of characters or any single character * or ?, which match any sequence of characters or any single character
respectively.</para> respectively.</para>
<programlisting>cppcheck --suppress=memleak:file1.cpp src/</programlisting>
<para>If you have more than a couple of suppressions, create a suppressions
file with one line per suppression as above.</para>
<para>Here is an example:</para> <para>Here is an example:</para>
<programlisting>memleak:file1.cpp <programlisting>memleak:file1.cpp

View File

@ -850,27 +850,17 @@ private:
void array_index_24() void array_index_24()
{ {
// ticket #1492 and #1539 // ticket #1492 and #1539
if (CHAR_MAX == SCHAR_MAX) // plain char is signed // CHAR_MAX can be equal to SCHAR_MAX or UCHAR_MAX depending on the environment.
{ // This test should work for both environments.
check("void f(char n) {\n" std::ostringstream charMaxPlusOne;
" int a[n];\n" // n <= CHAR_MAX charMaxPlusOne << (CHAR_MAX+1);
" a[-1] = 0;\n" // negative index check(("void f(char n) {\n"
" a[128] = 0;\n" // 128 > CHAR_MAX " int a[n];\n" // n <= CHAR_MAX
"}\n"); " a[-1] = 0;\n" // negative index
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a[128]' index 128 out of bounds\n" " a[" + charMaxPlusOne.str() + "] = 0;\n" // 128/256 > CHAR_MAX
"[test.cpp:3]: (error) Array index -1 is out of bounds\n", errout.str()); "}\n").c_str());
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a["+charMaxPlusOne.str()+"]' index "+charMaxPlusOne.str()+" out of bounds\n"
} "[test.cpp:3]: (error) Array index -1 is out of bounds\n", errout.str());
else // plain char is unsigned
{
check("void f(char n) {\n"
" int a[n];\n" // n <= CHAR_MAX
" a[-1] = 0;\n" // negative index
" a[256] = 0;\n" // 256 > CHAR_MAX
"}\n");
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a[256]' index 256 out of bounds\n"
"[test.cpp:3]: (error) Array index -1 out of bounds\n", errout.str());
}
check("void f(signed char n) {\n" check("void f(signed char n) {\n"
" int a[n];\n" // n <= SCHAR_MAX " int a[n];\n" // n <= SCHAR_MAX

View File

@ -2908,7 +2908,52 @@ private:
void memsetOnClass() void memsetOnClass()
{ {
checkNoMemset("class A\n" checkNoMemset("class Fred\n"
"{\n"
"};\n"
"void f()\n"
"{\n"
" Fred fred;\n"
" memset(&fred, 0, sizeof(Fred));\n"
"}\n");
ASSERT_EQUALS("", errout.str());
checkNoMemset("class Fred\n"
"{\n"
" std::string b; \n"
"};\n"
"void f()\n"
"{\n"
" Fred fred;\n"
" memset(&fred, 0, sizeof(Fred));\n"
"}\n");
ASSERT_EQUALS("[test.cpp:8]: (error) Using 'memset' on class that contains a 'std::string'\n", errout.str());
checkNoMemset("class Fred\n"
"{\n"
"};\n"
"void f()\n"
"{\n"
" Fred fred;\n"
" memset(&fred, 0, sizeof(fred));\n"
"}\n");
ASSERT_EQUALS("", errout.str());
checkNoMemset("class Fred\n"
"{\n"
" std::string s;\n"
"};\n"
"void f()\n"
"{\n"
" Fred fred;\n"
" memset(&fred, 0, sizeof(fred));\n"
"}\n");
ASSERT_EQUALS("[test.cpp:8]: (error) Using 'memset' on class that contains a 'std::string'\n", errout.str());
}
void memsetOnStruct()
{
checkNoMemset("struct A\n"
"{\n" "{\n"
"};\n" "};\n"
"void f()\n" "void f()\n"
@ -2924,23 +2969,24 @@ private:
"void f()\n" "void f()\n"
"{\n" "{\n"
" struct A a;\n" " struct A a;\n"
" memset(&a, 0, sizeof(A));\n" " memset(&a, 0, sizeof(struct A));\n"
"}\n"); "}\n");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
}
void memsetOnStruct() checkNoMemset("struct A\n"
{
checkNoMemset("class A\n"
"{\n" "{\n"
" void g( struct sockaddr_in6& a);\n"
"private:\n"
" std::string b; \n"
"};\n" "};\n"
"void f()\n" "void f()\n"
"{\n" "{\n"
" struct sockaddr_in6 fail;\n" " struct A a;\n"
" memset(&fail, 0, sizeof(struct sockaddr_in6));\n" " memset(&a, 0, sizeof(A));\n"
"}\n");
ASSERT_EQUALS("", errout.str());
checkNoMemset("void f()\n"
"{\n"
" struct sockaddr_in6 fail;\n"
" memset(&fail, 0, sizeof(struct sockaddr_in6));\n"
"}\n"); "}\n");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
@ -2966,18 +3012,68 @@ private:
" Fred fred;\n" " Fred fred;\n"
" memset(&fred, 0, sizeof(fred));\n" " memset(&fred, 0, sizeof(fred));\n"
"}\n"); "}\n");
TODO_ASSERT_EQUALS("error", "", errout.str()); ASSERT_EQUALS("[test.cpp:8]: (error) Using 'memset' on struct that contains a 'std::string'\n", errout.str());
} }
void memsetVector() void memsetVector()
{ {
checkNoMemset("class A\n"
"{ std::vector<int> ints; }\n"
"\n"
"void f()\n"
"{\n"
" A a;\n"
" memset(&a, 0, sizeof(A));\n"
"}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on class that contains a 'std::vector'\n", errout.str());
checkNoMemset("struct A\n" checkNoMemset("struct A\n"
"{ std::vector<int> ints; }\n" "{ std::vector<int> ints; }\n"
"\n" "\n"
"void f()\n" "void f()\n"
"{\n" "{\n"
" A a;\n" " A a;\n"
" memset(a, 0, sizeof(A));\n" " memset(&a, 0, sizeof(A));\n"
"}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
checkNoMemset("struct A\n"
"{ std::vector<int> ints; }\n"
"\n"
"void f()\n"
"{\n"
" A a;\n"
" memset(&a, 0, sizeof(struct A));\n"
"}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
checkNoMemset("struct A\n"
"{ std::vector<int> ints; }\n"
"\n"
"void f()\n"
"{\n"
" A a;\n"
" memset(&a, 0, sizeof(a));\n"
"}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
checkNoMemset("class A\n"
"{ std::vector< std::vector<int> > ints; }\n"
"\n"
"void f()\n"
"{\n"
" A a;\n"
" memset(&a, 0, sizeof(A));\n"
"}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on class that contains a 'std::vector'\n", errout.str());
checkNoMemset("struct A\n"
"{ std::vector< std::vector<int> > ints; }\n"
"\n"
"void f()\n"
"{\n"
" A a;\n"
" memset(&a, 0, sizeof(A));\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str()); ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
@ -2987,7 +3083,7 @@ private:
"void f()\n" "void f()\n"
"{\n" "{\n"
" A a;\n" " A a;\n"
" memset(a, 0, sizeof(A));\n" " memset(&a, 0, sizeof(a));\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str()); ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
@ -2997,7 +3093,7 @@ private:
"void f()\n" "void f()\n"
"{\n" "{\n"
" A a;\n" " A a;\n"
" memset(a, 0, sizeof(A));\n" " memset(&a, 0, sizeof(A));\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str()); ASSERT_EQUALS("[test.cpp:7]: (error) Using 'memset' on struct that contains a 'std::vector'\n", errout.str());
} }

View File

@ -77,6 +77,8 @@ private:
TEST_CASE(suppressionsOld); // TODO: Create and test real suppression file TEST_CASE(suppressionsOld); // TODO: Create and test real suppression file
TEST_CASE(suppressions) TEST_CASE(suppressions)
TEST_CASE(suppressionsNoFile) TEST_CASE(suppressionsNoFile)
TEST_CASE(suppressionSingle)
TEST_CASE(suppressionSingleFile)
TEST_CASE(templates); TEST_CASE(templates);
TEST_CASE(templatesGcc); TEST_CASE(templatesGcc);
TEST_CASE(templatesVs); TEST_CASE(templatesVs);
@ -554,6 +556,26 @@ private:
ASSERT(!parser.ParseFromArgs(3, argv)); ASSERT(!parser.ParseFromArgs(3, argv));
} }
void suppressionSingle()
{
REDIRECT;
const char *argv[] = {"cppcheck", "--suppress=uninitvar", "file.cpp"};
Settings settings;
CmdLineParser parser(&settings);
ASSERT(parser.ParseFromArgs(3, argv));
ASSERT_EQUALS(true, settings.nomsg.isSuppressed("uninitvar", "file.cpp", 1U));
}
void suppressionSingleFile()
{
REDIRECT;
const char *argv[] = {"cppcheck", "--suppress=uninitvar:file.cpp", "file.cpp"};
Settings settings;
CmdLineParser parser(&settings);
ASSERT(parser.ParseFromArgs(3, argv));
ASSERT_EQUALS(true, settings.nomsg.isSuppressed("uninitvar", "file.cpp", 1U));
}
void templates() void templates()
{ {
REDIRECT; REDIRECT;

View File

@ -106,6 +106,7 @@ private:
TEST_CASE(incorrectStringCompare); TEST_CASE(incorrectStringCompare);
TEST_CASE(incrementBoolean); TEST_CASE(incrementBoolean);
TEST_CASE(comparisonOfBoolWithInt);
} }
void check(const char code[], const char *filename = NULL) void check(const char code[], const char *filename = NULL)
@ -144,6 +145,7 @@ private:
checkOther.clarifyCalculation(); checkOther.clarifyCalculation();
checkOther.checkIncorrectStringCompare(); checkOther.checkIncorrectStringCompare();
checkOther.checkIncrementBoolean(); checkOther.checkIncrementBoolean();
checkOther.checkComparisonOfBoolWithInt();
} }
@ -1923,6 +1925,51 @@ private:
"}"); "}");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
} }
void comparisonOfBoolWithInt()
{
check("void f(int x) {\n"
" if (!x == 10) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("[test.cpp:2]: (warning) Comparison of a boolean with a non-zero integer\n", errout.str());
check("void f(int x) {\n"
" if (!x != 10) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("[test.cpp:2]: (warning) Comparison of a boolean with a non-zero integer\n", errout.str());
check("void f(int x) {\n"
" if (x != 10) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("", errout.str());
check("void f(int x) {\n"
" if (10 == !x) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("[test.cpp:2]: (warning) Comparison of a boolean with a non-zero integer\n", errout.str());
check("void f(int x) {\n"
" if (10 != !x) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("[test.cpp:2]: (warning) Comparison of a boolean with a non-zero integer\n", errout.str());
check("void f(int x) {\n"
" if (10 != x) {\n"
" printf(\"x not equal to 10\");\n"
" }\n"
"}");
ASSERT_EQUALS("", errout.str());
}
}; };
REGISTER_TEST(TestOther) REGISTER_TEST(TestOther)

View File

@ -92,6 +92,10 @@ private:
TEST_CASE(error3); TEST_CASE(error3);
// Don't handle include in a #if 0 block
TEST_CASE(if0_include_1);
TEST_CASE(if0_include_2);
// Handling include guards (don't create extra configuration for it) // Handling include guards (don't create extra configuration for it)
TEST_CASE(includeguard1); TEST_CASE(includeguard1);
TEST_CASE(includeguard2); TEST_CASE(includeguard2);
@ -114,7 +118,6 @@ private:
TEST_CASE(if_cond4); TEST_CASE(if_cond4);
TEST_CASE(if_cond5); TEST_CASE(if_cond5);
TEST_CASE(if_cond6); TEST_CASE(if_cond6);
TEST_CASE(if_cond7);
TEST_CASE(if_cond8); TEST_CASE(if_cond8);
TEST_CASE(if_cond9); TEST_CASE(if_cond9);
TEST_CASE(if_cond10); TEST_CASE(if_cond10);
@ -195,6 +198,7 @@ private:
TEST_CASE(ifdef_ifdefined); TEST_CASE(ifdef_ifdefined);
// define and then ifdef // define and then ifdef
TEST_CASE(define_if);
TEST_CASE(define_ifdef); TEST_CASE(define_ifdef);
TEST_CASE(define_ifndef1); TEST_CASE(define_ifndef1);
TEST_CASE(define_ifndef2); TEST_CASE(define_ifndef2);
@ -206,6 +210,8 @@ private:
TEST_CASE(testPreprocessorRead2); TEST_CASE(testPreprocessorRead2);
TEST_CASE(testPreprocessorRead3); TEST_CASE(testPreprocessorRead3);
TEST_CASE(testPreprocessorRead4); TEST_CASE(testPreprocessorRead4);
TEST_CASE(invalid_define); // #2605 - hang for: '#define ='
} }
@ -635,6 +641,32 @@ private:
ASSERT_EQUALS("[test.c:1]: (error) #error hello world!\n", errout.str()); ASSERT_EQUALS("[test.c:1]: (error) #error hello world!\n", errout.str());
} }
void if0_include_1()
{
Settings settings;
Preprocessor preprocessor(&settings, this);
std::istringstream code("#if 0\n"
"#include \"a.h\"\n"
"#endif\n"
"AB\n");
ASSERT_EQUALS("\n\n\nAB\n", preprocessor.read(code,"",NULL));
}
void if0_include_2()
{
Settings settings;
Preprocessor preprocessor(&settings, this);
std::istringstream code("#if 0\n"
"#include \"a.h\"\n"
"#ifdef WIN32\n"
"#else\n"
"#endif\n"
"#endif\n"
"AB\n");
ASSERT_EQUALS("\n\n\n\n\n\nAB\n", preprocessor.read(code,"",NULL));
}
void includeguard1() void includeguard1()
{ {
@ -1232,48 +1264,6 @@ private:
ASSERT_EQUALS("[file.c:2]: (error) mismatching number of '(' and ')' in this line: defined(A)&&defined(B))\n", errout.str()); ASSERT_EQUALS("[file.c:2]: (error) mismatching number of '(' and ')' in this line: defined(A)&&defined(B))\n", errout.str());
} }
void if_cond7()
{
{
const char filedata[] = "#define A 1\n"
"#if A==1\n"
"a1;\n"
"#endif\n";
// Preprocess => actual result..
std::istringstream istr(filedata);
std::map<std::string, std::string> actual;
Settings settings;
Preprocessor preprocessor(&settings, this);
preprocessor.preprocess(istr, actual, "file.c");
// Compare results..
ASSERT_EQUALS(1, (int)actual.size());
ASSERT_EQUALS("\n\na1;\n\n", actual[""]);
}
{
const char filedata[] = "#define A 0\n"
"#if A\n"
"foo();\n"
"#endif\n";
// Preprocess => actual result..
std::istringstream istr(filedata);
std::map<std::string, std::string> actual;
Settings settings;
Preprocessor preprocessor(&settings, this);
preprocessor.preprocess(istr, actual, "file.c");
// Compare results..
TODO_ASSERT_EQUALS(2,
1, static_cast<unsigned int>(actual.size()));
TODO_ASSERT_EQUALS("\n\n\n\n",
"\n\nfoo();\n\n", actual[""]);
}
}
void if_cond8() void if_cond8()
{ {
const char filedata[] = "#if defined(A) + defined(B) + defined(C) != 1\n" const char filedata[] = "#if defined(A) + defined(B) + defined(C) != 1\n"
@ -2440,6 +2430,24 @@ private:
ASSERT_EQUALS(2, static_cast<unsigned int>(actual.size())); ASSERT_EQUALS(2, static_cast<unsigned int>(actual.size()));
} }
void define_if()
{
{
const char filedata[] = "#define A 0\n"
"#if A\n"
"FOO\n"
"#endif";
ASSERT_EQUALS("\n\n\n\n", Preprocessor::getcode(filedata,"","",NULL,NULL));
}
{
const char filedata[] = "#define A 1\n"
"#if A==1\n"
"FOO\n"
"#endif";
ASSERT_EQUALS("\n\nFOO\n\n", Preprocessor::getcode(filedata,"","",NULL,NULL));
}
}
void define_ifdef() void define_ifdef()
{ {
{ {
@ -2720,6 +2728,18 @@ private:
ASSERT_EQUALS("#define A \" \\\\\\\\\" \" \"", preprocessor.read(istr, "test.cpp", 0)); ASSERT_EQUALS("#define A \" \\\\\\\\\" \" \"", preprocessor.read(istr, "test.cpp", 0));
} }
} }
void invalid_define()
{
Settings settings;
Preprocessor preprocessor(&settings, this);
std::istringstream src("#define =\n");
std::string processedFile;
std::list<std::string> cfg;
std::list<std::string> paths;
preprocessor.preprocess(src, processedFile, cfg, "", paths); // don't hang
}
}; };
REGISTER_TEST(TestPreprocessor) REGISTER_TEST(TestPreprocessor)

View File

@ -85,6 +85,7 @@ private:
TEST_CASE(sizeof20); // #2024 - sizeof a) TEST_CASE(sizeof20); // #2024 - sizeof a)
TEST_CASE(sizeof21); // #2232 - sizeof...(Args) TEST_CASE(sizeof21); // #2232 - sizeof...(Args)
TEST_CASE(sizeof22); // #2599 TEST_CASE(sizeof22); // #2599
TEST_CASE(sizeof23); // #2604
TEST_CASE(sizeofsizeof); TEST_CASE(sizeofsizeof);
TEST_CASE(casting); TEST_CASE(casting);
@ -241,6 +242,7 @@ private:
TEST_CASE(simplifyTypedef79); // ticket #2348 TEST_CASE(simplifyTypedef79); // ticket #2348
TEST_CASE(simplifyTypedef80); // ticket #2587 TEST_CASE(simplifyTypedef80); // ticket #2587
TEST_CASE(simplifyTypedef81); // ticket #2603 TEST_CASE(simplifyTypedef81); // ticket #2603
TEST_CASE(simplifyTypedef82); // ticket #2403
TEST_CASE(simplifyTypedefFunction1); TEST_CASE(simplifyTypedefFunction1);
TEST_CASE(simplifyTypedefFunction2); // ticket #1685 TEST_CASE(simplifyTypedefFunction2); // ticket #1685
@ -326,7 +328,8 @@ private:
TEST_CASE(simplifyFunctionReturn); TEST_CASE(simplifyFunctionReturn);
TEST_CASE(removeUnnecessaryQualification); TEST_CASE(removeUnnecessaryQualification1);
TEST_CASE(removeUnnecessaryQualification2);
TEST_CASE(simplifyIfNotNull); TEST_CASE(simplifyIfNotNull);
} }
@ -1432,6 +1435,15 @@ private:
tok(code); tok(code);
} }
void sizeof23()
{
// ticket #2604 segmentation fault
const char code[] = "sizeof <= A\n";
// don't segfault
tok(code);
}
void sizeofsizeof() void sizeofsizeof()
{ {
@ -4931,6 +4943,24 @@ private:
ASSERT_EQUALS("[test.cpp:1]: (error) syntax error\n", errout.str()); ASSERT_EQUALS("[test.cpp:1]: (error) syntax error\n", errout.str());
} }
void simplifyTypedef82() // ticket #2403
{
checkSimplifyTypedef("class A {\n"
"public:\n"
" typedef int F(int idx);\n"
"};\n"
"class B {\n"
"public:\n"
" A::F ** f;\n"
"};\n"
"int main()\n"
"{\n"
" B * b = new B;\n"
" b->f = new A::F * [ 10 ];\n"
"}\n");
ASSERT_EQUALS("", errout.str());
}
void simplifyTypedefFunction1() void simplifyTypedefFunction1()
{ {
{ {
@ -6521,7 +6551,7 @@ private:
ASSERT_EQUALS(expected, tok(code, false)); ASSERT_EQUALS(expected, tok(code, false));
} }
void removeUnnecessaryQualification() void removeUnnecessaryQualification1()
{ {
const char code[] = "class Fred { Fred::Fred() {} };"; const char code[] = "class Fred { Fred::Fred() {} };";
const char expected[] = "class Fred { Fred ( ) { } } ;"; const char expected[] = "class Fred { Fred ( ) { } } ;";
@ -6529,6 +6559,16 @@ private:
ASSERT_EQUALS("[test.cpp:1]: (portability) Extra qualification 'Fred::' unnecessary and considered an error by many compilers.\n", errout.str()); ASSERT_EQUALS("[test.cpp:1]: (portability) Extra qualification 'Fred::' unnecessary and considered an error by many compilers.\n", errout.str());
} }
void removeUnnecessaryQualification2()
{
const char code[] = "template<typename Iter, typename Skip>\n"
"struct grammar : qi::grammar<Iter, int(), Skip> {\n"
" grammar() : grammar::base_type(start) { }\n"
"};\n";
tok(code, false);
ASSERT_EQUALS("", errout.str());
}
void simplifyIfNotNull() // ticket # 2601 segmentation fault void simplifyIfNotNull() // ticket # 2601 segmentation fault
{ {
const char code[] = "|| #if #define <="; const char code[] = "|| #if #define <=";

View File

@ -38,6 +38,7 @@ public:
,typetok(NULL) ,typetok(NULL)
,t(NULL) ,t(NULL)
,found(false) ,found(false)
,isArray(false)
{} {}
private: private:
@ -46,6 +47,7 @@ private:
const Token* typetok; const Token* typetok;
const Token* t; const Token* t;
bool found; bool found;
bool isArray;
void reset() void reset()
{ {
@ -53,6 +55,7 @@ private:
typetok = NULL; typetok = NULL;
t = NULL; t = NULL;
found = false; found = false;
isArray = false;
} }
void run() void run()
@ -93,213 +96,238 @@ private:
TEST_CASE(hasInlineClassFunctionReturningFunctionPointer); TEST_CASE(hasInlineClassFunctionReturningFunctionPointer);
TEST_CASE(hasMissingInlineClassFunctionReturningFunctionPointer); TEST_CASE(hasMissingInlineClassFunctionReturningFunctionPointer);
TEST_CASE(hasClassFunctionReturningFunctionPointer); TEST_CASE(hasClassFunctionReturningFunctionPointer);
TEST_CASE(hasGlobalVariables1);
TEST_CASE(hasGlobalVariables2);
TEST_CASE(hasGlobalVariables3);
} }
void test_isVariableDeclarationCanHandleNull() void test_isVariableDeclarationCanHandleNull()
{ {
reset(); reset();
bool result = si.isVariableDeclaration(NULL, vartok, typetok); bool result = si.isVariableDeclaration(NULL, vartok, typetok, isArray);
ASSERT_EQUALS(false, result); ASSERT_EQUALS(false, result);
ASSERT(NULL == vartok); ASSERT(NULL == vartok);
ASSERT(NULL == typetok); ASSERT(NULL == typetok);
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesSimpleDeclaration() void test_isVariableDeclarationIdentifiesSimpleDeclaration()
{ {
reset(); reset();
givenACodeSampleToTokenize simpleDeclaration("int x;"); givenACodeSampleToTokenize simpleDeclaration("int x;");
bool result = si.isVariableDeclaration(simpleDeclaration.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(simpleDeclaration.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("x", vartok->str()); ASSERT_EQUALS("x", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesScopedDeclaration() void test_isVariableDeclarationIdentifiesScopedDeclaration()
{ {
reset(); reset();
givenACodeSampleToTokenize ScopedDeclaration("::int x;"); givenACodeSampleToTokenize ScopedDeclaration("::int x;");
bool result = si.isVariableDeclaration(ScopedDeclaration.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(ScopedDeclaration.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("x", vartok->str()); ASSERT_EQUALS("x", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesStdDeclaration() void test_isVariableDeclarationIdentifiesStdDeclaration()
{ {
reset(); reset();
givenACodeSampleToTokenize StdDeclaration("std::string x;"); givenACodeSampleToTokenize StdDeclaration("std::string x;");
bool result = si.isVariableDeclaration(StdDeclaration.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(StdDeclaration.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("x", vartok->str()); ASSERT_EQUALS("x", vartok->str());
ASSERT_EQUALS("string", typetok->str()); ASSERT_EQUALS("string", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesScopedStdDeclaration() void test_isVariableDeclarationIdentifiesScopedStdDeclaration()
{ {
reset(); reset();
givenACodeSampleToTokenize StdDeclaration("::std::string x;"); givenACodeSampleToTokenize StdDeclaration("::std::string x;");
bool result = si.isVariableDeclaration(StdDeclaration.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(StdDeclaration.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("x", vartok->str()); ASSERT_EQUALS("x", vartok->str());
ASSERT_EQUALS("string", typetok->str()); ASSERT_EQUALS("string", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesManyScopes() void test_isVariableDeclarationIdentifiesManyScopes()
{ {
reset(); reset();
givenACodeSampleToTokenize manyScopes("AA::BB::CC::DD::EE x;"); givenACodeSampleToTokenize manyScopes("AA::BB::CC::DD::EE x;");
bool result = si.isVariableDeclaration(manyScopes.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(manyScopes.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("x", vartok->str()); ASSERT_EQUALS("x", vartok->str());
ASSERT_EQUALS("EE", typetok->str()); ASSERT_EQUALS("EE", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesPointers() void test_isVariableDeclarationIdentifiesPointers()
{ {
reset(); reset();
givenACodeSampleToTokenize pointer("int* p;"); givenACodeSampleToTokenize pointer("int* p;");
bool result = si.isVariableDeclaration(pointer.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(pointer.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("p", vartok->str()); ASSERT_EQUALS("p", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationDoesNotIdentifyConstness() void test_isVariableDeclarationDoesNotIdentifyConstness()
{ {
reset(); reset();
givenACodeSampleToTokenize constness("const int* cp;"); givenACodeSampleToTokenize constness("const int* cp;");
bool result = si.isVariableDeclaration(constness.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(constness.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(false, result); ASSERT_EQUALS(false, result);
ASSERT(NULL == vartok); ASSERT(NULL == vartok);
ASSERT(NULL == typetok); ASSERT(NULL == typetok);
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesFirstOfManyVariables() void test_isVariableDeclarationIdentifiesFirstOfManyVariables()
{ {
reset(); reset();
givenACodeSampleToTokenize multipleDeclaration("int first, second;"); givenACodeSampleToTokenize multipleDeclaration("int first, second;");
bool result = si.isVariableDeclaration(multipleDeclaration.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(multipleDeclaration.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("first", vartok->str()); ASSERT_EQUALS("first", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesScopedPointerDeclaration() void test_isVariableDeclarationIdentifiesScopedPointerDeclaration()
{ {
reset(); reset();
givenACodeSampleToTokenize manyScopes("AA::BB::CC::DD::EE* p;"); givenACodeSampleToTokenize manyScopes("AA::BB::CC::DD::EE* p;");
bool result = si.isVariableDeclaration(manyScopes.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(manyScopes.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("p", vartok->str()); ASSERT_EQUALS("p", vartok->str());
ASSERT_EQUALS("EE", typetok->str()); ASSERT_EQUALS("EE", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesDeclarationWithIndirection() void test_isVariableDeclarationIdentifiesDeclarationWithIndirection()
{ {
reset(); reset();
givenACodeSampleToTokenize pointerToPointer("int** pp;"); givenACodeSampleToTokenize pointerToPointer("int** pp;");
bool result = si.isVariableDeclaration(pointerToPointer.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(pointerToPointer.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("pp", vartok->str()); ASSERT_EQUALS("pp", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesDeclarationWithMultipleIndirection() void test_isVariableDeclarationIdentifiesDeclarationWithMultipleIndirection()
{ {
reset(); reset();
givenACodeSampleToTokenize pointerToPointer("int***** p;"); givenACodeSampleToTokenize pointerToPointer("int***** p;");
bool result = si.isVariableDeclaration(pointerToPointer.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(pointerToPointer.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("p", vartok->str()); ASSERT_EQUALS("p", vartok->str());
ASSERT_EQUALS("int", typetok->str()); ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
} }
void test_isVariableDeclarationIdentifiesArray() void test_isVariableDeclarationIdentifiesArray()
{ {
reset(); reset();
givenACodeSampleToTokenize array("::std::string v[3];"); givenACodeSampleToTokenize array("::std::string v[3];");
bool result = si.isVariableDeclaration(array.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(array.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("v", vartok->str()); ASSERT_EQUALS("v", vartok->str());
ASSERT_EQUALS("string", typetok->str()); ASSERT_EQUALS("string", typetok->str());
ASSERT(true == isArray);
} }
void test_isVariableDeclarationIdentifiesOfArrayPointers() void test_isVariableDeclarationIdentifiesOfArrayPointers()
{ {
reset(); reset();
givenACodeSampleToTokenize array("A *a[5];"); givenACodeSampleToTokenize array("A *a[5];");
bool result = si.isVariableDeclaration(array.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(array.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("a", vartok->str()); ASSERT_EQUALS("a", vartok->str());
ASSERT_EQUALS("A", typetok->str()); ASSERT_EQUALS("A", typetok->str());
ASSERT(true == isArray);
} }
void isVariableDeclarationIdentifiesTemplatedPointerVariable() void isVariableDeclarationIdentifiesTemplatedPointerVariable()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::set<char>* chars;"); givenACodeSampleToTokenize var("std::set<char>* chars;");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("chars", vartok->str()); ASSERT_EQUALS("chars", vartok->str());
ASSERT_EQUALS("set", typetok->str()); ASSERT_EQUALS("set", typetok->str());
ASSERT(false == isArray);
} }
void isVariableDeclarationIdentifiesTemplatedPointerToPointerVariable() void isVariableDeclarationIdentifiesTemplatedPointerToPointerVariable()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::deque<int>*** ints;"); givenACodeSampleToTokenize var("std::deque<int>*** ints;");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("ints", vartok->str()); ASSERT_EQUALS("ints", vartok->str());
ASSERT_EQUALS("deque", typetok->str()); ASSERT_EQUALS("deque", typetok->str());
ASSERT(false == isArray);
} }
void isVariableDeclarationIdentifiesTemplatedArrayVariable() void isVariableDeclarationIdentifiesTemplatedArrayVariable()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::deque<int> ints[3];"); givenACodeSampleToTokenize var("std::deque<int> ints[3];");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("ints", vartok->str()); ASSERT_EQUALS("ints", vartok->str());
ASSERT_EQUALS("deque", typetok->str()); ASSERT_EQUALS("deque", typetok->str());
ASSERT(true == isArray);
} }
void isVariableDeclarationIdentifiesTemplatedVariable() void isVariableDeclarationIdentifiesTemplatedVariable()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::vector<int> ints;"); givenACodeSampleToTokenize var("std::vector<int> ints;");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("ints", vartok->str()); ASSERT_EQUALS("ints", vartok->str());
ASSERT_EQUALS("vector", typetok->str()); ASSERT_EQUALS("vector", typetok->str());
ASSERT(false == isArray);
} }
void isVariableDeclarationIdentifiesTemplatedVariableIterator() void isVariableDeclarationIdentifiesTemplatedVariableIterator()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::list<int>::const_iterator floats;"); givenACodeSampleToTokenize var("std::list<int>::const_iterator floats;");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("floats", vartok->str()); ASSERT_EQUALS("floats", vartok->str());
ASSERT_EQUALS("const_iterator", typetok->str()); ASSERT_EQUALS("const_iterator", typetok->str());
ASSERT(false == isArray);
} }
void isVariableDeclarationIdentifiesNestedTemplateVariable() void isVariableDeclarationIdentifiesNestedTemplateVariable()
{ {
reset(); reset();
givenACodeSampleToTokenize var("std::deque<std::set<int> > intsets;"); givenACodeSampleToTokenize var("std::deque<std::set<int> > intsets;");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(true, result); ASSERT_EQUALS(true, result);
ASSERT_EQUALS("intsets", vartok->str()); ASSERT_EQUALS("intsets", vartok->str());
ASSERT_EQUALS("deque", typetok->str()); ASSERT_EQUALS("deque", typetok->str());
ASSERT(false == isArray);
} }
void isVariableDeclarationDoesNotIdentifyTemplateClass() void isVariableDeclarationDoesNotIdentifyTemplateClass()
{ {
reset(); reset();
givenACodeSampleToTokenize var("template <class T> class SomeClass{};"); givenACodeSampleToTokenize var("template <class T> class SomeClass{};");
bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok); bool result = si.isVariableDeclaration(var.tokens(), vartok, typetok, isArray);
ASSERT_EQUALS(false, result); ASSERT_EQUALS(false, result);
ASSERT(false == isArray);
} }
void canFindMatchingBracketsNeedsOpen() void canFindMatchingBracketsNeedsOpen()
@ -522,6 +550,60 @@ private:
ASSERT(function && function->hasBody && !function->isInline && function->retFuncPtr); ASSERT(function && function->hasBody && !function->isInline && function->retFuncPtr);
} }
} }
void hasGlobalVariables1()
{
GET_SYMBOL_DB("int i;\n")
ASSERT(db && db->scopeList.size() == 1);
if (db && db->scopeList.size() == 1)
{
std::list<Scope *>::const_iterator it = db->scopeList.begin();
ASSERT((*it)->varlist.size() == 1);
if ((*it)->varlist.size() == 1)
{
std::list<Variable>::const_iterator var = (*it)->varlist.begin();
ASSERT(var->name() == "i");
ASSERT(var->typeStartToken()->str() == "int");
}
}
}
void hasGlobalVariables2()
{
GET_SYMBOL_DB("int array[2][2];\n")
ASSERT(db && db->scopeList.size() == 1);
if (db && db->scopeList.size() == 1)
{
std::list<Scope *>::const_iterator it = db->scopeList.begin();
ASSERT((*it)->varlist.size() == 1);
if ((*it)->varlist.size() == 1)
{
std::list<Variable>::const_iterator var = (*it)->varlist.begin();
ASSERT(var->name() == "array");
ASSERT(var->typeStartToken()->str() == "int");
}
}
}
void hasGlobalVariables3()
{
GET_SYMBOL_DB("int array[2][2] = { { 0, 0 }, { 0, 0 } };\n")
ASSERT(db && db->scopeList.size() == 1);
if (db && db->scopeList.size() == 1)
{
std::list<Scope *>::const_iterator it = db->scopeList.begin();
ASSERT((*it)->varlist.size() == 1);
if ((*it)->varlist.size() == 1)
{
std::list<Variable>::const_iterator var = (*it)->varlist.begin();
ASSERT(var->name() == "array");
ASSERT(var->typeStartToken()->str() == "int");
}
}
}
}; };
REGISTER_TEST(TestSymbolDatabase) REGISTER_TEST(TestSymbolDatabase)

View File

@ -79,6 +79,7 @@ private:
TEST_CASE(ifAddBraces11); TEST_CASE(ifAddBraces11);
TEST_CASE(ifAddBraces12); TEST_CASE(ifAddBraces12);
TEST_CASE(ifAddBraces13); TEST_CASE(ifAddBraces13);
TEST_CASE(ifAddBraces14); // #2610 - segfault: if()<{}
TEST_CASE(whileAddBraces); TEST_CASE(whileAddBraces);
TEST_CASE(doWhileAddBraces); TEST_CASE(doWhileAddBraces);
@ -128,6 +129,7 @@ private:
TEST_CASE(simplifyKnownVariables39); TEST_CASE(simplifyKnownVariables39);
TEST_CASE(simplifyKnownVariables40); TEST_CASE(simplifyKnownVariables40);
TEST_CASE(simplifyKnownVariables41); // p=&x; if (p) .. TEST_CASE(simplifyKnownVariables41); // p=&x; if (p) ..
TEST_CASE(simplifyKnownVariables42); // ticket #2031 - known string value after strcpy
TEST_CASE(simplifyKnownVariablesBailOutAssign); TEST_CASE(simplifyKnownVariablesBailOutAssign);
TEST_CASE(simplifyKnownVariablesBailOutFor1); TEST_CASE(simplifyKnownVariablesBailOutFor1);
TEST_CASE(simplifyKnownVariablesBailOutFor2); TEST_CASE(simplifyKnownVariablesBailOutFor2);
@ -850,6 +852,13 @@ private:
ASSERT_EQUALS(expected2, tokenizeAndStringify(code2, true)); ASSERT_EQUALS(expected2, tokenizeAndStringify(code2, true));
} }
void ifAddBraces14()
{
// ticket #2610 (segfault)
tokenizeAndStringify("if()<{}", false);
}
void whileAddBraces() void whileAddBraces()
{ {
const char code[] = ";while(a);"; const char code[] = ";while(a);";
@ -2032,6 +2041,21 @@ private:
ASSERT_EQUALS("void f ( ) {\nint x ; x = 0 ;\nconst int * p ; p = & x ;\nif ( & x ) { return 0 ; }\n}", tokenizeAndStringify(code, true)); ASSERT_EQUALS("void f ( ) {\nint x ; x = 0 ;\nconst int * p ; p = & x ;\nif ( & x ) { return 0 ; }\n}", tokenizeAndStringify(code, true));
} }
void simplifyKnownVariables42()
{
const char code[] = "void f() {\n"
" char str1[10], str2[10];\n"
" strcpy(str1, \"abc\");\n"
" strcpy(str2, str1);\n"
"}";
const char expected[] = "void f ( ) {\n"
"char str1 [ 10 ] ; char str2 [ 10 ] ;\n"
"strcpy ( str1 , \"abc\" ) ;\n"
"strcpy ( str2 , \"abc\" ) ;\n"
"}";
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
}
void simplifyKnownVariablesBailOutAssign() void simplifyKnownVariablesBailOutAssign()
{ {
const char code[] = "int foo() {\n" const char code[] = "int foo() {\n"

View File

@ -46,7 +46,8 @@ private:
TEST_CASE(uninitvar_references); // references TEST_CASE(uninitvar_references); // references
TEST_CASE(uninitvar_strncpy); // strncpy doesn't always 0-terminate TEST_CASE(uninitvar_strncpy); // strncpy doesn't always 0-terminate
TEST_CASE(uninitvar_func); // analyse functions TEST_CASE(uninitvar_func); // analyse functions
TEST_CASE(uninitvar_func2); // usage of 'void a(int *p) { *p = 0; }' TEST_CASE(func_uninit_var); // analyse function calls for: 'int a(int x) { return x+x; }'
TEST_CASE(func_uninit_pointer); // analyse function calls for: 'void a(int *p) { *p = 0; }'
TEST_CASE(uninitvar_typeof); // typeof TEST_CASE(uninitvar_typeof); // typeof
} }
@ -1436,8 +1437,29 @@ private:
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
} }
// valid and invalid use of 'int a(int x) { return x + x; }'
void func_uninit_var()
{
const std::string funca("int a(int x) { return x + x; }\n");
checkUninitVar((funca +
"void b() {\n"
" int x;\n"
" a(x);\n"
"}").c_str());
ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: x\n", errout.str());
checkUninitVar((funca +
"void b() {\n"
" int *p;\n"
" a(*p);\n"
"}").c_str());
ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: p\n", errout.str());
}
// valid and invalid use of 'void a(int *p) { *p = 0; }' // valid and invalid use of 'void a(int *p) { *p = 0; }'
void uninitvar_func2() void func_uninit_pointer()
{ {
const std::string funca("void a(int *p) { *p = 0; }\n"); const std::string funca("void a(int *p) { *p = 0; }\n");
@ -1455,7 +1477,7 @@ private:
" int *p;\n" " int *p;\n"
" a(p);\n" " a(p);\n"
"}\n").c_str()); "}\n").c_str());
TODO_ASSERT_EQUALS("error", "", errout.str()); ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: p\n", errout.str());
} }
void uninitvar_typeof() void uninitvar_typeof()