我最近编写了一个小工具,为每个层级生成一个类,我为无聊的"数据形式"工作编写,我花费了近90%的时间(令人沮丧,我知道)...随着经济的改善,更多关于这一点; )
我的问题是 - 使用这个工具而不是手工打字所有这些代码日复一日实际上伤害了我作为开发人员?我觉得我总是会对这个工具进行更改,因此我"应该"保持在所使用的模式/选择等等之上......但是我的一小部分感觉我可能会失去优势......我错了?
是否可以从Nhibernate映射DLL生成数据库模式?
我的要求是MySQL.如果是这样,我该怎么做?有没有这方面的工具/脚本?开源/免费工具?
另外,我可以使用这些工具将数据集插入/更新到数据库吗?
我正在尝试编写一个Makefile,它应该下载一些来源,当且仅当它们丢失时.
就像是:
hello: hello.c
gcc -o hello hello.c
hello.c:
wget -O hello.c http://example.org/hello.c
Run Code Online (Sandbox Code Playgroud)
但是当然这会导致hello.c每次运行make命令时都会下载.我希望hello.c只有在缺少时才能通过此Makefile下载.这可能与GNU make有关,如果是这样的话怎么办?
我正在将一个较大的Ant构建转换为Maven.作为Ant构建的一部分,我们有几个步骤通过调用项目的一个类来创建Java类,简化为:
javac SomeGenerator.java
java SomeGenerator generated # generate classes in generated/
javac generated/*.java
Run Code Online (Sandbox Code Playgroud)
我已经将每个生成器拆分为自己的Maven模块,但是我遇到了无法运行生成器的问题,因为它尚未在generate-sources阶段中编译.
我尝试过类似的东西
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>generate-model</id>
<goals>
<goal>java</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<mainClass>DTOGenerator</mainClass>
<arguments>
<argument>${model.generated.dir}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
由于上面提到的原因,遗憾的是不起作用.将代码生成器分成两个项目,一个用于编译生成器,另一个用于生成DTO,这似乎有点过分.
有什么替代品?
使用Maven 2.2.1.
我使用外部工具生成了一些C#代码.每个生成的类都有一个属性GeneratedCodeAttribute.为什么我的生成器会创建此属性?
我有一个类A和BM扩展A.现在我想要使用eclipse的代码生成选项创建一个B的构造函数,它接受参数并设置B的所有字段的值(我的意思是它也应该设置从A继承的字段).
有没有在eclipse中生成这样的代码的快捷方式?
我有一个我正在研究的C#应用程序远程加载它的代码,然后运行它(为了争论,你可以假设应用程序是安全的).
代码是C#,但它作为XML文档发送,解析为字符串,然后编译和执行.
现在,我想要做的事情 - 并且比我预期的要困难得多 - 能够解析整个文档,并且在编译之前,在每行执行之后插入其他命令.
例如,考虑代码:
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyCode
{
static class MyProg
{
static void Run()
{
int i = 0;
i++;
Log(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
解析后我想要的更像是:
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyCode
{
static class MyProg
{
static void Run()
{
int i = 0;
MyAdditionalMethod();
i++;
MyAdditionalMethod();
Log(i);
MyAdditionalMethod();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住明显的陷阱 - 我不能在每次分号后都有它,因为这在getter/setter中不起作用,即:
转换:
public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)
至:
public string MyString { …Run Code Online (Sandbox Code Playgroud) 是否有任何库可以从JSON模式生成Javascript类型的对象(JS函数)?基本上是这个http://code.google.com/p/jsonschema2pojo/的等效JS版本.谢谢.
编辑:
从...开始 :
{
"description": "An entity",
"type":"object",
"properties": {
"geometries": {"type": "array",
"items": {
"$ref" : "geometry"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想为我生成一些像这样的代码
function Entity {
this.geometries;
}
Run Code Online (Sandbox Code Playgroud)
显然,使用$ ref等模式可能会更复杂.我希望这会给出这个想法.
我正在寻找与语言无关(至少在某些范围内)源代码生成的System.CodeDom命名空间,并且我发现了一些阻止使用的信息CodeDom.
我认为这篇早期博客文章中描述的一些遗漏现在已经修复,而且CodeDom似乎没有提供创建switch语句的方法的事实仍然允许 - 性能较差? - 没有弄乱生成类型的公共接口的变通方法.这同样适用于自动C#属性和集合初始值设定项.
但是,其他遗漏实际上无法解决,例如无法创建终结器,无法声明扩展方法,或者缺乏对通用引用类型约束的直接支持.
请注意,CodeSnippetTypeMember通过任何其他方式使用或注入文字源代码片段的建议解决方案并不令人满意,因为它们不是与语言无关的 - 从而消除了整个使用点CodeDom而不是String.Format文字代码片段.
最后,甚至在这个SO问题中建议"CodeDom是失败的,表达树(或者更确切地说是"语句"树)是前进的方式" - 尽管没有任何解释如何从表达式树中实际获取任何源代码(除了不能用表达式树声明类的限制之外.
CodeDom仍然是生成源代码的首选方法,还是当前的BCL提供了一个我想不到的名称的任何模糊替换?
当使用MATLAB Coder生成C代码时,当if在另一个if或其else部分的主体中发生时,行为是不同的.以下情况很容易创建输出大小为5x5的C代码:
function y = foo1(u)
if u > 0
y = zeros(2,2);
else
y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)
现在这个也适用
function y = foo2(u,v)
if u > 0
y = zeros(2,2);
else
y = zeros(5,5);
if v > 0
y = 2 * y;
end
end
Run Code Online (Sandbox Code Playgroud)
但是这个无法生成代码,抱怨大小不匹配:
function y = foo3(u,v)
if u > 0
y = zeros(2,2);
if v > 0
y = 2 * y;
end
else
y = zeros(5,5);
end
Run Code Online (Sandbox Code Playgroud)
这是命令行中的输出:
>> …Run Code Online (Sandbox Code Playgroud) code-generation ×10
.net ×2
c# ×2
codedom ×2
java ×2
attributes ×1
database ×1
eclipse ×1
javascript ×1
json ×1
makefile ×1
matlab ×1
matlab-coder ×1
maven-2 ×1
nhibernate ×1
parsing ×1
reflection ×1