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

View File

@ -27,7 +27,8 @@
ApplicationList::ApplicationList(QObject *parent) :
QObject(parent)
QObject(parent),
mDefaultApplicationIndex(-1)
{
//ctor
}
@ -42,6 +43,7 @@ void ApplicationList::LoadSettings(QSettings *programSettings)
QStringList names = programSettings->value(SETTINGS_APPLICATION_NAMES, 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())
{
@ -50,28 +52,37 @@ void ApplicationList::LoadSettings(QSettings *programSettings)
// use as default for gnome environments
if (QFileInfo("/usr/bin/gedit").isExecutable())
{
AddApplicationType("gedit", "/usr/bin/gedit +(line) (file)");
AddApplication("gedit", "/usr/bin/gedit +(line) (file)");
defapp = 0;
break;
}
// use as default for kde environments
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;
}
// use as default for windows environments
if (FindDefaultWindowsEditor())
{
defapp = 0;
break;
}
}
while (0);
}
if (names.size() == paths.size())
if (names.size() > 0 && (names.size() == paths.size()))
{
for (int i = 0; i < names.size(); i++)
{
AddApplicationType(names[i], paths[i]);
}
AddApplication(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_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,
const QString &name,
const QString &path)
void ApplicationList::SetApplication(const int index,
const QString &name,
const QString &path)
{
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())
{
@ -146,15 +158,15 @@ void ApplicationList::RemoveApplication(const int 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)
{
@ -164,13 +176,15 @@ void ApplicationList::Copy(ApplicationList *list)
Clear();
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()
{
mApplications.clear();
mDefaultApplicationIndex = -1;
}
bool ApplicationList::FindDefaultWindowsEditor()
@ -179,7 +193,7 @@ bool ApplicationList::FindDefaultWindowsEditor()
const QString notepadppPath = appPath + "\\Notepad++\\notepad++.exe";
if (QFileInfo(notepadppPath).isExecutable())
{
AddApplicationType("Notepad++", "\"" + notepadppPath + "\" -n(line) (file)");
AddApplication("Notepad++", "\"" + notepadppPath + "\" -n(line) (file)");
return true;
}
@ -187,7 +201,7 @@ bool ApplicationList::FindDefaultWindowsEditor()
const QString notepadPath = windowsPath + "\\system32\\notepad.exe";
if (QFileInfo(notepadPath).isExecutable())
{
AddApplicationType("Notepad", notepadPath + " (file)");
AddApplication("Notepad", notepadPath + " (file)");
return true;
}
return false;

View File

@ -56,7 +56,7 @@ public:
typedef struct
{
/**
* @brief Applicaton's name
* @brief Application's name
*
*/
QString Name;
@ -106,6 +106,15 @@ public:
*/
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
*
@ -113,9 +122,8 @@ public:
* @param name New name for the application
* @param path New path for the application
*/
void SetApplicationType(const int index,
const QString &name,
const QString &path);
void SetApplication(const int index, const QString &name,
const QString &path);
/**
* @brief Add a new application
@ -123,7 +131,7 @@ public:
* @param name Name of 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
@ -133,21 +141,18 @@ public:
void RemoveApplication(const int index);
/**
* @brief Move certain application as first.
* 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.
*
* @brief Set application as default application.
* @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
* list given as a parameter.
* @param list Copying source
*/
void Copy(ApplicationList *list);
void Copy(const ApplicationList *list);
protected:
/**
@ -162,12 +167,19 @@ protected:
*/
bool FindDefaultWindowsEditor();
private:
/**
* @brief List of applications
*
*/
QList<ApplicationType> mApplications;
private:
/**
* @brief Index of the default application.
*
*/
int mDefaultApplicationIndex;
};
/// @}
#endif // APPLICATIONLIST_H

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -339,7 +339,7 @@ kate -l(ligne) (fichier)</translation>
%1
</source>
<translation type="unfinished">Erreur lors du chargement de la langue :
<translation type="obsolete">Erreur lors du chargement de la langue :
%1
@ -563,6 +563,16 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<source>Serbian</source>
<translation type="unfinished"></translation>
</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>
<name>Project</name>
@ -593,18 +603,34 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<source>Paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Browse...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include paths:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Defines:</source>
<translation type="unfinished"></translation>
</message>
<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>
<name>ProjectFileDialog</name>
@ -625,7 +651,7 @@ Do you want to stop the checking and exit Cppcheck?.</source>
<name>QObject</name>
<message>
<source>Incorrect language specified!</source>
<translation type="unfinished">Langue incorrecte !</translation>
<translation type="obsolete">Langue incorrecte !</translation>
</message>
<message>
<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>
<translation type="unfinished">Erreur lors du chargement de la langue %1 depuis le fichier %2</translation>
</message>
<message>
<source>Unknown language specified!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultsTree</name>
@ -798,19 +828,19 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
</message>
<message>
<source>Add application</source>
<translation type="unfinished">Ajouter une application</translation>
<translation type="obsolete">Ajouter une application</translation>
</message>
<message>
<source>Delete application</source>
<translation type="unfinished">Supprimer l&apos;application</translation>
<translation type="obsolete">Supprimer l&apos;application</translation>
</message>
<message>
<source>Modify application</source>
<translation type="unfinished">Modifier l&apos;application</translation>
<translation type="obsolete">Modifier l&apos;application</translation>
</message>
<message>
<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>
<source>Reports</source>
@ -856,6 +886,26 @@ Pour configurer les erreurs affichées, ouvrez le menu d&apos;affichage.</transl
<source>Language</source>
<translation type="unfinished"></translation>
</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>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<source>[Default]</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>StatsDialog</name>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -96,12 +96,54 @@ void FileList::AddPathList(const QStringList &paths)
QStringList FileList::GetFileList() const
{
QStringList names;
QFileInfo item;
foreach(item, mFileList)
if (mIgnoredPaths.empty())
{
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());
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.
* The filenames are matched against the filter and only those files whose
* 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
{
@ -60,6 +64,12 @@ public:
*/
QStringList GetFileList() const;
/**
* @brief Add list of paths to ignore list.
* @param paths Paths to ignore.
*/
void AddIngoreList(const QStringList &paths);
protected:
/**
@ -74,8 +84,25 @@ protected:
*/
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:
QFileInfoList mFileList;
QStringList mIgnoredPaths;
};
#endif // FILELIST_H

View File

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

View File

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

View File

@ -21,6 +21,7 @@
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QFile>
#include <QDir>
#include "projectfile.h"
static const char ProjectElementName[] = "project";
@ -37,6 +38,9 @@ static const char PathName[] = "dir";
static const char PathNameAttrib[] = "name";
static const char RootPathName[] = "root";
static const char RootPathNameAttrib[] = "name";
static const char IgnoreElementName[] = "ignore";
static const char IgnorePathName[] = "path";
static const char IgnorePathNameAttrib[] = "name";
ProjectFile::ProjectFile(QObject *parent) :
QObject(parent)
@ -87,6 +91,10 @@ bool ProjectFile::Read(const QString &filename)
if (insideProject && xmlReader.name() == DefinesElementName)
ReadDefines(xmlReader);
// Find ignore list from inside project element
if (insideProject && xmlReader.name() == IgnoreElementName)
ReadIgnores(xmlReader);
break;
case QXmlStreamReader::EndElement:
@ -117,7 +125,12 @@ bool ProjectFile::Read(const QString &filename)
QStringList ProjectFile::GetIncludeDirs() const
{
return mIncludeDirs;
QStringList dirs;
foreach(QString path, mIncludeDirs)
{
dirs << QDir::fromNativeSeparators(path);
}
return dirs;
}
QStringList ProjectFile::GetDefines() const
@ -127,7 +140,22 @@ QStringList ProjectFile::GetDefines() 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)
@ -263,21 +291,67 @@ void ProjectFile::ReadCheckPaths(QXmlStreamReader &reader)
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;
}
void ProjectFile::SetDefines(QStringList defines)
void ProjectFile::SetDefines(const QStringList &defines)
{
mDefines = defines;
}
void ProjectFile::SetCheckPaths(QStringList paths)
void ProjectFile::SetCheckPaths(const QStringList &paths)
{
mPaths = paths;
}
void ProjectFile::SetIgnoredPaths(const QStringList &paths)
{
mIgnoredPaths = paths;
}
bool ProjectFile::Write(const QString &filename)
{
if (!filename.isEmpty())
@ -303,8 +377,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mIncludeDirs.isEmpty())
{
xmlWriter.writeStartElement(IncludDirElementName);
QString incdir;
foreach(incdir, mIncludeDirs)
foreach(QString incdir, mIncludeDirs)
{
xmlWriter.writeStartElement(DirElementName);
xmlWriter.writeAttribute(DirNameAttrib, incdir);
@ -316,8 +389,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mDefines.isEmpty())
{
xmlWriter.writeStartElement(DefinesElementName);
QString define;
foreach(define, mDefines)
foreach(QString define, mDefines)
{
xmlWriter.writeStartElement(DefineName);
xmlWriter.writeAttribute(DefineNameAttrib, define);
@ -329,8 +401,7 @@ bool ProjectFile::Write(const QString &filename)
if (!mPaths.isEmpty())
{
xmlWriter.writeStartElement(PathsElementName);
QString path;
foreach(path, mPaths)
foreach(QString path, mPaths)
{
xmlWriter.writeStartElement(PathName);
xmlWriter.writeAttribute(PathNameAttrib, path);
@ -339,6 +410,18 @@ bool ProjectFile::Write(const QString &filename)
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();
file.close();
return true;

View File

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

View File

@ -27,6 +27,9 @@ program. The format is:
<define name="_MSC_VER=1400" />
<define name="_WIN32" />
</defines>
<ignore>
<path name="gui/temp/" />
</ignore>
</project>
where:
@ -42,5 +45,7 @@ where:
recommended that relative paths are used for paths inside the project root
folder for better portability.
- 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.

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>159</height>
<width>467</width>
<height>329</height>
</rect>
</property>
<property name="windowTitle">
@ -15,99 +15,247 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<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_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>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>2</number>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Project</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<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>
<widget class="QDialogButtonBox" name="mButtons">
@ -122,13 +270,18 @@
</layout>
</widget>
<tabstops>
<tabstop>mEditProjectRoot</tabstop>
<tabstop>mEditPaths</tabstop>
<tabstop>mBtnBrowsePaths</tabstop>
<tabstop>mEditIncludePaths</tabstop>
<tabstop>mBtnBrowseIncludes</tabstop>
<tabstop>mEditDefines</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>
<resources/>
<connections>
@ -139,8 +292,8 @@
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>257</x>
<y>148</y>
<x>266</x>
<y>319</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
@ -155,8 +308,8 @@
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>325</x>
<y>148</y>
<x>334</x>
<y>319</y>
</hint>
<hint type="destinationlabel">
<x>286</x>

View File

@ -37,31 +37,68 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
setWindowTitle(title);
connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept()));
connect(mUI.mBtnBrowseIncludes, SIGNAL(clicked()), this, SLOT(BrowseIncludes()));
connect(mUI.mBtnBrowsePaths, SIGNAL(clicked()), this, SLOT(BrowsePaths()));
connect(mUI.mBtnAddInclude, SIGNAL(clicked()), this, SLOT(AddIncludeDir()));
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 root = mUI.mEditProjectRoot->text();
root = root.trimmed();
root = QDir::fromNativeSeparators(root);
return root;
}
QStringList ProjectFileDialog::GetIncludePaths() const
{
QString include = mUI.mEditIncludePaths->text();
QStringList includes;
if (!include.isEmpty())
const int count = mUI.mListIncludeDirs->count();
QStringList includePaths;
for (int i = 0; i < count; i++)
{
include = include.trimmed();
include = QDir::fromNativeSeparators(include);
if (include.indexOf(';') != -1)
includes = include.split(";");
else
includes.append(include);
QListWidgetItem *item = mUI.mListIncludeDirs->item(i);
includePaths << QDir::fromNativeSeparators(item->text());
}
return includes;
return includePaths;
}
QStringList ProjectFileDialog::GetDefines() const
@ -81,39 +118,40 @@ QStringList ProjectFileDialog::GetDefines() const
QStringList ProjectFileDialog::GetPaths() const
{
QString path = mUI.mEditPaths->text();
const int count = mUI.mListPaths->count();
QStringList paths;
if (!path.isEmpty())
for (int i = 0; i < count; i++)
{
path = path.trimmed();
path = QDir::fromNativeSeparators(path);
if (path.indexOf(';') != -1)
paths = path.split(";");
else
paths.append(path);
QListWidgetItem *item = mUI.mListPaths->item(i);
paths << QDir::fromNativeSeparators(item->text());
}
return paths;
}
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;
}
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)
{
QString includestr;
QString dir;
foreach(dir, includes)
foreach(QString dir, includes)
{
includestr += dir;
includestr += ";";
AddIncludeDir(dir);
}
// 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)
@ -133,21 +171,21 @@ void ProjectFileDialog::SetDefines(const QStringList &defines)
void ProjectFileDialog::SetPaths(const QStringList &paths)
{
QString pathstr;
QString path;
foreach(path, paths)
foreach(QString path, paths)
{
pathstr += path;
pathstr += ";";
AddPath(path);
}
// 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,
tr("Select include directory"),
@ -155,11 +193,11 @@ void ProjectFileDialog::BrowseIncludes()
if (!selectedDir.isEmpty())
{
AppendDirname(mUI.mEditIncludePaths, selectedDir);
AddIncludeDir(selectedDir);
}
}
void ProjectFileDialog::BrowsePaths()
void ProjectFileDialog::AddPath()
{
QString selectedDir = QFileDialog::getExistingDirectory(this,
tr("Select directory to check"),
@ -167,16 +205,59 @@ void ProjectFileDialog::BrowsePaths()
if (!selectedDir.isEmpty())
{
AppendDirname(mUI.mEditPaths, selectedDir);
AddPath(selectedDir);
}
}
void ProjectFileDialog::AppendDirname(QLineEdit *edit, const QString &dir)
void ProjectFileDialog::RemoveIncludeDir()
{
QString wholeText = edit->text();
wholeText += ";";
wholeText += dir;
if (!wholeText.endsWith(QDir::separator()))
wholeText += QDir::separator();
edit->setText(wholeText);
const int row = mUI.mListIncludeDirs->currentRow();
QListWidgetItem *item = mUI.mListIncludeDirs->takeItem(row);
delete item;
}
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;
/**
* @brief Return ignored paths from the dialog control.
* @return List of ignored paths.
*/
QStringList GetIgnorePaths() const;
/**
* @brief Set project root path to dialog control.
* @param root Project root path to set to dialog control.
@ -90,25 +96,78 @@ public:
*/
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:
/**
* @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.
* Allow user to choose new checked directory.
* @brief Add new path to check.
*/
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:
/**
* @brief Append new path to the edit control.
* @param edit Edit control to modify.
* @param dir Path to add.
* @brief Add new indlude directory.
* @param dir Directory 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:
Ui::ProjectFile mUI;

View File

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

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>589</width>
<height>313</height>
<height>319</height>
</rect>
</property>
<property name="windowTitle">
@ -17,37 +17,13 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>2</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>General</string>
</attribute>
<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>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sizeConstraint">
@ -182,41 +158,125 @@
</item>
</layout>
</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">
<attribute name="title">
<string>Applications</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QListWidget" name="mListWidget"/>
</item>
<item>
<widget class="QPushButton" name="mButtonAdd">
<property name="text">
<string>Add application</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mButtonDelete">
<property name="text">
<string>Delete application</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mButtonModify">
<property name="text">
<string>Modify application</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mButtonDefault">
<property name="text">
<string>Set as default application</string>
</property>
</widget>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QListWidget" name="mListWidget"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="mBtnAddApplication">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnEditApplication">
<property name="text">
<string>Edit...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnRemoveApplication">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<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>
</layout>
</widget>
@ -284,18 +344,15 @@
</widget>
<tabstops>
<tabstop>tabWidget</tabstop>
<tabstop>mEditIncludePaths</tabstop>
<tabstop>mBtnAddIncludePath</tabstop>
<tabstop>mJobs</tabstop>
<tabstop>mForce</tabstop>
<tabstop>mShowFullPath</tabstop>
<tabstop>mShowNoErrorsMessage</tabstop>
<tabstop>mShowDebugWarnings</tabstop>
<tabstop>mListWidget</tabstop>
<tabstop>mButtonAdd</tabstop>
<tabstop>mButtonDelete</tabstop>
<tabstop>mButtonModify</tabstop>
<tabstop>mButtonDefault</tabstop>
<tabstop>mBtnAddApplication</tabstop>
<tabstop>mBtnEditApplication</tabstop>
<tabstop>mBtnDefaultApplication</tabstop>
<tabstop>mSaveAllErrors</tabstop>
<tabstop>mSaveFullPath</tabstop>
<tabstop>mButtons</tabstop>

View File

@ -46,7 +46,6 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
mUI.setupUi(this);
mTempApplications->Copy(list);
mUI.mEditIncludePaths->setText(programSettings->value(SETTINGS_GLOBAL_INCLUDE_PATHS).toString());
mUI.mJobs->setText(programSettings->value(SETTINGS_CHECK_THREADS, 1).toString());
mUI.mForce->setCheckState(BoolToCheckState(programSettings->value(SETTINGS_CHECK_FORCE, 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(rejected()), this, SLOT(reject()));
connect(mUI.mButtonAdd, SIGNAL(clicked()),
connect(mUI.mBtnAddApplication, SIGNAL(clicked()),
this, SLOT(AddApplication()));
connect(mUI.mButtonDelete, SIGNAL(clicked()),
this, SLOT(DeleteApplication()));
connect(mUI.mButtonModify, SIGNAL(clicked()),
this, SLOT(ModifyApplication()));
connect(mUI.mButtonDefault, SIGNAL(clicked()),
connect(mUI.mBtnRemoveApplication, SIGNAL(clicked()),
this, SLOT(RemoveApplication()));
connect(mUI.mBtnEditApplication, SIGNAL(clicked()),
this, SLOT(EditApplication()));
connect(mUI.mBtnDefaultApplication, SIGNAL(clicked()),
this, SLOT(DefaultApplication()));
connect(mUI.mListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
this, SLOT(ModifyApplication()));
this, SLOT(EditApplication()));
connect(mUI.mBtnAddIncludePath, SIGNAL(clicked()),
this, SLOT(AddIncludePath()));
connect(mUI.mBtnRemoveIncludePath, SIGNAL(clicked()),
this, SLOT(RemoveIncludePath()));
connect(mUI.mBtnEditIncludePath, SIGNAL(clicked()),
this, SLOT(EditIncludePath()));
mUI.mListWidget->setSortingEnabled(false);
PopulateListWidget();
PopulateApplicationList();
const int count = QThread::idealThreadCount();
if (count != -1)
@ -82,6 +85,7 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
LoadSettings();
InitTranslationsList();
InitIncludepathsList();
}
SettingsDialog::~SettingsDialog()
@ -89,6 +93,26 @@ SettingsDialog::~SettingsDialog()
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()
{
const QString current = mTranslator->GetCurrentLanguage();
@ -151,11 +175,20 @@ void SettingsDialog::SaveSettingValues()
SaveCheckboxValue(mUI.mShowNoErrorsMessage, SETTINGS_SHOW_NO_ERRORS);
SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS);
SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS);
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, mUI.mEditIncludePaths->text());
QListWidgetItem *currentLang = mUI.mListLanguages->currentItem();
const QString langcode = currentLang->data(LangCodeRole).toString();
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)
@ -169,26 +202,31 @@ void SettingsDialog::AddApplication()
if (dialog.exec() == QDialog::Accepted)
{
mTempApplications->AddApplicationType(dialog.GetName(), dialog.GetPath());
mTempApplications->AddApplication(dialog.GetName(), dialog.GetPath());
mUI.mListWidget->addItem(dialog.GetName());
}
}
void SettingsDialog::DeleteApplication()
void SettingsDialog::RemoveApplication()
{
QList<QListWidgetItem *> selected = mUI.mListWidget->selectedItems();
QListWidgetItem *item = 0;
foreach(item, selected)
foreach(QListWidgetItem *item, selected)
{
mTempApplications->RemoveApplication(mUI.mListWidget->row(item));
mUI.mListWidget->clear();
PopulateListWidget();
const int removeIndex = mUI.mListWidget->row(item);
const int currentDefault = mTempApplications->GetDefaultApplication();
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();
QListWidgetItem *item = 0;
@ -202,7 +240,7 @@ void SettingsDialog::ModifyApplication()
if (dialog.exec() == QDialog::Accepted)
{
mTempApplications->SetApplicationType(row, dialog.GetName(), dialog.GetPath());
mTempApplications->SetApplication(row, dialog.GetName(), dialog.GetPath());
item->setText(dialog.GetName());
}
}
@ -214,23 +252,36 @@ void SettingsDialog::DefaultApplication()
if (selected.size() > 0)
{
int index = mUI.mListWidget->row(selected[0]);
mTempApplications->MoveFirst(index);
mTempApplications->SetDefault(index);
mUI.mListWidget->clear();
PopulateListWidget();
PopulateApplicationList();
}
}
void SettingsDialog::PopulateListWidget()
void SettingsDialog::PopulateApplicationList()
{
const int defapp = mTempApplications->GetDefaultApplication();
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
if (mTempApplications->GetApplicationCount())
{
// Select default application, or if there is no default app then the
// first item.
if (defapp == -1)
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())
{
QString text = mUI.mEditIncludePaths->text();
if (!text.isEmpty())
text += ';';
text += selectedDir;
mUI.mEditIncludePaths->setText(text);
AddIncludePath(selectedDir);
}
}
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
*
*/
void DeleteApplication();
void RemoveApplication();
/**
* @brief Slot for modifying an application in the list
*
*/
void ModifyApplication();
void EditApplication();
/**
* @brief Slot for making the selected application as the default (first)
@ -118,19 +118,38 @@ protected slots:
*/
void AddIncludePath();
/**
* @brief Slot for removing an include path.
*
*/
void RemoveIncludePath();
/**
* @brief Slot for editing an include path.
*
*/
void EditIncludePath();
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
*
*/
void PopulateListWidget();
void PopulateApplicationList();
/**
* @brief Load saved values
* Loads dialog size and column widths.
*
*/
* @brief Load saved values
* Loads dialog size and column widths.
*
*/
void SaveSettings();
/**
@ -165,6 +184,11 @@ protected:
*/
bool CheckStateToBool(Qt::CheckState state) const;
/**
* @brief Populate the include paths-list.
*/
void InitIncludepathsList();
/**
* @brief Populate the translations list.
*/

View File

@ -695,6 +695,8 @@ void CheckClass::unusedPrivateFunctionError(const Token *tok, const std::string
void CheckClass::noMemset()
{
createSymbolDatabase();
// Locate all 'memset' tokens..
for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next())
{
@ -712,6 +714,13 @@ void CheckClass::noMemset()
type = tok->strAt(10);
else if (Token::Match(tok, "%type% ( %var% , %var% , sizeof ( %type% ) )"))
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
if (type.empty())
@ -719,7 +728,14 @@ void CheckClass::noMemset()
// Warn if type is a class or struct that contains any std::* variables
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() == "}")
break;
@ -739,7 +755,7 @@ void CheckClass::noMemset()
tstruct->str().find(":") != std::string::npos)
{
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% <"))
{
@ -767,21 +783,16 @@ void CheckClass::noMemset()
// found error => report
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");
}
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 + "'");
reportError(tok, Severity::error, "memsetClass", "Using '" + memfunc + "' on " + type + " 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 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 memsetClassError(const Token *tok, const std::string &memfunc);
void memsetStructError(const Token *tok, const std::string &memfunc, const std::string &classname);
void memsetError(const Token *tok, const std::string &memfunc, const std::string &classname, const std::string &type);
void operatorEqReturnError(const Token *tok);
void virtualDestructorError(const Token *tok, const std::string &Base, const std::string &Derived);
void thisSubtractionError(const Token *tok);
@ -134,8 +133,7 @@ private:
c.uninitVarError(0, "classname", "varname");
c.operatorEqVarError(0, "classname", "");
c.unusedPrivateFunctionError(0, "classname", "funcname");
c.memsetClassError(0, "memfunc");
c.memsetStructError(0, "memfunc", "classname");
c.memsetError(0, "memfunc", "classname", "class");
c.operatorEqReturnError(0);
//c.virtualDestructorError(0, "Base", "Derived");
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."));
_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("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)
{
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 + ").");
}
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.checkIncorrectStringCompare();
checkOther.checkIncrementBoolean();
checkOther.checkComparisonOfBoolWithInt();
}
/** @brief Clarify calculation for ".. a * b ? .." */
@ -188,6 +189,9 @@ public:
/** @brief %Check for using postfix increment on bool */
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..
void cstyleCastError(const Token *tok);
void dangerousUsageStrtolError(const Token *tok);
@ -214,6 +218,7 @@ public:
void sizeofForArrayParameterError(const Token *tok);
void incorrectStringCompareError(const Token *tok, const std::string& func, const std::string &string, const std::string &len);
void incrementBooleanError(const Token *tok);
void comparisonOfBoolWithIntError(const Token *tok, const std::string &varname);
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings)
{
@ -255,6 +260,7 @@ public:
c.clarifyCalculationError(0);
c.incorrectStringCompareError(0, "substr", "\"Hello World\"", "12");
c.incrementBooleanError(0);
c.comparisonOfBoolWithIntError(0, "varname");
}
std::string myName() const
@ -296,6 +302,7 @@ public:
"* exception caught by value instead of by reference\n"
"* Clarify calculation with parantheses\n"
"* using increment on boolean\n"
"* comparison of a boolean with a non-zero integer\n"
// optimisations
"* optimisation: detect post increment/decrement\n";

View File

@ -74,10 +74,10 @@ void CheckPostfixOperator::postfixOperator()
if (result && 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;
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
postfixOperatorError(tok);

View File

@ -603,7 +603,10 @@ private:
std::list<const Token *> var;
CheckNullPointer::parseFunctionCall(tok, var, 1);
for (std::list<const Token *>::const_iterator it = var.begin(); it != var.end(); ++it)
{
use_array(checks, *it);
use_dead_pointer(checks, *it);
}
// Using uninitialized pointer is bad if using null pointer is bad
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..
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
@ -547,6 +551,37 @@ std::string Preprocessor::removeComments(const std::string &str, const std::stri
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)
{
@ -927,7 +962,18 @@ std::list<std::string> Preprocessor::getcfgs(const std::string &filedata, const
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));
else
{
@ -1278,8 +1324,12 @@ void Preprocessor::simplifyCondition(const std::map<std::string, std::string> &v
if (Token::Match(tokenizer.tokens(), "( %var% )"))
{
if (variables.find(tokenizer.tokens()->strAt(1)) != variables.end())
condition = "1";
std::map<std::string,std::string>::const_iterator var = variables.find(tokenizer.tokens()->strAt(1));
if (var != variables.end())
{
const std::string &value = (*var).second;
condition = (value == "0") ? "0" : "1";
}
else if (match)
condition = "0";
return;

View File

@ -144,6 +144,13 @@ protected:
*/
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().
* @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;
// skip functions
if (scope->type != Scope::eFunction)
// find variables
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
scope->getVariableList();
// add arguments
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()
@ -1002,8 +1114,75 @@ unsigned int Function::initializedArgCount() const
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_) :
check(check_),
classDef(classDef_),
@ -1071,10 +1250,31 @@ Scope::hasDefaultConstructor() const
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..
void Scope::getVariableList()
{
AccessControl varaccess = type == eClass ? Private : Public;
AccessControl varaccess = defaultAccess();
const Token *start;
if (classStart)
@ -1163,8 +1363,16 @@ void Scope::getVariableList()
else if (tok->str() == "__property")
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..
else if (!tok->previous() || !Token::Match(tok->previous(), ";|{|}|public:|protected:|private:"))
else if (tok->previous() && !Token::Match(tok->previous(), ";|{|}|public:|protected:|private:"))
continue;
else if (Token::Match(tok, ";|{|}"))
continue;
@ -1210,7 +1418,9 @@ void Scope::getVariableList()
tok = tok->next();
}
if (isVariableDeclaration(tok, vartok, typetok))
bool isArray = false;
if (isVariableDeclaration(tok, vartok, typetok, isArray))
{
isClass = (!typetok->isStandardType() && vartok->previous()->str() != "*");
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 (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;
ErrorLogger::ErrorMessage::FileLocation loc;
@ -1242,7 +1452,7 @@ void Scope::getVariableList()
if (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;
}
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* localVarTok = NULL;
@ -1288,7 +1498,7 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const
{
localVarTok = skipPointers(closeTok->next());
if (Token::Match(localVarTok, ":: %type% %var% ;"))
if (Token::Match(localVarTok, ":: %type% %var% ;|="))
{
localTypeTok = localVarTok->next();
localVarTok = localVarTok->tokAt(2);
@ -1300,10 +1510,17 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, const
localVarTok = skipPointers(localTypeTok->next());
}
if (isSimpleVariable(localVarTok) || isArrayVariable(localVarTok))
if (isSimpleVariable(localVarTok))
{
vartok = localVarTok;
typetok = localTypeTok;
isArray = false;
}
else if (isArrayVariable(localVarTok))
{
vartok = localVarTok;
typetok = localTypeTok;
isArray = true;
}
return NULL != vartok;
@ -1311,7 +1528,7 @@ bool Scope::isVariableDeclaration(const Token* tok, const Token*& vartok, 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
@ -1325,7 +1542,7 @@ bool Scope::findClosingBracket(const Token* tok, const Token*& close) const
if (NULL != tok && tok->str() == "<")
{
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() == "<")
{

View File

@ -38,7 +38,7 @@ class SymbolDatabase;
/**
* @brief Access control enumerations.
*/
enum AccessControl { Public, Protected, Private };
enum AccessControl { Public, Protected, Private, Global, Namespace, Argument, Local };
/** @brief Information about a member variable. */
class Variable
@ -49,7 +49,8 @@ class Variable
fIsMutable = (1 << 0), /** @brief mutable variable */
fIsStatic = (1 << 1), /** @brief static 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:
Variable(const Token *name_, const Token *start_, std::size_t index_,
AccessControl access_, bool mutable_, bool static_, bool const_,
bool class_, const Scope *type_)
Variable(const Token *name_, const Token *start_, const Token *end_,
std::size_t index_, AccessControl access_, bool mutable_,
bool static_, bool const_, bool class_, const Scope *type_,
const Scope *scope_, bool array_)
: _name(name_),
_start(start_),
_end(end_),
_index(index_),
_access(access_),
_flags(0),
_type(type_)
_type(type_),
_scope(scope_)
{
setFlag(fIsMutable, mutable_);
setFlag(fIsStatic, static_);
setFlag(fIsConst, const_);
setFlag(fIsClass, class_);
setFlag(fIsArray, array_);
}
/**
@ -107,13 +112,28 @@ public:
return _start;
}
/**
* Get type end token.
* @return type end token
*/
const Token *typeEndToken() const
{
return _end;
}
/**
* Get name string.
* @return name string
*/
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
{
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;
}
/**
* 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.
* @return true if mutable, false if not
@ -197,6 +257,15 @@ public:
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.
* @return pointer to type if known, NULL if not known
@ -206,6 +275,15 @@ public:
return _type;
}
/**
* Get Scope pointer of enclosing scope.
* @return pointer to enclosing scope
*/
const Scope *scope() const
{
return _scope;
}
private:
/** @brief variable name token */
const Token *_name;
@ -213,6 +291,9 @@ private:
/** @brief variable type start token */
const Token *_start;
/** @brief variable type end token */
const Token *_end;
/** @brief order declared */
std::size_t _index;
@ -224,6 +305,9 @@ private:
/** @brief pointer to user defined type info (for known types) */
const Scope *_type;
/** @brief pointer to scope this variable is in */
const Scope *_scope;
};
class Function
@ -254,6 +338,7 @@ public:
unsigned int argCount() const;
unsigned int initializedArgCount() const;
void addArguments(const SymbolDatabase *symbolDatabase, const Scope *scope);
const Token *tokenDef; // function name token in class definition
const Token *argDef; // function argument start '(' in class definition
@ -272,6 +357,7 @@ public:
bool isOperator; // is operator
bool retFuncPtr; // returns function pointer
Type type; // constructor, destructor, ...
std::list<Variable> argumentList; // argument list
};
class Scope
@ -293,10 +379,11 @@ public:
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 };
Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_);
Scope(SymbolDatabase *check_, const Token *classDef_, Scope *nestedIn_, ScopeType type_, const Token *start_);
SymbolDatabase *check;
ScopeType type;
@ -313,13 +400,19 @@ public:
AccessControl access;
unsigned int numConstructors;
NeedInitialization needInitialization;
Scope * functionOf; // class/struct this function belongs to
Scope *functionOf; // class/struct this function belongs to
bool isClassOrStruct() const
{
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
* @param name name of nested scope
@ -332,9 +425,14 @@ public:
*/
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 */
@ -352,15 +450,18 @@ public:
bool hasDefaultConstructor() const;
AccessControl defaultAccess() const;
private:
/**
* @brief helper function for getVariableList()
* @param tok pointer to token to check
* @param vartok populated with pointer to the variable 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
*/
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 isArrayVariable(const Token* tok) const;
bool findClosingBracket(const Token* tok, const Token*& close) const;
@ -394,6 +495,11 @@ public:
return bool(classAndStructTypes.find(type) != classAndStructTypes.end());
}
const Variable *getVariableFromVarId(unsigned int varId) const
{
return _variableList[varId];
}
private:
// Needed by Borland C++:
@ -410,6 +516,9 @@ private:
const Tokenizer *_tokenizer;
const Settings *_settings;
ErrorLogger *_errorLogger;
/** variable symbol table */
std::vector<const Variable *> _variableList;
};
#endif

View File

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

View File

@ -650,6 +650,15 @@ public:
Token *deleteInvalidTypedef(Token *typeDef);
/**
* Get variable count.
* @return number of variables
*/
unsigned int varIdCount() const
{
return _varId;
}
private:
/** Disable copy constructor, no implementation */
Tokenizer(const Tokenizer &);
@ -684,6 +693,9 @@ private:
/** Symbol database that all checks etc can use */
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-file=&lt;file&gt;</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>--template '&lt;text&gt;'</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>
</listitem>
</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>
<term><option>--suppressions-list=&lt;file&gt;</option></term>
<listitem>
<para>Suppress warnings listed in the file. Filename and line are optional. The format of the single line in file is: [error id]:[filename]:[line].
You can use --template or --xml to see the error id.
The filename may contain the wildcard characters * or ?.</para>
<para>Suppress warnings listed in the file.
Each suppression is in the format of &lt;spec&gt; above.</para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -374,7 +374,8 @@ gui/test.cpp,16,error,mismatchAllocDealloc,Mismatching allocation and deallocati
<title>Suppressions</title>
<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]
[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
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>
<programlisting>memleak:file1.cpp

View File

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

View File

@ -2908,7 +2908,52 @@ private:
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"
"void f()\n"
@ -2924,23 +2969,24 @@ private:
"void f()\n"
"{\n"
" struct A a;\n"
" memset(&a, 0, sizeof(A));\n"
" memset(&a, 0, sizeof(struct A));\n"
"}\n");
ASSERT_EQUALS("", errout.str());
}
void memsetOnStruct()
{
checkNoMemset("class A\n"
checkNoMemset("struct A\n"
"{\n"
" void g( struct sockaddr_in6& a);\n"
"private:\n"
" std::string b; \n"
"};\n"
"void f()\n"
"{\n"
" struct sockaddr_in6 fail;\n"
" memset(&fail, 0, sizeof(struct sockaddr_in6));\n"
" struct A a;\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");
ASSERT_EQUALS("", errout.str());
@ -2966,18 +3012,68 @@ private:
" Fred fred;\n"
" memset(&fred, 0, sizeof(fred));\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()
{
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"
"{ std::vector<int> ints; }\n"
"\n"
"void f()\n"
"{\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());
@ -2987,7 +3083,7 @@ private:
"void f()\n"
"{\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());
@ -2997,7 +3093,7 @@ private:
"void f()\n"
"{\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());
}

View File

@ -77,6 +77,8 @@ private:
TEST_CASE(suppressionsOld); // TODO: Create and test real suppression file
TEST_CASE(suppressions)
TEST_CASE(suppressionsNoFile)
TEST_CASE(suppressionSingle)
TEST_CASE(suppressionSingleFile)
TEST_CASE(templates);
TEST_CASE(templatesGcc);
TEST_CASE(templatesVs);
@ -554,6 +556,26 @@ private:
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()
{
REDIRECT;

View File

@ -106,6 +106,7 @@ private:
TEST_CASE(incorrectStringCompare);
TEST_CASE(incrementBoolean);
TEST_CASE(comparisonOfBoolWithInt);
}
void check(const char code[], const char *filename = NULL)
@ -144,6 +145,7 @@ private:
checkOther.clarifyCalculation();
checkOther.checkIncorrectStringCompare();
checkOther.checkIncrementBoolean();
checkOther.checkComparisonOfBoolWithInt();
}
@ -1923,6 +1925,51 @@ private:
"}");
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)

View File

@ -92,6 +92,10 @@ private:
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)
TEST_CASE(includeguard1);
TEST_CASE(includeguard2);
@ -114,7 +118,6 @@ private:
TEST_CASE(if_cond4);
TEST_CASE(if_cond5);
TEST_CASE(if_cond6);
TEST_CASE(if_cond7);
TEST_CASE(if_cond8);
TEST_CASE(if_cond9);
TEST_CASE(if_cond10);
@ -195,6 +198,7 @@ private:
TEST_CASE(ifdef_ifdefined);
// define and then ifdef
TEST_CASE(define_if);
TEST_CASE(define_ifdef);
TEST_CASE(define_ifndef1);
TEST_CASE(define_ifndef2);
@ -206,6 +210,8 @@ private:
TEST_CASE(testPreprocessorRead2);
TEST_CASE(testPreprocessorRead3);
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());
}
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()
{
@ -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());
}
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()
{
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()));
}
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()
{
{
@ -2720,6 +2728,18 @@ private:
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)

View File

@ -85,6 +85,7 @@ private:
TEST_CASE(sizeof20); // #2024 - sizeof a)
TEST_CASE(sizeof21); // #2232 - sizeof...(Args)
TEST_CASE(sizeof22); // #2599
TEST_CASE(sizeof23); // #2604
TEST_CASE(sizeofsizeof);
TEST_CASE(casting);
@ -241,6 +242,7 @@ private:
TEST_CASE(simplifyTypedef79); // ticket #2348
TEST_CASE(simplifyTypedef80); // ticket #2587
TEST_CASE(simplifyTypedef81); // ticket #2603
TEST_CASE(simplifyTypedef82); // ticket #2403
TEST_CASE(simplifyTypedefFunction1);
TEST_CASE(simplifyTypedefFunction2); // ticket #1685
@ -326,7 +328,8 @@ private:
TEST_CASE(simplifyFunctionReturn);
TEST_CASE(removeUnnecessaryQualification);
TEST_CASE(removeUnnecessaryQualification1);
TEST_CASE(removeUnnecessaryQualification2);
TEST_CASE(simplifyIfNotNull);
}
@ -1432,6 +1435,15 @@ private:
tok(code);
}
void sizeof23()
{
// ticket #2604 segmentation fault
const char code[] = "sizeof <= A\n";
// don't segfault
tok(code);
}
void sizeofsizeof()
{
@ -4931,6 +4943,24 @@ private:
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()
{
{
@ -6521,7 +6551,7 @@ private:
ASSERT_EQUALS(expected, tok(code, false));
}
void removeUnnecessaryQualification()
void removeUnnecessaryQualification1()
{
const char code[] = "class Fred { 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());
}
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
{
const char code[] = "|| #if #define <=";

View File

@ -38,6 +38,7 @@ public:
,typetok(NULL)
,t(NULL)
,found(false)
,isArray(false)
{}
private:
@ -46,6 +47,7 @@ private:
const Token* typetok;
const Token* t;
bool found;
bool isArray;
void reset()
{
@ -53,6 +55,7 @@ private:
typetok = NULL;
t = NULL;
found = false;
isArray = false;
}
void run()
@ -93,213 +96,238 @@ private:
TEST_CASE(hasInlineClassFunctionReturningFunctionPointer);
TEST_CASE(hasMissingInlineClassFunctionReturningFunctionPointer);
TEST_CASE(hasClassFunctionReturningFunctionPointer);
TEST_CASE(hasGlobalVariables1);
TEST_CASE(hasGlobalVariables2);
TEST_CASE(hasGlobalVariables3);
}
void test_isVariableDeclarationCanHandleNull()
{
reset();
bool result = si.isVariableDeclaration(NULL, vartok, typetok);
bool result = si.isVariableDeclaration(NULL, vartok, typetok, isArray);
ASSERT_EQUALS(false, result);
ASSERT(NULL == vartok);
ASSERT(NULL == typetok);
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesSimpleDeclaration()
{
reset();
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("x", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesScopedDeclaration()
{
reset();
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("x", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesStdDeclaration()
{
reset();
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("x", vartok->str());
ASSERT_EQUALS("string", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesScopedStdDeclaration()
{
reset();
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("x", vartok->str());
ASSERT_EQUALS("string", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesManyScopes()
{
reset();
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("x", vartok->str());
ASSERT_EQUALS("EE", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesPointers()
{
reset();
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("p", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationDoesNotIdentifyConstness()
{
reset();
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(NULL == vartok);
ASSERT(NULL == typetok);
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesFirstOfManyVariables()
{
reset();
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("first", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesScopedPointerDeclaration()
{
reset();
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("p", vartok->str());
ASSERT_EQUALS("EE", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesDeclarationWithIndirection()
{
reset();
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("pp", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesDeclarationWithMultipleIndirection()
{
reset();
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("p", vartok->str());
ASSERT_EQUALS("int", typetok->str());
ASSERT(false == isArray);
}
void test_isVariableDeclarationIdentifiesArray()
{
reset();
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("v", vartok->str());
ASSERT_EQUALS("string", typetok->str());
ASSERT(true == isArray);
}
void test_isVariableDeclarationIdentifiesOfArrayPointers()
{
reset();
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("a", vartok->str());
ASSERT_EQUALS("A", typetok->str());
ASSERT(true == isArray);
}
void isVariableDeclarationIdentifiesTemplatedPointerVariable()
{
reset();
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("chars", vartok->str());
ASSERT_EQUALS("set", typetok->str());
ASSERT(false == isArray);
}
void isVariableDeclarationIdentifiesTemplatedPointerToPointerVariable()
{
reset();
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("ints", vartok->str());
ASSERT_EQUALS("deque", typetok->str());
ASSERT(false == isArray);
}
void isVariableDeclarationIdentifiesTemplatedArrayVariable()
{
reset();
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("ints", vartok->str());
ASSERT_EQUALS("deque", typetok->str());
ASSERT(true == isArray);
}
void isVariableDeclarationIdentifiesTemplatedVariable()
{
reset();
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("ints", vartok->str());
ASSERT_EQUALS("vector", typetok->str());
ASSERT(false == isArray);
}
void isVariableDeclarationIdentifiesTemplatedVariableIterator()
{
reset();
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("floats", vartok->str());
ASSERT_EQUALS("const_iterator", typetok->str());
ASSERT(false == isArray);
}
void isVariableDeclarationIdentifiesNestedTemplateVariable()
{
reset();
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("intsets", vartok->str());
ASSERT_EQUALS("deque", typetok->str());
ASSERT(false == isArray);
}
void isVariableDeclarationDoesNotIdentifyTemplateClass()
{
reset();
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(false == isArray);
}
void canFindMatchingBracketsNeedsOpen()
@ -522,6 +550,60 @@ private:
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)

View File

@ -79,6 +79,7 @@ private:
TEST_CASE(ifAddBraces11);
TEST_CASE(ifAddBraces12);
TEST_CASE(ifAddBraces13);
TEST_CASE(ifAddBraces14); // #2610 - segfault: if()<{}
TEST_CASE(whileAddBraces);
TEST_CASE(doWhileAddBraces);
@ -128,6 +129,7 @@ private:
TEST_CASE(simplifyKnownVariables39);
TEST_CASE(simplifyKnownVariables40);
TEST_CASE(simplifyKnownVariables41); // p=&x; if (p) ..
TEST_CASE(simplifyKnownVariables42); // ticket #2031 - known string value after strcpy
TEST_CASE(simplifyKnownVariablesBailOutAssign);
TEST_CASE(simplifyKnownVariablesBailOutFor1);
TEST_CASE(simplifyKnownVariablesBailOutFor2);
@ -850,6 +852,13 @@ private:
ASSERT_EQUALS(expected2, tokenizeAndStringify(code2, true));
}
void ifAddBraces14()
{
// ticket #2610 (segfault)
tokenizeAndStringify("if()<{}", false);
}
void whileAddBraces()
{
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));
}
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()
{
const char code[] = "int foo() {\n"

View File

@ -46,7 +46,8 @@ private:
TEST_CASE(uninitvar_references); // references
TEST_CASE(uninitvar_strncpy); // strncpy doesn't always 0-terminate
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
}
@ -1436,8 +1437,29 @@ private:
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; }'
void uninitvar_func2()
void func_uninit_pointer()
{
const std::string funca("void a(int *p) { *p = 0; }\n");
@ -1455,7 +1477,7 @@ private:
" int *p;\n"
" a(p);\n"
"}\n").c_str());
TODO_ASSERT_EQUALS("error", "", errout.str());
ASSERT_EQUALS("[test.cpp:4]: (error) Uninitialized variable: p\n", errout.str());
}
void uninitvar_typeof()