ProjectDiagnostics.h header
#include <ew/app/ProjectDiagnostics.h>
Namespace ew::app
Functions
std::vector< Diagnostic > ew::app::diagnostics::collectProjectDiagnostics(const ew::core::project::Project &project, const ew::app::library::MountedLibraries &libraries, const RuleRegistry ®istry, const DiagnosticSuppression &suppression)
Every finding in project, from every validator, as one list.
This is what "one diagnostic" buys. The timeline's continuity checks, the branching module's structural checks and the style engine's craft rules used to be three reports in three shapes on three surfaces, and no single question – what is wrong with this project? – could be asked at all. It is asked here.
libraries resolves references across mounted libraries, so a shared-library entity is validated like a local one rather than reported as dangling.
registry decides which rules run and what severity their findings carry, and suppression decides which findings the project has asked not to be told about again. Both are applied HERE rather than by each caller, because a finding filtered out of one surface and not another is exactly the inconsistency this whole record exists to remove.
Ordered by severity, then by rule id, then by message, so the list is stable between runs and the things that stop the project working sort to the top.
std::vector< Diagnostic > ew::app::diagnostics::visibleDiagnostics(const std::vector< Diagnostic > &diagnostics, const RuleRegistry ®istry, const DiagnosticSuppression &suppression)
The findings of diagnostics that registry still enables and suppression does not silence, in the same order.
Split out so a surface holding findings it computed itself – the style panel, which analyses the text in front of it rather than the whole project – filters them by exactly the same rule as everything else.