forked from qt-creator/qt-creator
Doc: Add some rules about use of Utils::FilePath and Utils::QtcProcess
Change-Id: I6c21fe0bc795a24ce6b61d739f221f28cefc6df2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -574,7 +574,7 @@
|
|||||||
|
|
||||||
void SomeThing::bar()
|
void SomeThing::bar()
|
||||||
{
|
{
|
||||||
FileName f; // or Utils::FileName f
|
FilePath f; // or Utils::FilePath f
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
...
|
...
|
||||||
@@ -637,12 +637,39 @@
|
|||||||
instead of backslashes (\\) even on Windows. To pass a file name from the user
|
instead of backslashes (\\) even on Windows. To pass a file name from the user
|
||||||
to the API, convert it with QDir::fromNativeSeparators first. To present a file
|
to the API, convert it with QDir::fromNativeSeparators first. To present a file
|
||||||
name to the user, convert it back to native format with
|
name to the user, convert it back to native format with
|
||||||
QDir::toNativeSeparators. Consider using Utils::FileName::fromUserInput(QString)
|
QDir::toNativeSeparators. Consider using Utils::FilePath::fromUserInput(QString)
|
||||||
and Utils::FileName::toUserOutput() for these tasks.
|
and Utils::FilePath::toUserOutput() for these tasks.
|
||||||
|
|
||||||
Use Utils::FileName when comparing file names, because that takes case sensitivity into account.
|
Use Utils::FilePath when comparing file names, because that takes case sensitivity into account.
|
||||||
Also make sure that you compare clean paths (QDir::cleanPath()).
|
Also make sure that you compare clean paths (QDir::cleanPath()).
|
||||||
|
|
||||||
|
|
||||||
|
\section2 Classes to Use and Classes Not to Use
|
||||||
|
|
||||||
|
A significant portion of Qt Creator code handles data on devices that are not
|
||||||
|
the same as the development machine. These may differ in aspects like path
|
||||||
|
separator, line endings, process launching details and so on.
|
||||||
|
|
||||||
|
However, some basic Qt classes assume that a Qt application is only
|
||||||
|
concerned with machines that are similar to the development machine.
|
||||||
|
|
||||||
|
These classes are therefore not appropriate to use in the part of Qt Creator that
|
||||||
|
is concerned with non-local code. Instead, Qt Creator's Utils library provides
|
||||||
|
substitutes, leading to the following rules:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li Use Utils::FilePath for any QString that semantically is a file or directory,
|
||||||
|
see also \l{Passing File Names}.
|
||||||
|
\li Prefer using Utils::FilePath over any use of QDir and QFileInfo.
|
||||||
|
\li Prefer using Utils::QtcProcess over QProcess.
|
||||||
|
\li If Utils::FilePath or Utils::QtcProcess functionality is not sufficient
|
||||||
|
for your purpose, prefer enhancing them over falling back to QString
|
||||||
|
or QProcess.
|
||||||
|
\li Avoid platform #ifdefs unless they are absolutely needed for locally
|
||||||
|
executed code, and even then prefer Utils::HostInfo over #ifdefs.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
|
||||||
\section2 Plugin Extension Points
|
\section2 Plugin Extension Points
|
||||||
|
|
||||||
A plugin extension point is an interface that is provided by one plugin
|
A plugin extension point is an interface that is provided by one plugin
|
||||||
|
Reference in New Issue
Block a user