ClangTools: Add "Analyze Current File" to Tools menu and context menu

Add the action to "Tools > C++" and the C++ editor context menu.

Task-number: QTCREATORBUG-23348
Change-Id: I650e4d10e07ba227c6f89ab660ce7fa81263172e
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2020-03-26 13:20:58 +01:00
parent 99cd623fa7
commit 27f6e838ee
6 changed files with 31 additions and 12 deletions

View File

@@ -8,6 +8,7 @@ add_qtc_plugin(ClangTools
CONDITION TARGET libclang AND TARGET yaml-cpp
DEPENDS ClangSupport libclang yaml-cpp
PLUGIN_DEPENDS Core Debugger CppTools ${TST_COMPONENT}
PLUGIN_RECOMMENDS CppEditor
INCLUDES ${CLANG_INCLUDE_DIRS}
SOURCES
clangfileinfo.h

View File

@@ -18,6 +18,10 @@ QtcPlugin {
Depends { name: "Qt.widgets" }
pluginRecommends: [
"CppEditor"
]
pluginTestDepends: [
"QbsProjectManager",
"QmakeProjectManager",

View File

@@ -9,6 +9,8 @@ isEmpty(EXTERNAL_YAML_CPP_FOUND): QTC_LIB_DEPENDS += yaml-cpp
QTC_PLUGIN_DEPENDS += \
debugger \
cpptools
QTC_PLUGIN_RECOMMENDS += \
cppeditor
QTC_TEST_DEPENDS += \
qbsprojectmanager \
qmakeprojectmanager

View File

@@ -48,6 +48,8 @@
#include <cpptools/cpptoolsconstants.h>
#include <cpptools/cppmodelmanager.h>
#include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectpanelfactory.h>
#include <projectexplorer/target.h>
@@ -95,8 +97,16 @@ bool ClangToolsPlugin::initialize(const QStringList &arguments, QString *errorSt
d = new ClangToolsPluginPrivate;
ActionManager::registerAction(d->clangTool.startAction(), Constants::RUN_ON_PROJECT);
ActionManager::registerAction(d->clangTool.startOnCurrentFileAction(),
Command *cmd = ActionManager::registerAction(d->clangTool.startOnCurrentFileAction(),
Constants::RUN_ON_CURRENT_FILE);
ActionContainer *mtoolscpp = ActionManager::actionContainer(CppTools::Constants::M_TOOLS_CPP);
if (mtoolscpp)
mtoolscpp->addAction(cmd);
Core::ActionContainer *mcontext = Core::ActionManager::actionContainer(
CppEditor::Constants::M_CONTEXT);
if (mcontext)
mcontext->addAction(cmd, CppEditor::Constants::G_CONTEXT_FIRST); // TODO
auto panelFactory = m_projectPanelFactoryInstance = new ProjectPanelFactory;
panelFactory->setPriority(100);

View File

@@ -29,6 +29,7 @@ namespace CppEditor {
namespace Constants {
const char M_CONTEXT[] = "CppEditor.ContextMenu";
const char G_CONTEXT_FIRST[] = "CppEditor.GFirst";
const char CPPEDITOR_ID[] = "CppEditor.C++Editor";
const char CPPEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "C++ Editor");
const char SWITCH_DECLARATION_DEFINITION[] = "CppEditor.SwitchDeclarationDefinition";

View File

@@ -174,6 +174,7 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
Context context(Constants::CPPEDITOR_ID);
ActionContainer *contextMenu = ActionManager::createMenu(Constants::M_CONTEXT);
contextMenu->insertGroup(Core::Constants::G_DEFAULT_ONE, Constants::G_CONTEXT_FIRST);
Command *cmd;
ActionContainer *cppToolsMenu = ActionManager::actionContainer(CppTools::Constants::M_TOOLS_CPP);
@@ -181,12 +182,12 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
cmd = ActionManager::command(CppTools::Constants::SWITCH_HEADER_SOURCE);
cmd->setTouchBarText(tr("Header/Source", "text on macOS touch bar"));
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
cmd = ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR);
cmd->setTouchBarText(tr("Follow", "text on macOS touch bar"));
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd);
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
@@ -204,7 +205,7 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
cmd->setTouchBarText(tr("Decl/Def", "text on macOS touch bar"));
connect(switchDeclarationDefinition, &QAction::triggered,
this, &CppEditorPlugin::switchDeclarationDefinition);
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd);
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
@@ -223,21 +224,21 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
cppToolsMenu->addAction(cmd);
cmd = ActionManager::command(TextEditor::Constants::FIND_USAGES);
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd);
d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this);
cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context);
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T")));
connect(d->m_openTypeHierarchyAction, &QAction::triggered, this, &CppEditorPlugin::openTypeHierarchy);
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd);
d->m_openIncludeHierarchyAction = new QAction(tr("Open Include Hierarchy"), this);
cmd = ActionManager::registerAction(d->m_openIncludeHierarchyAction, Constants::OPEN_INCLUDE_HIERARCHY, context);
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+I") : tr("Ctrl+Shift+I")));
connect(d->m_openIncludeHierarchyAction, &QAction::triggered, this, &CppEditorPlugin::openIncludeHierarchy);
contextMenu->addAction(cmd);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd);
// Refactoring sub-menu
@@ -256,19 +257,19 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
cppToolsMenu->addAction(cmd);
// Update context in global context
cppToolsMenu->addSeparator();
cppToolsMenu->addSeparator(Core::Constants::G_DEFAULT_THREE);
d->m_reparseExternallyChangedFiles = new QAction(tr("Reparse Externally Changed Files"), this);
cmd = ActionManager::registerAction(d->m_reparseExternallyChangedFiles, Constants::UPDATE_CODEMODEL);
CppTools::CppModelManager *cppModelManager = CppTools::CppModelManager::instance();
connect(d->m_reparseExternallyChangedFiles, &QAction::triggered, cppModelManager, &CppTools::CppModelManager::updateModifiedSourceFiles);
cppToolsMenu->addAction(cmd);
cppToolsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE);
cppToolsMenu->addSeparator();
cppToolsMenu->addSeparator(Core::Constants::G_DEFAULT_THREE);
QAction *inspectCppCodeModel = new QAction(tr("Inspect C++ Code Model..."), this);
cmd = ActionManager::registerAction(inspectCppCodeModel, Constants::INSPECT_CPP_CODEMODEL);
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+F12") : tr("Ctrl+Shift+F12")));
connect(inspectCppCodeModel, &QAction::triggered, d, &CppEditorPluginPrivate::inspectCppCodeModel);
cppToolsMenu->addAction(cmd);
cppToolsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE);
contextMenu->addSeparator(context);