private bool IsDeclaredInNonGeneratedCode(ISymbol member) { var references = member.DeclaringSyntaxReferences; if (references.Length == 0) { return(false); } foreach (var reference in references) { Document?document = _project.GetDocument(reference.SyntaxTree); if (document != null && GeneratedCodeWorkspace.IsGeneratedDocument(document)) { return(false); } } return(true); }
public async Task <GeneratedCodeWorkspace> ExecuteAsync(CodeModel codeModel, Configuration configuration) { Directory.CreateDirectory(configuration.OutputFolder); var project = GeneratedCodeWorkspace.Create(configuration.OutputFolder, configuration.SharedSourceFolder); var sourceInputModel = new SourceInputModel(await project.GetCompilationAsync()); var context = new BuildContext(codeModel, configuration, sourceInputModel); var modelWriter = new ModelWriter(); var clientWriter = new ClientWriter(); var restClientWriter = new RestClientWriter(); var serializeWriter = new SerializationWriter(); var headerModelModelWriter = new ResponseHeaderGroupWriter(); foreach (var model in context.Library.Models) { var codeWriter = new CodeWriter(); modelWriter.WriteModel(codeWriter, model); var serializerCodeWriter = new CodeWriter(); serializeWriter.WriteSerialization(serializerCodeWriter, model); var name = model.Type.Name; project.AddGeneratedFile($"Models/{name}.cs", codeWriter.ToString()); project.AddGeneratedFile($"Models/{name}.Serialization.cs", serializerCodeWriter.ToString()); } foreach (var client in context.Library.RestClients) { var restCodeWriter = new CodeWriter(); restClientWriter.WriteClient(restCodeWriter, client); project.AddGeneratedFile($"{client.Type.Name}.cs", restCodeWriter.ToString()); } foreach (ResponseHeaderGroupType responseHeaderModel in context.Library.HeaderModels) { var headerModelCodeWriter = new CodeWriter(); headerModelModelWriter.WriteHeaderModel(headerModelCodeWriter, responseHeaderModel); project.AddGeneratedFile($"{responseHeaderModel.Type.Name}.cs", headerModelCodeWriter.ToString()); } foreach (var client in context.Library.Clients) { var codeWriter = new CodeWriter(); clientWriter.WriteClient(codeWriter, client, context.Configuration); project.AddGeneratedFile($"{client.Type.Name}.cs", codeWriter.ToString()); } foreach (var operation in context.Library.LongRunningOperations) { var codeWriter = new CodeWriter(); LongRunningOperationWriter.Write(codeWriter, operation); project.AddGeneratedFile($"{operation.Type.Name}.cs", codeWriter.ToString()); } if (context.Configuration.AzureArm) { var codeWriter = new CodeWriter(); ManagementClientWriter.WriteClientOptions(codeWriter, context); project.AddGeneratedFile($"{context.Configuration.LibraryName}ManagementClientOptions.cs", codeWriter.ToString()); var clientCodeWriter = new CodeWriter(); ManagementClientWriter.WriteAggregateClient(clientCodeWriter, context); project.AddGeneratedFile($"{context.Configuration.LibraryName}ManagementClient.cs", clientCodeWriter.ToString()); } return(project); }