static void Main(string[] args) { #if DEBUG var sourceFile = new FileInfo("ClassTest.cs"); #else if (args.Length == 0) { Console.WriteLine("Usage: ClassCounter <path to source.cs>"); return; } var sourceFile = new FileInfo(args[0].Trim(new char[] { '<', '>' })); #endif if (sourceFile.Exists) { var cs = new CSharpSourceFile(sourceFile.FullName); var classes = cs.GetClasses(); Console.WriteLine(string.Format( "File contains {0} classes and structs:", classes.Length) ); Array.ForEach(classes, Console.WriteLine); } else { Console.WriteLine("Sorry, file not found."); } Console.ReadKey(); }
private static void AddObjects(IEnumerable <ApiObject> objects, string directory) { foreach (var obj in objects) { var objectClass = CSharpSourceFile.FromObject(obj); sourcesManager.AddToSourceGroup(Path.Combine(directory, obj.Name.Split('_')[0].ToBeautifiedName()), objectClass); } }
/// <summary> /// Add given Visual C# source file to given code project. /// </summary> /// <param name="sourceFile"> /// CSharpSourceFile representing Visual C# source file to add. /// </param> /// <param name="codeProject"> /// Code project to add Visual C# source file to. /// </param> static void AddSourceFile(CSharpSourceFile sourceFile, CodeProject codeProject) { sourceFile.Load(); Analyzer.Core.Environment.AddSourceCode(codeProject, sourceFile.FilePath, null); }
private static void AddCrossMethodEnums(IEnumerable <CSharpEnum> enums, string directory) { foreach (var e in enums) { var enumSourceFile = new CSharpSourceFile { Name = e.Name, Enum = e }; sourcesManager.AddToSourceGroup(Path.Combine(directory), enumSourceFile); } }
private static void AddMethods(IEnumerable <ApiMethod> methods, string interfacesDirectory, string methodsDirectory) { var methodGroups = methods.GroupBy(m => m.Category); foreach (var methodGroup in methodGroups) { var methodsInterface = CSharpSourceFile.FromMethods(methodGroup.ToArray(), asInterface: true); var methodsClass = CSharpSourceFile.FromMethods(methodGroup.ToArray(), asInterface: false); sourcesManager.AddToSourceGroup(interfacesDirectory, methodsInterface); sourcesManager.AddToSourceGroup(methodsDirectory, methodsClass); } }
public void AddToSourceGroup(string groupName, CSharpSourceFile sourceFile) { if (sourceFile == null) { return; } if (!SourceGroups.ContainsKey(groupName)) { SourceGroups.Add(groupName, new List <CSharpSourceFile>()); } SourceGroups[groupName].Add(sourceFile); }
private static Task WriteSourceFile(CSharpSourceFile sourceFile, string directory) { if (string.IsNullOrWhiteSpace(sourceFile.Name)) { throw new Exception("No file name"); } var sourceCode = sourceFile.GetSourceCode(); var genDirectory = $@"{ParentDirectory}\{directory}"; if (!Directory.Exists(genDirectory)) { Directory.CreateDirectory(genDirectory); } var sourceFileName = sourceFile.Name.EndsWith(".cs") ? sourceFile.Name : sourceFile.Name + ".cs"; return(File.WriteAllTextAsync($@"{genDirectory}\{sourceFileName}", sourceCode)); }