RSCG Example – AOPMarker for CI Builds – part 30
name | AOPMarkerCI |
nuget |
https://www.nuget.org/packages/AOPMethodsCommon/ |
link | http://msprogrammer.serviciipeweb.ro/category/roslyn/ |
author | Andrei Ignat |
This will tracing methods marked with AOPMarkerMethod in CI builds. Does not affect the code run by the programmer.
The code that you start with is
using AOPMethodsCommon; using System; using System.Threading.Tasks; namespace AOPMarkerCI { [AutoMethods(template = TemplateMethod.CustomTemplateFile, MethodPrefix = "auto", CustomTemplateFileName = "../AutoMethod.txt")] partial class UnderTest { [AOPMarkerMethod] public async Task<int> Method1() { await Task.Delay(1000); var ret = Method2(DateTime.Now); return ret % 2 == 0 ? 1 : 0; } [AOPMarkerMethod] private int Method2(DateTime now) { return now.Second; } } }
The code that you will use is
Console.WriteLine("Run the autoci file"); var underTest = new UnderTest(); int i = await underTest.Method1(); Console.WriteLine($"result:{i}");
The code that is generated is
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using System; using System.Collections.Generic; using System.CodeDom.Compiler; using System.Runtime.CompilerServices; using System.Diagnostics; namespace AOPMarkerCI { [GeneratedCode("AOPMethods", "2021.6.11.907")] [CompilerGenerated] public partial class UnderTest{ //autoMethod1 public async System.Threading.Tasks.Task<int> Method1 (){ Console.WriteLine("start method autoMethod1 at " +utcTime); try{ return await autoMethod1(); } catch(Exception ex){ Console.WriteLine($"--autoMethod1 exception {ex.Message}"); throw; } finally{ utcTime =System.DateTime.UtcNow; Console.WriteLine("end method autoMethod1"); } }//end Method1 //autoMethod2 public int Method2 (System.DateTime now){ var utcTime =System.DateTime.UtcNow; Console.WriteLine("start method autoMethod2 at " +utcTime); string valnow ; try{ valnow = System.Text.Json.JsonSerializer.Serialize(now); } catch(Exception ex){ valnow = "Error serializing parameter now : "+ ex.Message; } Console.WriteLine("Argument_now :" + valnow); try{ return autoMethod2(now); } catch(Exception ex){ Console.WriteLine($"--autoMethod2 exception {ex.Message}"); throw; } finally{ utcTime =System.DateTime.UtcNow; Console.WriteLine("end method autoMethod2"); } }//end Method2 } }
Example Code: https://github.com/ignatandrei/RSCG_Examples/tree/main/AOPMarkerCI
Leave a Reply