aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp')
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp
index 06401eb287..3860f929a6 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzerutils.cpp
@@ -23,6 +23,7 @@
#include <utils/environment.h>
+#include <QCoreApplication>
#include <QFileInfo>
static bool isFileExecutable(const QString &executablePath)
@@ -63,7 +64,7 @@ QString clangExecutable(const QString &fileNameOrPath, bool *isValid)
executable = executableFromPath;
}
- *isValid = isFileExecutable(executable);
+ *isValid = isFileExecutable(executable) && isClangExecutableUsable(executable);
return executable;
}
@@ -74,5 +75,20 @@ QString createFullLocationString(const ClangStaticAnalyzer::Internal::Location &
return filePath + QLatin1Char(':') + lineNumber;
}
+bool isClangExecutableUsable(const QString &filePath, QString *errorMessage)
+{
+ const QFileInfo fi(filePath);
+ if (fi.isSymLink() && fi.symLinkTarget().contains(QLatin1String("icecc"))) {
+ if (errorMessage) {
+ *errorMessage = QCoreApplication::translate("ClangStaticAnalyzer",
+ "The chosen file \"%1\" seems to point to an icecc binary not suitable "
+ "for analyzing.\nPlease set a real clang executable.")
+ .arg(filePath);
+ }
+ return false;
+ }
+ return true;
+}
+
} // namespace Internal
} // namespace ClangStaticAnalyzer