package Ġnet . zero 9 1 7 8 . cov Ċ Ċ import Ġcom . intellij . execution . configurations . General CommandLine Ċ import Ġcom . intellij . execution . configurations . Runner Settings Ċ import Ġcom . intellij . execution . process . Process Adapter Ċ import Ġcom . intellij . execution . process . Process Event Ċ import Ġcom . intellij . execution . process . Process Handler Ċ import Ġcom . intellij . notification . Notification Group Manager Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . openapi . application . invoke And Wait IfNeeded Ċ import Ġcom . intellij . openapi . application . invoke Later Ċ import Ġcom . intellij . openapi . progress . Perform In Background Option Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . wm . Tool WindowManager Ċ import Ġcom . jetbrains . cidr . cpp . cmake . workspace . CMake Workspace Ċ import Ġcom . jetbrains . cidr . cpp . execution . CMake App Run Configuration Ċ import Ġcom . jetbrains . cidr . cpp . execution . CMake Build Profile Execution Target Ċ import Ġcom . jetbrains . cidr . cpp . execution . coverage . CMake Coverage Build Options Installer Factory Ċ import Ġcom . jetbrains . cidr . cpp . tool chains . CPP Environment Ċ import Ġcom . jetbrains . cidr . execution . Cid r Build Target Ċ import Ġcom . jetbrains . cidr . execution . Cid r Run Configuration Ċ import Ġcom . jetbrains . cidr . execution . Cid r Run Configuration Extension Base Ċ import Ġcom . jetbrains . cidr . execution . Configuration Extension Context Ċ import Ġcom . jetbrains . cidr . lang . CL anguage Kind Ċ import Ġcom . jetbrains . cidr . lang . tool chains . Cid r Tool Environment Ċ import Ġnet . zero 9 1 7 8 . cov . actions . Run Coverage Settings Ċ import Ġnet . zero 9 1 7 8 . cov . data .* Ċ import Ġnet . zero 9 1 7 8 . cov . editor . Coverage File Access Prot ector Ċ import Ġnet . zero 9 1 7 8 . cov . editor . Coverage Highlight er Ċ import Ġnet . zero 9 1 7 8 . cov . settings . Coverage Generator Settings Ċ import Ġnet . zero 9 1 7 8 . cov . util . get CMake Configurations Ċ import Ġnet . zero 9 1 7 8 . cov . window . Coverage View Ċ import Ġjavax . swing . event . Hyper link Event Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ Ċ class ĠCoverage Configuration Extension Ġ: ĠC idr Run Configuration Extension Base () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable For ( configuration : ĠC idr Run Configuration < *, Ġ* >) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġis Enabled For ( ĊĠĠĠĠĠĠĠ Ġapplicable Configuration : ĠC idr Run Configuration < *, Ġout ĠC idr Build Target <* >>, ĊĠĠĠĠĠĠĠ Ġenvironment : ĠC idr Tool Environment , ĊĠĠĠĠĠĠĠ Ġrunner Settings : ĠRunner Settings ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( environment Ġ! is ĠCPP Environment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrunner Settings Ġis ĠRun Coverage Settings ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpatch CommandLine ( ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠC idr Run Configuration < *, Ġout ĠC idr Build Target <* >>, ĊĠĠĠĠĠĠĠ Ġrunner Settings : ĠRunner Settings ?, ĊĠĠĠĠĠĠĠ Ġenvironment : ĠC idr Tool Environment , ĊĠĠĠĠĠĠĠ Ġcmd Line : ĠGeneral CommandLine , ĊĠĠĠĠĠĠĠ Ġrunner Id : ĠString , ĊĠĠĠĠĠĠĠ Ġcontext : ĠConfiguration Extension Context ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( environment Ġ! is ĠCPP Environment Ġ|| Ġconfiguration Ġ! is ĠCMake App Run Configuration Ġ|| Ġrunner Settings Ġ! is ĠRun Coverage Settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Coverage Generator ( environment , Ġconfiguration . project )?. patch Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunner Settings . execution Target , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcmd Line , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach To Process ( ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠC idr Run Configuration < *, Ġout ĠC idr Build Target <* >>, ĊĠĠĠĠĠĠĠ Ġhandler : ĠProcess Handler , ĊĠĠĠĠĠĠĠ Ġenvironment : ĠC idr Tool Environment , ĊĠĠĠĠĠĠĠ Ġrunner Settings : ĠRunner Settings ?, ĊĠĠĠĠĠĠĠ Ġrunner Id : ĠString , ĊĠĠĠĠĠĠĠ Ġcontext : ĠConfiguration Extension Context ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( environment Ġ! is ĠCPP Environment Ġ|| Ġconfiguration Ġ! is ĠCMake App Run Configuration Ġ|| Ġrunner Settings Ġ! is ĠRun Coverage Settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandler . add Process Listener ( object Ġ: ĠProcess Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess Terminated ( event : ĠProcess Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Compiler Flags ( configuration , Ġrunner Settings . execution Target )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠCMake Coverage Build Options Installer Factory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstaller Ġ= Ġfactory . get Installer ( configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( installer Ġ!= Ġnull Ġ&& Ġinstaller . can Install ( configuration , Ġconfiguration . project )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Group Manager . getInstance (). get Notification Group (" C / C ++ ĠCoverage ĠNotification ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Missing Ġcompilation Ġflags ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Compiler Ġflags Ġfor Ġgenerating Ġcoverage Ġare Ġmissing .\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Would Ġyou Ġlike Ġto Ġcreate Ġa Ġnew Ġprofile Ġwith Ġthem Ġnow ?\ n < a Ġhref =\" \"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"> Create </ a >", ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġhyper link Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hyperlink Event . eventType Ġ== ĠHyper link Event . EventType . ACTIV ATED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! installer . install ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Group Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Notification Group (" C / C ++ ĠCoverage ĠNotification ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġadd Ġcompiler Ġflags ", ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). notify ( configuration . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. notify ( configuration . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run ( object Ġ: ĠTask . Background able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . project , Ġ" Gather ing Ġcoverage ...", Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform In Background Option . DE AF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . isIn determinate Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Project Semaphore . getInstance ( project ). semaphore . try Acquire ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= Ġ" Waiting Ġfor Ġother Ġcoverage Ġgather ing Ġto Ġfinish " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject Semaphore . getInstance ( project ). semaphore . acquire () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoverage Generator Ġ= Ġget Coverage Generator ( environment , Ġconfiguration . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġneeds Source files Ġ= Ġwhen Ġ( coverage Generator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLLVM Coverage Generator Ġ-> Ġcoverage Generator . major Version Ġ< Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGCC JSON Coverage Generator Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGCC G CD AC over age Generator Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( needs Source files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( Coverage Highlight er . getInstance ( project )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsources Ġ= Ġget Source Files ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoverage File Access Prot ector . currently In Coverage [ configuration . project ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage Generator ?. generate Coverage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner Settings . execution Target , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠDefault Mutable TreeNode (" invisible - root ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoverage Highlight er . getInstance ( configuration . project ). set Coverage Data ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Coverage View Tree ( root , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoverage View . getInstance ( configuration . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Root ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. has Branch Coverage Ġ?: Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. contains External Sources Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTool WindowManager . getInstance ( configuration . project ). get Tool Window (" C / C ++ ĠCoverage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . show ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finished () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke And Wait IfNeeded Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoverage File Access Prot ector . currently In Coverage . remove ( configuration . project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject Semaphore . getInstance ( project ). semaphore . release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Coverage Generator ( ĊĠĠĠĠĠĠĠ Ġenvironment : ĠCPP Environment , ĊĠĠĠĠĠĠĠ Ġproject : ĠProject ĊĠĠĠ Ġ): ĠCoverage Generator ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠCoverage Generator Settings . getInstance (). get Generator For ( environment . toolchain . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( generator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Group Manager . getInstance (). get Notification Group (" C / C ++ ĠCoverage ĠNotification ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ne ither Ġg cov Ġnor Ġllvm - cov Ġspecified Ġfor Ġ${ environment . toolchain . name }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). notify ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcoverage Generator Ġ= Ġgenerator . first ĊĠĠĠĠĠĠĠ Ġif Ġ( coverage Generator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( generator . second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Group Manager . getInstance (). get Notification Group (" C / C ++ ĠCoverage ĠNotification ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Coverage Ġcould Ġnot Ġbe Ġgenerated Ġdue Ġto Ġfollowing Ġerror : Ġ${ generator . second }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). notify ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcoverage Generator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Compiler Flags ( ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠCMake App Run Configuration , ĊĠĠĠĠĠĠĠ Ġexecution Target : ĠCMake Build Profile Execution Target ĊĠĠĠ Ġ) Ġ= Ġget CMake Configurations ( configuration , Ġexecution Target ). any Ġ{ ĊĠĠĠĠĠĠĠ ĠCL anguage Kind . values (). any Ġ{ Ġkind Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġit . get Combined Compiler Flags ( kind , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . contains ("-- coverage ") Ġ|| Ġlist . contains All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- f profile - arcs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ft est - coverage " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ|| Ġ( list . contains ("- f coverage - mapping ") Ġ&& Ġlist . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . matches ("- f profile - instr - generate (= .* )? ". to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Source Files ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject ĊĠĠĠ Ġ): ĠSet < Virtual File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCMake Workspace . getInstance ( project ). module ?. let Ġ{ Ġmodule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModule Root Manager . getInstance ( module ). content Entries . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . source Folder Files . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. fold ( empty Set ()) Ġ{ Ġresult , Ġcurr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . union ( curr ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Coverage View Tree ( root : ĠDefault Mutable TreeNode , Ġdata : ĠCoverage Data ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠCh osen Name ( val Ġfilepath : ĠString , Ġvar Ġcount : ĠInt , Ġval Ġdata : ĠCoverage File Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Filename (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilepath . split ('/ '). take Last ( count ). join ToString ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpreviously Changed Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠCh osen Name >() ĊĠĠĠĠĠĠĠ Ġfor Ġ(( _, Ġvalue ) Ġin Ġdata . files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Ġ= ĠCh osen Name ( value . filePath . replace ('\\ ', Ġ'/ '), Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġnew . get Filename () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġexisting Ġ= Ġmap [ filename ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( existing Ġ== Ġnull Ġ&& Ġ! previous ly Changed . contains ( filename )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ filename ] Ġ= Ġnew ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . remove ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( new . get Filename () Ġ== Ġexisting ?. get Filename () Ġ|| Ġpreviously Changed . contains ( new . get Filename ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreviously Changed . add ( new . get Filename ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ġ= Ġnew . copy ( count Ġ= Ġnew . count Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexisting Ġ= Ġexisting ?. copy ( count Ġ= Ġexisting . count Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( existing Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġexisting Ġis Ġnull Ġdue Ġto Ġa Ġfilename Ġbeing Ġpart Ġof Ġpreviously Changed , Ġalso Ġattempt Ġto Ġfind ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexisting Ġfiles Ġthat Ġmight Ġalso Ġhave Ġto Ġbe Ġchanged Ġa Ġlong Ġthe Ġway ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexisting Ġ= Ġmap [ new . get Filename ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ new . get Filename ()] Ġ= Ġnew ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . get Filename ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfile DataTo Name Ġ= Ġmap . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . data Ġto Ġit . key ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( _, Ġvalue ) Ġin Ġdata . files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Node Ġ= Ġobject Ġ: ĠDefault Mutable TreeNode ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoverage File Data Ġ= Ġuser Object Ġas ? ĠCoverage File Data Ġ?: Ġreturn Ġsuper . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile DataTo Name [ coverage File Data ] Ġ?: Ġreturn Ġsuper . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . add ( file Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( function Ġin Ġvalue . functions . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Node . add ( object Ġ: ĠDefault Mutable TreeNode ( function ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( user Object Ġas ? ĠCoverage Function Data )?. function Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġuser Object . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }