Home
%3CLINGO-SUB%20id%3D%22lingo-sub-697583%22%20slang%3D%22en-US%22%3EControlling%20build%20result%20based%20on%20code%20coverage%20percentage%20(For%20XAML%20Builds).%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-697583%22%20slang%3D%22en-US%22%3E%0A%20%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3DUTF-8%22%20%2F%26gt%3B%3CSTRONG%3E%20First%20published%20on%20MSDN%20on%20Nov%2006%2C%202015%20%3C%2FSTRONG%3E%20%3CBR%20%2F%3E%3CP%3E%3CBR%20%2F%3E%20We%20can%20control%20the%20success%20of%20a%20build%20in%20our%20own%20customized%20way.%20And%20one%20of%20them%20would%20be%20based%20on%20the%20amount%20of%20Code%20Coverage%20done%20by%20the%20tests.%20I%20began%20customizing%20a%20build%20process%20template%20for%20achieving%20it%20and%20detailing%20the%20effort%20below.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20Roughly%20the%20process%20would%20be%20on%20the%20following%20lines%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Write%20a%20custom%20activity%20for%20XAML%20build%20definition%2C%20that%20is%20capable%20of%20reading%20the%20current%20build%E2%80%99s%20statistics%2C%20and%20calculate%20the%20percentage%20of%20code%20coverage.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Add%20this%20activity%20to%20the%20build%20process%20definition.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Using%20Arguments%20in%20the%20build%20process%20XAML%2C%20get%20from%20the%20control%20percentage.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Depending%20on%20the%20percentage%20and%20the%20build%E2%80%99s%20code%20coverage%20we%20calculate%2C%20change%20the%20status%20of%20the%20build%20to%20failure%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3EWhile%20this%20explains%20the%20over-view%2C%20each%20step%20has%20to%20be%20dealt%20with%20separately%20and%20can%20take%20some%20time%20to%20complete.%20We%E2%80%99ll%20look%20into%20each%20of%20it%20in%20detail.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EBefore%20we%20begin%20discussing%20in%20detail%2C%20this%20solution%20is%20going%20to%20be%20universal%20(works%20for%20TFS%202010%2C%202012%2C%202013%2C%202015%20XAML%20builds).%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20I%20have%20not%20really%20tested%20it%20on%20VSO%20XAML%20builds%2C%20but%20you%20can%20try%20it!%20%3CIMG%20alt%3D%22Smile%22%20class%3D%22wlEmoticon%20wlEmoticon-smile%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F4571.wlEmoticon_2D00_smile_5F00_50D61238.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118946i4F24185F0EA8A808%22%20style%3D%22border-style%3A%20none%3B%22%20%2F%3E%20(may%20need%20a%20few%20minor%20tweaks).%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20However%2C%20I%20have%20a%20separate%20blog%20for%20customizing%20%3CA%20href%3D%22http%3A%2F%2Fblogs.msdn.com%2Fb%2Ftfssetup%2Farchive%2F2015%2F11%2F06%2Fcontrolling-build-result-with-code-coverage-percentage-using-build-vnext.aspx%22%20title%3D%22vNext%20Build%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20vNext%20Build%3C%2FA%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CBR%20%2F%3E%20%3CSTRONG%3E%20Creating%20CodeCoverageCheck%20Activity%20%3C%2FSTRONG%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EAs%20we%20know%20XAML%20build%20definitions%20are%20composed%20of%20individual%20activities%20presented%20as%20a%20part%20of%20work%20flow.%20The%20existing%20components%20can%20be%20found%20in%20the%20toolbox.%20For%20example%20%E2%80%93%20there%20is%20a%20default%20activity%20called%20%E2%80%9CGetBuildAgent%E2%80%9D%20that%20can%20be%20dragged%20and%20dropped%20into%20the%20XAML%20work%20flow%20to%20get%20details%20about%20the%20build%20agent%20that%20is%20executing%20the%20current%20build.%20We%20would%20be%20writing%20our%20own%20custom%20activity%20(let%E2%80%99s%20call%20it%20%3CSTRONG%3E%20CodeCoverageCheck%20%3C%2FSTRONG%3E%20)%20so%20that%20we%20can%20drag%20and%20drop%20it%20into%20any%20build%20process%20definition%20XAML%20we%20would%20like.%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20First%20step%20is%20to%20create%20a%20new%20project.%20Open%20Visual%20Studio%20(that%20matches%20the%20version%20of%20your%20build%20controller%20%E2%80%93%20%3CEM%3E%20please%20stick%20to%20the%20same%20version%20through%20the%20entire%20process%20%3C%2FEM%3E%20)%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Go%20to%20File%20and%20create%20new%20project%20of%20type%20Visual%20C%23%20-%20Workflow%20and%20then%20Activity%20Library.%20I%20am%20going%20to%20call%20my%20solution%20CodeCoverageCheck.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22320%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F8484.image_5F00_thumb_5F00_0264107F.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118947iD34B28E3BE76BD50%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22644%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Add%20reference%20to%20the%20following%20assemblies%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3Eo%20Microsoft.TeamFoundation.Build.Client.dll%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20Microsoft.TeamFoundation.Client.dll%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20Microsoft.TeamFoundation.TestManagement.Client.dll%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20Microsoft.TeamFoundation.WorkItemTracking.Client.dll%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3EYou%20can%20find%20all%20the%20four%20assemblies%20in%20the%20GAC%20of%20your%20Visual%20Studio%20machine.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Now%20we%20need%20to%20create%20the%20activity%20we%20want.%20Right%20click%20on%20the%20solution%20and%20go%20to%20Add%20Item%20%E2%80%93%20New%20Item.%20We%20will%20create%20one%20of%20the%20type%20%E2%80%9CCode%20Activity%E2%80%9D%20under%20Worklow.%20%3CBR%20%2F%3E%20I%20am%20going%20to%20call%20it%20CodeCoverageCheck.cs%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22231%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0842.image_5F00_thumb_5F00_2B050D37.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118948i96E682A549A85F1B%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22644%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Once%20the%20file%20is%20created%20you%20can%20go%20ahead%20and%20put%20this%20code%20in.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eusing%20%3C%2FSPAN%3E%20System%3B%20%3CBR%20%2F%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20using%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20System.Collections.Generic%3B%20%3CBR%20%2F%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20using%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20System.Linq%3B%20%3CBR%20%2F%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20using%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20System.Text%3B%20%3CBR%20%2F%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20using%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20System.Activities%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3Eusing%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20Microsoft.TeamFoundation.Build.Client%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3Eusing%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20Microsoft.TeamFoundation.TestManagement.Client%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3Enamespace%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20CodeCoverageCheck%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%5B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20BuildActivity%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20HostEnvironmentOption%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20.All)%5D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2Fspecifying%20the%20scope%20of%20the%20activity%20-%20I%20have%20put%20it%20all%20so%20that%20this%20can%20execute%20in%20all%20the%20scopes%20(build%2C%20agent%2C%20controller)%20etc%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Epublic%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20sealed%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20class%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20CodeCoverageCheckActivity%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3A%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20CodeActivity%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26lt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20int%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26gt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2Freturns%20integer%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Epublic%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20InArgument%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26lt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20IBuildDetail%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26gt%3B%20BuildDetail%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20get%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20set%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3B%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2Fgetting%20the%20currrent%20build%20context.%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FBuildDetail%20will%20be%20the%20variable%20that%20will%20habve%20all%20the%20information%20about%20the%20current%20build%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FIt%20is%20a%20InArgument%20hence%20going%20to%20be%20an%20input%20to%20the%20activity%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eprotected%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20override%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20int%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20Execute(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20CodeActivityContext%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20context)%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EIBuildDetail%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20currentBuildDetail%20%3D%20context.GetValue%26lt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20IBuildDetail%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26gt%3B(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20this%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20.BuildDetail)%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FCreating%20a%20local%20variable%20to%20copy%20the%20BuildDetail%20we%20get%20as%20input%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EITestManagementService%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20service%20%3D%20currentBuildDetail.BuildServer.TeamProjectCollection.GetService%26lt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20ITestManagementService%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26gt%3B()%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FInitializing%20the%20Test%20Management%20Service%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EITestManagementTeamProject%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20teamProject%20%3D%20service.GetTeamProject(currentBuildDetail.TeamProject)%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FGetting%20the%20team%20project%20associated%20with%20the%20build%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20System.Collections.Generic.%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EIEnumerable%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26lt%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20ITestRun%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%26gt%3B%20totalRuns%20%3D%20teamProject.TestRuns.ByBuild(currentBuildDetail.Uri)%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FGetting%20the%20Total%20tests%20run%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EICoverageAnalysisManager%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20coverageAnalysisManager%20%3D%20teamProject.CoverageAnalysisManager%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FGetting%20the%20Class%20to%20retrieve%20code%20coverage%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eint%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20coveredBlocks%20%3D%200%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eint%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20skippedBlocks%20%3D%200%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eint%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20codeCoveragePercent%20%3D%200%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%209pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3Eforeach%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20ITestRun%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20currentRun%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20in%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20totalRuns)%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FLooping%20through%20all%20the%20test%20runs%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%201%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%203%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EITestRunCoverage%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%5B%5D%20sourceBlocks%20%3D%20coverageAnalysisManager.QueryTestRunCoverage(currentRun.Id%2C%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20CoverageQueryFlags%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20.Modules)%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%201%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eforeach%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20ITestRunCoverage%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20currentBlock%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20in%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20sourceBlocks)%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%201%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%202%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3EIModuleCoverage%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%5B%5D%20modules%20%3D%20currentBlock.Modules%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%202%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eforeach%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%232b91af%3B%22%3E%20IModuleCoverage%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20module%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20in%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20modules)%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%202%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%203%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20coveredBlocks%20%2B%3D%20module.Statistics.BlocksCovered%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%203%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20skippedBlocks%20%2B%3D%20module.Statistics.BlocksNotCovered%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%202%3B%22%3E%20%3C%2FSPAN%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%201%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20background%3A%20white%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20tab-stops%3A%2045.8pt%2091.6pt%20137.4pt%20183.2pt%20229.0pt%20274.8pt%20320.6pt%20366.4pt%20412.2pt%20458.0pt%20503.8pt%20549.6pt%20595.4pt%20641.2pt%20687.0pt%20732.8pt%3B%22%3E%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-tab-count%3A%201%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3C%2FSPAN%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22mso-bidi-font-size%3A%2010.0pt%3B%20mso-fareast-font-family%3A%20'Times%20New%20Roman'%3B%22%3E%20%3CBR%20style%3D%22mso-special-character%3A%20line-break%3B%22%20%2F%3E%20%3CBR%20style%3D%22mso-special-character%3A%20line-break%3B%22%20%2F%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eint%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20totalBlocks%20%3D%20coveredBlocks%20%2B%20skippedBlocks%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Eif%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20(totalBlocks%20%3D%3D%200)%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20codeCoveragePercent%20%3D%200%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Ereturn%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20codeCoveragePercent%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3EcodeCoveragePercent%20%3D%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20int%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20)((%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20double%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20)coveredBlocks%20*%20100.0%20%2F%20(%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3E%20double%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20)totalBlocks)%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%230000ff%3B%22%3Ereturn%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20codeCoveragePercent%3B%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23008000%3B%20font-size%3A%208pt%3B%22%3E%20%2F%2FWe%20will%20be%20using%20this%20return%20value%20for%20comparison%20in%20the%20build%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%22%3E%20%3CSPAN%20style%3D%22mso-spacerun%3A%20yes%3B%22%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%208pt%3B%22%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%20class%3D%22MsoNormal%22%20style%3D%22list-style-type%3A%20disc%3B%20margin%3A%200in%200in%200pt%3B%20line-height%3A%20normal%3B%20mso-layout-grid-align%3A%20none%3B%22%3E%3CSPAN%20style%3D%22background-image%3A%20none%3B%20background-repeat%3A%20repeat%3B%20background-attachment%3A%20scroll%3B%20background-position%3A%200%25%200%25%3B%20mso-bidi-font-size%3A%209.5pt%3B%20mso-highlight%3A%20white%3B%22%3E%20%3CSPAN%20style%3D%22font-family%3A%20Consolas%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23000000%3B%20font-size%3A%208pt%3B%22%3E%20%7D%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Compile%20the%20project%20and%20you%20will%20get%20an%20assembly%20generated%20in%20the%20bin%20folder.%20Mine%20is%20CodeCoverageCheck.dll.%20%3CBR%20%2F%3E%20Pick%20this%20assembly%20and%20put%20it%20in%20two%20places.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20C%3A%5CProgram%20Files%20(x86)%5CMicrosoft%20Visual%20Studio%20%26lt%3B%26gt%3B%5CCommon7%5CIDE%5CPublicAssemblies%20(so%20that%20tool%20box%20will%20be%20able%20to%20identify%20the%20assembly)%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20Add%20this%20assembly%20to%20the%20source%20control%20*%20.%20I%20have%20created%20a%20folder%20call%20support%20and%20have%20put%20the%20assembly%20in.%20Check%20the%20same%20into%20the%20source%20control%20tree.%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3E%20I%20am%20marking%20this%20with%20*%20as%20we%20would%20be%20using%20this%20really%20late%20in%20the%20process.%20%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3EWith%20this%20you%20have%20created%20the%20required%20activity.%20This%20activity%20takes%20an%20input%20(an%20object%20that%20represents%20the%20current%20build%20in%20progress)%20and%20gives%20back%20one%20input%20(the%20code%20coverage%20percentage).%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3E%20Adding%20the%20new%20activity%20to%20tool%20box%20%3C%2FSTRONG%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ENow%20we%20will%20go%20ahead%20add%20the%20activity%20we%20created%20to%20the%20tool%20box.%20%3CBR%20%2F%3E%20Go%20to%20View%20Tool%20box.%20Then%20right%20click%20and%20then%20select%20choose%20items.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20%3CIMG%20alt%3D%223%22%20border%3D%220%22%20height%3D%22484%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F1803.3_5F00_thumb_5F00_153DB58B.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118949i761C10CC0695B5F7%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%223%22%20width%3D%22503%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ENow%20choose%20the%20assembly%20we%20have%20generated.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%224%22%20border%3D%220%22%20height%3D%22458%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F8463.4_5F00_thumb_5F00_76F58F45.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118950i2958439CC8E46653%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%224%22%20width%3D%22644%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EThis%20should%20list%20the%20new%20activity%20we%20created.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%225%22%20border%3D%220%22%20height%3D%22286%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F5488.5_5F00_thumb_5F00_434FB398.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118951i78ED82785949DDC0%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%225%22%20width%3D%22363%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ENow%20we%20can%20go%20ahead%20and%20drop%20the%20activity%20into%20the%20XAML.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3E%20Modifying%20the%20Build%20XAML%20%3C%2FSTRONG%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EI%20am%20going%20to%20use%20the%20TfvcTemplate.12.XAML%20as%20the%20base%20(just%20for%20explaining%2C%20you%20can%20use%20it%20on%20any%20build%20definition).%20Create%20a%20copy%20of%20the%20TfvcTemplate%20so%20that%20you%20don%E2%80%99t%20mess%20with%20the%20source.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EFirst%20step%20would%20be%20to%20get%20the%20required%20variables%20and%20arguments%20in%20place.%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Create%20two%20Variables%20at%20the%20root%20level.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20(1)%20BuildDetailReference%20of%20type%20IBuildDetail%20(if%20you%20don%E2%80%99t%20get%20this%20typ%20go%20to%20imports%20tab%20and%20import%20Microsoft.TeamFoundation.Build.Activities.Extensions)%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eo%20(2)%20CodeCoverageResult%20of%20type%20Int32%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%226%22%20border%3D%220%22%20height%3D%2268%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F3000.6_5F00_thumb_5F00_02AFF7DA.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118952i285003452C43D937%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%226%22%20width%3D%22858%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%227%22%20border%3D%220%22%20height%3D%22124%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0647.7_5F00_thumb_5F00_5B783F55.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118953iF558B15B54ADAC8A%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%227%22%20width%3D%22859%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EWe%20would%20be%20using%20the%20two%20variables%20for%20storing%20temporary%20data%20in%20the%20build%20process%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Create%20an%20argument%20(3)%20CodeCoveragePercentage%20with%20Direction%20In%20and%20Argument%20type%20Int32.%20This%20is%20the%20input%20we%20would%20be%20getting%20from%20the%20user%20in%20the%20build%20definition.%20This%20would%20serve%20as%20the%20control%20value%20%E2%80%93%20the%20value%20below%20which%20builds%20would%20fail%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%228%22%20border%3D%220%22%20height%3D%2277%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F3022.8_5F00_thumb_5F00_0170805D.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118954iD78EDDDCF627826D%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%228%22%20width%3D%22859%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3ENext%20step%20would%20be%20to%20get%20the%20object%20that%20represents%20the%20current%20build.%20This%20should%20be%20passed%20as%20the%20input%20to%20the%20custom%20activity.%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Locate%20the%20activity%20%E2%80%9CGet%20Impacted%20Test%E2%80%9D%20in%20the%20build%20process.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Below%20that%20use%20tool%20box%20and%20add%20an%20activity%20%E2%80%9CGetEnvironmentVariable%3CT%3E%E2%80%9D%20and%20set%20the%20data%20type%20to%20be%20IBuildDetail.%20%3CBR%20%2F%3E%20We%20will%20be%20using%20this%20activity%20to%20get%20the%20object%20that%20represents%20the%20details%20of%20the%20current%20build.%3C%2FT%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20In%20the%20properties%20Result%20should%20be%20set%20to%20the%20variable%20we%20created%20(1)%20BuildDetailReference%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22391%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F1754.image_5F00_thumb_5F00_72C86528.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118955iE62045453FD725B8%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22349%22%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22214%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F1832.image_5F00_thumb_5F00_38DBB2ED.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118957i5A0D34554CD0A035%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22465%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Now%20BuildDetailReference%20%3CSTRONG%3E%20%3C%2FSTRONG%3E%20will%20get%20the%20details%20of%20the%20build%20till%20that%20point%20i.e.%20test%20results%2C%20compile%20status%20etc.%20Later%20we%20will%20be%20passing%20this%20as%20input%20to%20the%20CodeCoverageCheck%20activity.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3ENext%20would%20be%20to%20make%20use%20of%20the%20CodeCoverageActivity%20we%20created.%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Drag%20and%20drop%20CodeCoverageActivity%20below%20GetEnvironmentVariable%20activity.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Set%20the%20BuildDetail%20input%20to%20the%20variable(1)%20BuildDetailReference%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Set%20the%20Result%20to%20variable(2)%20CoverageResult%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22283%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F1007.image_5F00_thumb_5F00_783BF72E.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118958i66BDB2D1C4E37293%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22351%22%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22170%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F7824.image_5F00_thumb_5F00_57B7482D.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118959i688B34D27E3934F0%22%20style%3D%22background-image%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20display%3A%20inline%3B%20padding-right%3A%200px%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22463%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EWe%20are%20giving%20the%20BuildDetails%20as%20input%20and%20the%20output%20of%20the%20activity%20(which%20is%20the%20Code%20coverage%20percentage)%20would%20be%20captured%20by%20CoverageResult%20variable.%20We%20will%20be%20using%20this%20for%20condition%20to%20fail%20the%20build%20next.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EWe%20have%20reached%20the%20last%20step%20%E2%80%93%20which%20would%20be%20to%20use%20the%20variable%20result%20to%20fail%20the%20build.%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20Use%20the%20tool%20box%20and%20then%20add%20an%20If%20condition%20below%20the%20CodeCoverageCheck%20activity.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20The%20condition%20should%20be%20set%20as%20%E2%80%9CCoverageResult%20%26lt%3B%20CodeCoveragePercentage%E2%80%9D.%20%3CBR%20%2F%3E%20This%20translates%20to%20comparing%20the%20code%20coverage%20result%20returned%20by%20the%20activity%20(variable%202)%20against%20the%20input%20that%20the%20user%20sets%20in%20the%20build%20process%20(variable%203).%3C%2FP%3E%3CBR%20%2F%3E%3C%2FBLOCKQUOTE%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22484%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F4807.image_5F00_thumb_5F00_76FC7FB1.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118960i5B25F1B96BE765FB%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22605%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%C2%B7%20In%20the%20If%20clause%20(which%20means%20the%20code%20coverage%20of%20the%20build%20is%20less%20than%20desired)%20we%20should%20fail%20the%20build.%20So%20add%20a%20SetBuildProperities%20activity%20from%20the%20toolbox.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22411%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F7028.image_5F00_thumb_5F00_63DDE3B6.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118961i7E8EA3B58644A3D6%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22529%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EIn%20the%20properties%20to%20set%20select%20CompilationStatus.%20And%20in%20the%20CompilationStatus%20set%20the%20value%20to%20be%20%E2%80%9CBuildPhaseStatus.Failed%E2%80%9D.%20Failed%20would%20make%20the%20build%20fail.%20You%20can%20choose%20to%20keep%20it%20partial%20too.%20%3CBR%20%2F%3E%20I%20have%20added%20a%20few%20WriteBuildMessage%20to%20display%20the%20status%20%E2%80%93%20this%20would%20be%20optional.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EThis%20ends%20the%20build%20process%20customizing.%20Save%20the%20XAML%20and%20then%20check%20it%20into%20source%20control.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EAfter%20this%20we%20have%20one%20last%20step.%3C%2FP%3E%3CBR%20%2F%3E%3COL%3E%3CBR%20%2F%3E%3CLI%3EOpen%20the%20dialog%20to%20manage%20the%20build%20controllers.%20%3CBR%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22197%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0624.image_5F00_thumb_5F00_0C12AD7A.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118962i12C9620DF71308F8%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22420%22%20%2F%3E%3C%2FLI%3E%3CBR%20%2F%3E%3C%2FOL%3E%0A%20%20%3COL%20start%3D%22start%22%3E%3CBR%20%2F%3E%3CLI%3EThis%20will%20open%20the%20following%20dialog%20%3CBR%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22237%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0523.image_5F00_thumb_5F00_44BFE838.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118963iB63F01B4622B498C%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22438%22%20%2F%3E%3C%2FLI%3E%3CBR%20%2F%3E%3C%2FOL%3E%0A%20%20%3COL%20start%3D%22start%22%3E%3CBR%20%2F%3E%3CLI%3ESelect%20the%20Controller%20and%20open%20the%20Properties%3C%2FLI%3E%3CBR%20%2F%3E%3CLI%3ESpecify%20the%20version%20control%20path%20for%20the%20custom%20assembly%20%3CEM%3E%20(the%20step%20I%20had%20marked%20with%20*%20before)%20%3C%2FEM%3E%20here.%20This%20is%20for%20the%20build%20controller%20to%20understand%20our%20custom%20step%20and%20then%20execute%20it.%20%3CBR%20%2F%3E%20%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22484%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F1563.image_5F00_thumb_5F00_6398ECC7.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118964i47A5EB5B90319C4B%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22332%22%20%2F%3E%3C%2FLI%3E%3CBR%20%2F%3E%3C%2FOL%3E%3CBR%20%2F%3E%3CP%3EWe%20are%20all%20set.%20Now%20we%20can%20go%20ahead%20and%20create%20a%20new%20build%20definition%20with%20this%20process.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EYou%20will%20see%20that%20the%20option%20to%20enter%20the%20control%20percentage%20comes%20up.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22330%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0880.image_5F00_thumb_5F00_176373CA.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118965i6D9C862F3B8CE026%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22644%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EFor%20Example%3A%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EI%20have%20a%20build%20which%20has%2012%25%20code%20coverage.%20It%20succeeds%20when%20the%20control%20value%20is%2010.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CIMG%20alt%3D%22image%22%20border%3D%220%22%20height%3D%22224%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-26-82-metablogapi%2F0677.image_5F00_thumb_5F00_46B77A05.png%22%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F118966iD8859CCD70BBA478%22%20style%3D%22background-image%3A%20none%3B%20float%3A%20none%3B%20padding-top%3A%200px%3B%20padding-left%3A%200px%3B%20margin-left%3A%20auto%3B%20display%3A%20block%3B%20padding-right%3A%200px%3B%20margin-right%3A%20auto%3B%20border%3A%200px%3B%22%20title%3D%22image%22%20width%3D%22724%22%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EBut%20fails%20if%20I%20change%20it%20to%2095%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EHope%20this%20helps!%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3EContent%20created%20by%20%E2%80%93%20Venkata%20Narasimhan%20%3CBR%20%2F%3E%20%3C%2FSTRONG%3E%20%3CSTRONG%3E%20Content%20reviewed%20by%20%E2%80%93%20Romit%20Gulati%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20%3C%2FSTRONG%3E%20%3CEM%3E%20Feel%20free%20to%20let%20us%20know%20if%20you%20needed%20any%20clarifications%2Fimprovements.%20%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fmsdnshared.blob.core.windows.net%2Fmedia%2FMSDNBlogsFS%2Fprod.evol.blogs.msdn.com%2FCommunityServer.Components.PostAttachments%2F00%2F10%2F65%2F29%2F80%2FCodeCoverageCheckActivity.cs%22%20original-url%3D%22http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-components-postattachments%2F00-10-65-29-80%2FCodeCoverageCheckActivity.cs%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%20CodeCoverageCheckActivity.cs%20%3C%2FA%3E%3C%2FP%3E%0A%20%0A%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-697583%22%20slang%3D%22en-US%22%3EFirst%20published%20on%20MSDN%20on%20Nov%2006%2C%202015%20We%20can%20control%20the%20success%20of%20a%20build%20in%20our%20own%20customized%20way.%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-697583%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3Ebuild%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ecustomization%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Etfs%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Etfs%202010%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Etfs%202012%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Etfs%202013%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Etfs%202015%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
First published on MSDN on Nov 06, 2015


We can control the success of a build in our own customized way. And one of them would be based on the amount of Code Coverage done by the tests. I began customizing a build process template for achieving it and detailing the effort below.

Roughly the process would be on the following lines



· Write a custom activity for XAML build definition, that is capable of reading the current build’s statistics, and calculate the percentage of code coverage.


· Add this activity to the build process definition.


· Using Arguments in the build process XAML, get from the control percentage.


· Depending on the percentage and the build’s code coverage we calculate, change the status of the build to failure



While this explains the over-view, each step has to be dealt with separately and can take some time to complete. We’ll look into each of it in detail.


Before we begin discussing in detail, this solution is going to be universal (works for TFS 2010, 2012, 2013, 2015 XAML builds).

I have not really tested it on VSO XAML builds, but you can try it! Smile (may need a few minor tweaks).

However, I have a separate blog for customizing vNext Build



Creating CodeCoverageCheck Activity


As we know XAML build definitions are composed of individual activities presented as a part of work flow. The existing components can be found in the toolbox. For example – there is a default activity called “GetBuildAgent” that can be dragged and dropped into the XAML work flow to get details about the build agent that is executing the current build. We would be writing our own custom activity (let’s call it CodeCoverageCheck ) so that we can drag and drop it into any build process definition XAML we would like.



· First step is to create a new project. Open Visual Studio (that matches the version of your build controller – please stick to the same version through the entire process )


· Go to File and create new project of type Visual C# - Workflow and then Activity Library. I am going to call my solution CodeCoverageCheck.



image



· Add reference to the following assemblies




o Microsoft.TeamFoundation.Build.Client.dll


o Microsoft.TeamFoundation.Client.dll


o Microsoft.TeamFoundation.TestManagement.Client.dll


o Microsoft.TeamFoundation.WorkItemTracking.Client.dll




You can find all the four assemblies in the GAC of your Visual Studio machine.




· Now we need to create the activity we want. Right click on the solution and go to Add Item – New Item. We will create one of the type “Code Activity” under Worklow.
I am going to call it CodeCoverageCheck.cs



image



· Once the file is created you can go ahead and put this code in.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;


using Microsoft.TeamFoundation.Build.Client;


using Microsoft.TeamFoundation.TestManagement.Client;



namespace CodeCoverageCheck


{


[ BuildActivity ( HostEnvironmentOption .All)] //specifying the scope of the activity - I have put it all so that this can execute in all the scopes (build, agent, controller) etc


public sealed class CodeCoverageCheckActivity : CodeActivity < int > //returns integer


{


public InArgument < IBuildDetail > BuildDetail { get ; set ; } //getting the currrent build context.


//BuildDetail will be the variable that will habve all the information about the current build


//It is a InArgument hence going to be an input to the activity



protected override int Execute( CodeActivityContext context)


{



IBuildDetail currentBuildDetail = context.GetValue< IBuildDetail >( this .BuildDetail); //Creating a local variable to copy the BuildDetail we get as input



ITestManagementService service = currentBuildDetail.BuildServer.TeamProjectCollection.GetService< ITestManagementService >(); //Initializing the Test Management Service



ITestManagementTeamProject teamProject = service.GetTeamProject(currentBuildDetail.TeamProject); //Getting the team project associated with the build


System.Collections.Generic. IEnumerable < ITestRun > totalRuns = teamProject.TestRuns.ByBuild(currentBuildDetail.Uri); //Getting the Total tests run


ICoverageAnalysisManager coverageAnalysisManager = teamProject.CoverageAnalysisManager; //Getting the Class to retrieve code coverage



int coveredBlocks = 0;


int skippedBlocks = 0;


int codeCoveragePercent = 0;



foreach ( ITestRun currentRun in totalRuns) //Looping through all the test runs


{


ITestRunCoverage [] sourceBlocks = coverageAnalysisManager.QueryTestRunCoverage(currentRun.Id, CoverageQueryFlags .Modules);


foreach ( ITestRunCoverage currentBlock in sourceBlocks)


{


IModuleCoverage [] modules = currentBlock.Modules;


foreach ( IModuleCoverage module in modules)


{


coveredBlocks += module.Statistics.BlocksCovered;


skippedBlocks += module.Statistics.BlocksNotCovered;


}


}


}


int totalBlocks = coveredBlocks + skippedBlocks;


if (totalBlocks == 0)


{


codeCoveragePercent = 0;


return codeCoveragePercent;


}


codeCoveragePercent = ( int )(( double )coveredBlocks * 100.0 / ( double )totalBlocks);


return codeCoveragePercent; //We will be using this return value for comparison in the build



}


}


}



· Compile the project and you will get an assembly generated in the bin folder. Mine is CodeCoverageCheck.dll.
Pick this assembly and put it in two places.


o C:\Program Files (x86)\Microsoft Visual Studio <>\Common7\IDE\PublicAssemblies (so that tool box will be able to identify the assembly)


o Add this assembly to the source control * . I have created a folder call support and have put the assembly in. Check the same into the source control tree. I am marking this with * as we would be using this really late in the process.



With this you have created the required activity. This activity takes an input (an object that represents the current build in progress) and gives back one input (the code coverage percentage).


Adding the new activity to tool box


Now we will go ahead add the activity we created to the tool box.
Go to View Tool box. Then right click and then select choose items.

3


Now choose the assembly we have generated.


4


This should list the new activity we created.


5


Now we can go ahead and drop the activity into the XAML.


Modifying the Build XAML


I am going to use the TfvcTemplate.12.XAML as the base (just for explaining, you can use it on any build definition). Create a copy of the TfvcTemplate so that you don’t mess with the source.


First step would be to get the required variables and arguments in place.



· Create two Variables at the root level.


o (1) BuildDetailReference of type IBuildDetail (if you don’t get this typ go to imports tab and import Microsoft.TeamFoundation.Build.Activities.Extensions)


o (2) CodeCoverageResult of type Int32



6


7


We would be using the two variables for storing temporary data in the build process



· Create an argument (3) CodeCoveragePercentage with Direction In and Argument type Int32. This is the input we would be getting from the user in the build definition. This would serve as the control value – the value below which builds would fail



8


Next step would be to get the object that represents the current build. This should be passed as the input to the custom activity.



· Locate the activity “Get Impacted Test” in the build process.




· Below that use tool box and add an activity “GetEnvironmentVariable<T>” and set the data type to be IBuildDetail.
We will be using this activity to get the object that represents the details of the current build.




· In the properties Result should be set to the variable we created (1) BuildDetailReference



image image



· Now BuildDetailReference will get the details of the build till that point i.e. test results, compile status etc. Later we will be passing this as input to the CodeCoverageCheck activity.



Next would be to make use of the CodeCoverageActivity we created.



· Drag and drop CodeCoverageActivity below GetEnvironmentVariable activity.


· Set the BuildDetail input to the variable(1) BuildDetailReference


· Set the Result to variable(2) CoverageResult



image image


We are giving the BuildDetails as input and the output of the activity (which is the Code coverage percentage) would be captured by CoverageResult variable. We will be using this for condition to fail the build next.


We have reached the last step – which would be to use the variable result to fail the build.



· Use the tool box and then add an If condition below the CodeCoverageCheck activity.


· The condition should be set as “CoverageResult < CodeCoveragePercentage”.
This translates to comparing the code coverage result returned by the activity (variable 2) against the input that the user sets in the build process (variable 3).



image


· In the If clause (which means the code coverage of the build is less than desired) we should fail the build. So add a SetBuildProperities activity from the toolbox.

image


In the properties to set select CompilationStatus. And in the CompilationStatus set the value to be “BuildPhaseStatus.Failed”. Failed would make the build fail. You can choose to keep it partial too.
I have added a few WriteBuildMessage to display the status – this would be optional.


This ends the build process customizing. Save the XAML and then check it into source control.


After this we have one last step.



  1. Open the dialog to manage the build controllers.
    image


  1. This will open the following dialog
    image


  1. Select the Controller and open the Properties

  2. Specify the version control path for the custom assembly (the step I had marked with * before) here. This is for the build controller to understand our custom step and then execute it.
    image


We are all set. Now we can go ahead and create a new build definition with this process.


You will see that the option to enter the control percentage comes up.


image


For Example:


I have a build which has 12% code coverage. It succeeds when the control value is 10.


image


But fails if I change it to 95


Hope this helps!


Content created by – Venkata Narasimhan
Content reviewed by – Romit Gulati

Feel free to let us know if you needed any clarifications/improvements.


CodeCoverageCheckActivity.cs