我有现有的数据库,我想自动生成控制器和视图,包括具有字段大小和非空验证的模型.我查看了一个名为魔术模型生成器的项目,但它看起来很旧,只能根据我的判断创建模型.
我希望这主要是节省时间,我理解大多数控制器和视图对于功能面向用户都没有用.我将挑选出我不需要的内容,并将大部分内容移至管理页面.
有没有这样做的工具?
TIA!
编辑:我想创建实际文件,不想要动态管理员.我将使用控制器并查看站点的一些前面部分.
从给定的anstract语法树(AST)生成基于寄存器的字节码有哪些众所周知的策略?
考虑这个表达式1 + 2 - 3 * 4 / 5及其AST形式:
bin_exp(-)
bin_exp(+)
num_exp(1)
num_exp(2)
bin_exp(/)
bin_exp(*)
num_exp(3)
num_exp(4)
num_exp(5)
Run Code Online (Sandbox Code Playgroud)
我正在努力将AST转换为相应的字节码.到目前为止,我只发现了一篇文章,其中仅简要介绍了它.我对它试图说的内容的解释......
int ridx; // register index
function visit_exp(exp)
{
switch (exp)
{
case bin_exp:
visit_exp(exp.left);
visit_exp(exp.right);
printf("add %i, %i -> %i\n", ridx - 2, ridx - 1, ridx);
// save ridx, as it contains the result
break;
case num_exp:
printf("mov %i -> %i\n", ridx, exp.value);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我,谢谢.
compiler-construction code-generation bytecode abstract-syntax-tree
我已经看过关于如何创建自己的生成器的rails演员,并且已经阅读了许多堆栈溢出问题.基本上我要做的是构建一个像内置的rails迁移生成器一样的生成器,它接受类似的参数attribute:type然后根据需要插入它们.这是我现在为我的发电机编写的代码.
class FormGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
argument :model_name, :type => :string
argument :attributes, type: :array, default: [], banner: "attribute:input_type attribute:input_type"
argument :input_types, type: :array, default: [], banner: "attribute:input_type attribute:input_type"
def create_form_file
create_file "app/views/#{model_name.pluralize}/_form.html.erb", "
<%= simple_form_for @#{model_name.pluralize} do | f | %>
<%= f.#{input_type} :#{attribute}, label: '#{attribute}' %>
<% end %>
"
end
end
Run Code Online (Sandbox Code Playgroud)
基本上我想要它做的是生成一个视图文件,其中包含与参数一样多的行.因此传递rails g form products name:input amount:input other_attribute:check_box会生成一个_form.html.erb包含以下内容的文件:
<%= simple_form_for @products do | f | %>
<%= f.input :name, …Run Code Online (Sandbox Code Playgroud) 使用Roslyn,我基于从我的控件之外的代码解析的方法符号生成C#代码.因此,该方法可以具有任意数量的参数.我生成的代码包含一个lambda表达式,它接受一个参数,例如:
// I'm generating code like this
public void SomeMethod()
{
DoSomething(x => x.Foo());
}
Run Code Online (Sandbox Code Playgroud)
此代码的潜在问题是如果包含方法包含一个名为的参数x:
// my code generator might produce this
public void SomeMethod(int x)
{
DoSomething(x => x.Foo());
}
Run Code Online (Sandbox Code Playgroud)
此代码导致错误:
无法在此范围内声明名为"x"的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数
很公平.
为了解决这个问题,我想我可以从标识符名称开始x,用SemanticModel.LookupSymbols它来查看它是否已经定义.如果是这样,前置_(获取_x)并重复.
但这是最好的方法吗?如果是这样,LookupSymbols当我拥有的是方法符号时,如何使用?
我想到的另一个选择是Parameters在方法符号中使用该集合.我可以对它们执行相同的名称选择算法.但这样就够了吗?例如:
private static string GetIdentifierName(IMethodSymbol within)
{
var proposed = "x";
while (within.Parameters.Any(x => x.Name == proposed))
{
proposed = "_" + proposed;
}
return proposed;
}
Run Code Online (Sandbox Code Playgroud) 我使用它是asn1c为了从一个或多个.asn1文件生成一系列文件.h并将.c其放入给定的文件夹中。
这些C 文件的名称与原始文件没有对应关系asn1。
这些文件必须与我的文件链接在一起才能获得有效的可执行文件。我希望能够:
add_custom_target)asn1c在文件丢失或其中一个.asn1文件已更新时自动运行可执行文件。由于预先不知道生成的文件,因此可以仅全局显示命令输出目录的内容asn1c- 只要该目录不为空,我就很高兴。
我目前正在根据我设计的新语言规范生成自定义 AST。这个自定义 AST 包含我设计的不同节点,其中包含我现在生成 JavaScript 代码所需的所有信息。例如:
假设我有一个 customExpressionNode,我希望将其转换为包含几个 if 条件的 JavaScript 函数。
我目前正在研究像 Babylon 和 Esprima 这样的库,用于从我的自定义 AST 生成新的 Javascript AST,但据我所知,这些库使用的 AST 非常复杂。我还想避免将 js 代码打印到几个文件中然后解析和编译它们,所以我的问题是:
有没有更好的方式以编程方式生成符合 JavaScript 的 AST,我可以用它来生成 JavaScript 代码?
javascript code-generation abstract-syntax-tree esprima babel-babylon
Swagger 为 Spring 服务器生成的代码有一个名为 useBeanValidation 的选项,但我不知道如何使用它。我找不到任何文档告诉我它支持哪些验证,所以我决定自己尝试一下。OpenAPI 规范对架构对象属性的描述列出了这些属性:
title
multipleOf
maximum
exclusiveMaximum
minimum
exclusiveMinimum
maxLength
minLength
pattern
maxItems
minItems
uniqueItems
maxProperties
minProperties
required
enum
Run Code Online (Sandbox Code Playgroud)
所以我尝试将其中一些属性添加到我创建的对象的字段中。这是我的 .yaml 文件的相关部分:
components:
schemas:
Dummy:
type: object
properties:
iMinMax:
type: integer
format: int32
minimum: 0
maximum: 100
dMinMaxEx:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: false
exclusiveMaximum: true
dMinExMaxEx:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: true
exclusiveMaximum: true
dMinExMax:
type: number
format: int32
minimum: 5.0
maximum: 10.0
exclusiveMinimum: true
exclusiveMaximum: false …Run Code Online (Sandbox Code Playgroud) 我用构造函数定义了一个类:
class Example:
def __init__(self, a, b, c):
...
Run Code Online (Sandbox Code Playgroud)
现在我想为每个构造函数参数声明一个字段,如下所示:
class Example:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
Run Code Online (Sandbox Code Playgroud)
我想自动执行此操作。PyCharm 的检查允许我为参数生成字段,但一次只能生成一个(作为 的修复Parameter x is not used),这很烦人。对于所有参数,我如何同时执行此操作?
我发现最接近的是python 类 __init__ function 的 PyCharm 模板,解决方案不灵活,因为它只支持固定数量的参数。而且,我觉得这是成熟的IDE必须实现的功能,Idea允许这样做。
那篇文章还参考了在 Python 中进行自动属性分配的最佳方法是什么,这是个好主意吗?,其中讨论了autoassign,这似乎有很多缺点。
我的 PyCharm 版本是 2019.1.3 CE。
仅使用 POSIX shell 的功能,是否有一个“简单命令”,它什么都不做并且不会改变$? 人们通常描述:为 shell 的无操作命令的值,但这总是设置$?为零,所以这不是我想要的想。
这是生成 shell 脚本的程序所需要的。在几个地方它需要发出一个 if-then-else 块
if CONDITION
then
TRUE-COMMANDS
else
FALSE-COMMANDS
fi
Run Code Online (Sandbox Code Playgroud)
但是,因为进一步的并发症的,我宁可不尝试,现在来解释,它不能可靠地告诉是否TRUE-COMMANDS和FALSE-COMMANDS是空的。空的 then 或 else 子句将是 shell 语法错误。
:可以放在then-clause的开头以处理为TRUE-COMMANDS空,但这不会起作用,FALSE-COMMANDS因为它会破坏$?并且FALSE-COMMANDS可能想要查看$?条件设置的值。出于同样的原因,:不能放在后面 FALSE-COMMANDS——if-then-else后面的代码可能希望$?从 if-then-else 中的最后一个操作中看到。
可以避免的奖励积分:
分叉:(exit $?)完成这项工作,但在生成的脚本中有太多这样的条件块,它会产生可测量的减速。
功能:给定nop () { return $? }然后nop完成工作,但由于我不想涉及的更多复杂性,nop为所有需要它的地方足够早地定义是不切实际的。
我正在尝试构建一个源代码生成器。现在,只是返回“Hello World”的最基本的静态方法。
生成器项目构建,但生成的代码不可用,调试器从不启动,构建输出显示
CSC:警告 CS8032:无法从 ...\bin\Debug\net5.0\Generator.StaticPropertyEnum.dll 创建分析器 Generator.StaticPropertyEnum.helloWorld 的实例:无法加载文件或程序集“System.Runtime, Version=5.0” .0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。该系统找不到指定的文件..
Microsoft.CodeAnalysis.CSharp和Microsoft.CodeAnalysis.AnalyzersMicrosoft.Net.Compilers.ToolsetVisual Studio:版本 16.8.3
.NET SDK:5.0.101
生成器.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.9.0-2.final" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.0.0" PrivateAssets="all" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
测试 csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> …Run Code Online (Sandbox Code Playgroud) code-generation ×10
.net ×2
c# ×2
bytecode ×1
c#-9.0 ×1
cmake ×1
dependencies ×1
esprima ×1
glob ×1
javascript ×1
posix ×1
pycharm ×1
python ×1
roslyn ×1
ruby ×1
sh ×1
simple-form ×1
swagger ×1