new in Unreal Engine 5.4: data validation quick fixes
the API revolves around the
UE::DataValidation::IFixertype. fixers are pieces of code that can fix your issues given their application conditions are met2024-02-07 once you have a fixer, you can display it in your (
FTokenizedMessage-based) validation messages usingFFixToken2024-02-07 minimal example:
auto Message = FTokenizedMessage::Create( EMessageSeverity::Error, LOCTEXT( "FoundNoneEntries", "Found None entries in ability array." "Please remove them, otherwise they may cause crashes during runtime." ) ); Message->AddToken( UE::DataValidation::MakeFix( [this] { Abilities.SetNum(Algo::RemoveIf( Abilities, [](const UGameplayAbility* Ability) { return Ability == nullptr; } )); return FFixResult::Success(LOCTEXT("NoneEntriesRemoved", "None entries have been removed")); } ) ->CreateToken(LOCTEXT("RemoveNoneEntries", "Remove the None entries")) ); Context.AddMessage(MoveTemp(Message));2024-02-07 
fixers can be freely stacked and composed - there are a few such layers available out of the box in the engine
2024-02-07 UE::DataValidation::FMutuallyExclusiveFixSetis actually not a fixer, but a fixer builder - you give it a set of fixers, and it will make it so that when one is applied, it becomesEFixApplicability::Applied, and the rest becomesEFixApplicability::DidNotApply- thus creating a set of mutually-exclusive fixes2024-02-07 

