Use updated ProjectInfo

...that actually make us use the ProjectInfo with updated
CompilerCallData.

Change-Id: Ieee298b3db64159f3faa02231921275e4466bcb5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2014-11-07 11:32:40 +01:00
parent 2f3666a3f0
commit b6a50a1a4c
3 changed files with 29 additions and 17 deletions

View File

@@ -135,10 +135,21 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl(
ProjectExplorer::RunConfiguration *runConfiguration)
{
QTC_ASSERT(runConfiguration, return 0);
QTC_ASSERT(m_projectInfo.isValid(), return 0);
QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return 0);
ClangStaticAnalyzerRunControl *engine = new ClangStaticAnalyzerRunControl(sp, runConfiguration,
m_projectInfo);
// Some projects provides CompilerCallData once a build is finished,
// so pass on the updated Project Info unless no configuration change
// (defines/includes/files) happened.
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return 0);
const CppTools::ProjectInfo projectInfoAfterBuild
= CppTools::CppModelManager::instance()->projectInfo(project);
QTC_ASSERT(!projectInfoAfterBuild.configurationOrFilesChanged(m_projectInfoBeforeBuild),
return 0);
m_projectInfoBeforeBuild = CppTools::ProjectInfo();
ClangStaticAnalyzerRunControl *engine
= new ClangStaticAnalyzerRunControl(sp, runConfiguration, projectInfoAfterBuild);
connect(engine, &ClangStaticAnalyzerRunControl::starting,
this, &ClangStaticAnalyzerTool::onEngineIsStarting);
connect(engine, &ClangStaticAnalyzerRunControl::newDiagnosticsAvailable,
@@ -196,19 +207,20 @@ void ClangStaticAnalyzerTool::startTool(StartMode mode)
setBusyCursor(true);
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project);
QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return);
ProjectExplorerPlugin::instance()->runProject(project, runMode());
m_projectInfo = CppTools::CppModelManager::instance()->projectInfo(project);
}
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfo() const
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const
{
return m_projectInfo;
return m_projectInfoBeforeBuild;
}
void ClangStaticAnalyzerTool::resetCursorAndProjectInfo()
void ClangStaticAnalyzerTool::resetCursorAndProjectInfoBeforeBuild()
{
setBusyCursor(false);
m_projectInfo = CppTools::ProjectInfo();
m_projectInfoBeforeBuild = CppTools::ProjectInfo();
}
void ClangStaticAnalyzerTool::onEngineIsStarting()
@@ -228,7 +240,7 @@ void ClangStaticAnalyzerTool::onEngineFinished()
QTC_ASSERT(m_goNext, return);
QTC_ASSERT(m_diagnosticModel, return);
resetCursorAndProjectInfo();
resetCursorAndProjectInfoBeforeBuild();
const int issuesFound = m_diagnosticModel->rowCount();
m_goBack->setEnabled(issuesFound > 1);