diff options
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r-- | src/libs/qmljs/qmljscheck.cpp | 80 |
1 files changed, 59 insertions, 21 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 8d5bcadad5..51be467387 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -12,6 +12,7 @@ #include <utils/algorithm.h> #include <utils/qtcassert.h> +#include <utils/qtcsettings.h> #include <QColor> #include <QDir> @@ -639,7 +640,46 @@ Q_GLOBAL_STATIC(UnsupportedRootObjectTypesByVisualDesigner, unsupportedRootObjec Q_GLOBAL_STATIC(UnsupportedRootObjectTypesByQmlUi, unsupportedRootObjectTypesByQmlUi) Q_GLOBAL_STATIC(UnsupportedTypesByQmlUi, unsupportedTypesByQmlUi) -Check::Check(Document::Ptr doc, const ContextPtr &context) +QList<StaticAnalysis::Type> Check::defaultDisabledMessages() +{ + static const QList<StaticAnalysis::Type> disabled = Utils::sorted(QList<StaticAnalysis::Type>{ + HintAnonymousFunctionSpacing, + HintDeclareVarsInOneLine, + HintDeclarationsShouldBeAtStartOfFunction, + HintBinaryOperatorSpacing, + HintOneStatementPerLine, + HintExtraParentheses, + + // QmlDesigner related + WarnImperativeCodeNotEditableInVisualDesigner, + WarnUnsupportedTypeInVisualDesigner, + WarnReferenceToParentItemNotSupportedByVisualDesigner, + WarnUndefinedValueForVisualDesigner, + WarnStatesOnlyInRootItemForVisualDesigner, + ErrUnsupportedRootTypeInVisualDesigner, + ErrInvalidIdeInVisualDesigner, + + }); + return disabled; +} + +QList<StaticAnalysis::Type> Check::defaultDisabledMessagesForNonQuickUi() +{ + static const QList<StaticAnalysis::Type> disabled = Utils::sorted(QList<StaticAnalysis::Type>{ + // QmlDesigner related + ErrUnsupportedRootTypeInQmlUi, + ErrUnsupportedTypeInQmlUi, + ErrFunctionsNotSupportedInQmlUi, + ErrBlocksNotSupportedInQmlUi, + ErrBehavioursNotSupportedInQmlUi, + ErrStatesOnlyInRootItemInQmlUi, + ErrReferenceToParentItemNotSupportedInQmlUi, + ErrDoNotMixTranslationFunctionsInQmlUi, + }); + return disabled; +} + +Check::Check(Document::Ptr doc, const ContextPtr &context, Utils::QtcSettings *qtcSettings) : _doc(doc) , _context(context) , _scopeChain(doc, _context) @@ -655,16 +695,25 @@ Check::Check(Document::Ptr doc, const ContextPtr &context) } _enabledMessages = Utils::toSet(Message::allMessageTypes()); - disableMessage(HintAnonymousFunctionSpacing); - disableMessage(HintDeclareVarsInOneLine); - disableMessage(HintDeclarationsShouldBeAtStartOfFunction); - disableMessage(HintBinaryOperatorSpacing); - disableMessage(HintOneStatementPerLine); - disableMessage(HintExtraParentheses); + if (qtcSettings && qtcSettings->value("J.QtQuick/QmlJSEditor.useCustomAnalyzer").toBool()) { + auto disabled = qtcSettings->value("J.QtQuick/QmlJSEditor.disabledMessages").toList(); + for (const QVariant &disabledNumber : disabled) + disableMessage(StaticAnalysis::Type(disabledNumber.toInt())); + + if (!isQtQuick2Ui()) { + auto disabled = qtcSettings->value("J.QtQuick/QmlJSEditor.disabledMessagesNonQuickUI").toList(); + for (const QVariant &disabledNumber : disabled) + disableMessage(StaticAnalysis::Type(disabledNumber.toInt())); + } + } else { + for (auto type : defaultDisabledMessages()) + disableMessage(type); - disableQmlDesignerChecks(); - if (!isQtQuick2Ui()) - disableQmlDesignerUiFileChecks(); + if (!isQtQuick2Ui()) { + for (auto type : defaultDisabledMessagesForNonQuickUi()) + disableMessage(type); + } + } } Check::~Check() @@ -702,17 +751,6 @@ void Check::enableQmlDesignerChecks() //## triggers too often ## check.enableMessage(StaticAnalysis::WarnUndefinedValueForVisualDesigner); } -void Check::disableQmlDesignerChecks() -{ - disableMessage(WarnImperativeCodeNotEditableInVisualDesigner); - disableMessage(WarnUnsupportedTypeInVisualDesigner); - disableMessage(WarnReferenceToParentItemNotSupportedByVisualDesigner); - disableMessage(WarnUndefinedValueForVisualDesigner); - disableMessage(WarnStatesOnlyInRootItemForVisualDesigner); - disableMessage(ErrUnsupportedRootTypeInVisualDesigner); - disableMessage(ErrInvalidIdeInVisualDesigner); -} - void Check::enableQmlDesignerUiFileChecks() { enableMessage(ErrUnsupportedRootTypeInQmlUi); |