标签: code-generation

你生成代码吗?如果是这样,你使用了什么,你产生了什么?

我已经使用了MyGeneration,我喜欢它来生成使用Microsoft的数据访问应用程序块为我的数据访问层创建的代码,并保持我的数据库概念与我正在建模的域同步.尽管如此,一个周末的学习曲线比预期更陡峭,以使其富有成效.

我想知道其他人正在做什么与代码生成有关.

http://www.mygenerationsoftware.com

http://www.codesmithtools.com/

其他?

早在2000年左右,我工作的公司就使用Veritas Software的产品(我相信它)来模拟组件并生成集成组件(dll)的代码.我没有获得很多经验,但似乎代码生成长期以来一直是"圣杯".这是实用的吗?其他人如何使用它?

谢谢!

.net java database code-generation

14
推荐指数
2
解决办法
2267
查看次数

覆盖生成的Java源代码中的行号

有没有办法覆盖Java中的行号(例如,通过使用某种预处理器指令)?

我正在使用Janino"编译"高级语言,直到Java字节代码.我需要编译器错误来报告原始文件中的行,而不是生成的Java代码.

C#有#line指令,我已成功利用它将源文件中的行号映射到编译结果.Java需要相同的东西.

谢谢!

java code-generation annotations janino

14
推荐指数
2
解决办法
1462
查看次数

使用xsd.exe生成的类可以为Nulllable值

我一直在使用xsd.exe生成一个用于反序列化XML的类.我在源xsd中有十进制值,不需要:

<xs:attribute name="Balance" type="xs:decimal" use="optional" />
Run Code Online (Sandbox Code Playgroud)

xsd生成的类生成以下代码:

private decimal balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到它不是可空的.

我如何将字段生成为可为空的字段,如下所示:

private decimal? balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal? Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# code-generation xsd.exe .net-2.0

14
推荐指数
2
解决办法
1万
查看次数

每次更改时Eclipse自动生成serialVersionUID

Eclipse很好地为我生成了serialVersionUID.但这似乎是被动代码生成,因为我更改文件时id不会自动更新,除非我再次生成代码.

有没有办法在每次更改内容时生成serialVersionUID?"保存行动"似乎没有包含这样的选项 - 有人找到了某种方法来做到这一点吗?

它可以与IDE保存操作或类似的东西结合使用,这样我可以恢复更改,如果我这样做不会影响序列化.

此致,Touko

编辑:@gustafc:这有两点要点:

  • 如果我已经正确理解,不同的编译器最终可能会有不同的serialVersionUID值
    • 来自Serializable API:但是,强烈建议所有可序列化类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类细节高度敏感,这些细节可能因编译器实现而异,因此在反序列化期间可能导致意外的InvalidClassExceptions
  • 我正在使用类似命令模式的对象在服务器上做事情.因此,即使对象内容没有改变,当客户端和服务器上的类内容不同时捕获这些情况也会很好.
    • 但是在另一次思考时,这个问题可能不适用于自动生成的值,因为只有内容更改会改变这一点?所以,实际上我想要一个自动递增的serialVersionUID

这听起来合情合理吗?

Summa summarum,经过多思考后,每次更改时自动递增的serialVersionUID会更好......

java eclipse code-generation serialversionuid

14
推荐指数
1
解决办法
9170
查看次数

从生成它的应用程序中调试生成的.NET程序集

简而言之:如何在生成程序上调试调试会话期间生成的代码?(见下面的代码)

我面临以下问题:我想从生成它的应用程序调试动态生成/编译的代码.我提供了一个简单的例子来澄清它.这个例子不需要调试!我真正的应用程序生成更多的行和代码,真正证明调试,相信我:-)我想知道是否有一种方法来调试或放置断点HelloWorld.单步调用InvokeMethod调用不起作用.也许解决方案涉及在调用站点对生成的程序集进行代码修改.

我已经看了很多问题(例如在Visual Studio .NET中调试动态加载的程序集),但没有一个有助于解决问题(如果可以解决的话?)

我从http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=118中获取代码作为基础并修复了已废弃的调用.除此之外,我在内存中即时生成了程序集,并且调用运行良好.我明确生成了一个包含Debug信息的程序集,这给了我希望:为什么在没有调试的情况下会有选项呢?

using System;
using System.Text;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;

namespace DynamicAssembly
{
    class CreateCompileExecute
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Creates a text file to store the new class
            StringBuilder builder = new StringBuilder();
            builder.AppendLine("using System;");
            builder.AppendLine("namespace CSharpFriendsRocks");
            builder.AppendLine("{");
            builder.AppendLine("class CSharpFriends");
            builder.AppendLine("{");
            builder.AppendLine("public CSharpFriends() {" +
                " Console.WriteLine(\"The CSharpFriends type is constructed\"); }");
            builder.AppendLine("public void HelloWorld() {" +
                " Console.WriteLine(\"Hello World - CSharpFriends.Com …
Run Code Online (Sandbox Code Playgroud)

.net c# debugging code-generation codedom

14
推荐指数
1
解决办法
5285
查看次数

如何自动将现有项添加到Visual Studio项目?

我有一个工具,可以动态 生成 .xaml和.xaml.cs文件,并将它们放在适当的Visual Studio 目录中.

要将它们添加到项目中,我必须:

  • 右键单击该目录
  • 选择"添加现有项目"
  • 导航到硬盘驱动器上的匹配目录
  • 选择已创建的两个文件
  • 点击确定

有没有办法让我告诉项目"包括硬盘上项目文件夹下的所有现有项目"?

code-generation visual-studio-2008 visual-studio

14
推荐指数
2
解决办法
2万
查看次数

如何更新Java构造函数,等于,哈希等.在日食?

我想知道是否有人知道在Java中使用eclipse生成的更新,构造函数,等于,散列,字符串等的好方法.很多时候,在我使用自动生成的代码存根之后,我将一个成员变量添加到类中,然后我需要删除自动生成的代码,并重新执行它.有没有办法让eclipse将新变量添加到自动生成的代码存根中?

编辑:确定删除不是必需的,但我仍然需要去生成它们,我正在寻找一个自动解决方案.

java eclipse code-generation

14
推荐指数
2
解决办法
1188
查看次数

我可以从FXML自动生成控制器类吗?

据我所知,当使用FXML描述Java FX场景时,手动编写控制器类,然后可以从.fxml文件中引用它的成员变量和方法.使用时加载场景FXMLLoader,成员变量设置为相应的场景元素,方法自动连接到相应的事件.这是有效的,但是非常麻烦,因为需要在两个地方进行更改,并且任何错误只会在运行时显示.

我见过其他GUI框架,它允许您从场景描述中生成控制器作为抽象类,需要实现它来访问场景元素并处理事件.我的意思的一个例子:

我将创建以下.fxml文件(例如,使用JavaFX Scene Builder):

<AnchorPane ... >
  <children>
     <Button fx:id="button" ... text="Button" onAction="#buttonPressed" />
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

在我的构建过程中的某个地方,.java将创建以下文件(例如,使用Maven插件):

abstract class TestController {
    protected final Parent root;
    protected final Button button;

    {
        // Load test.fxml file
        // Assign scene elements to root and button
        // Attach event handler to the button that calls buttonClicked()
    }

    protected abstract void buttonClicked(ActionEvent event);
}
Run Code Online (Sandbox Code Playgroud)

然后我可能会多次创建该控制器的具体实现:

final class …
Run Code Online (Sandbox Code Playgroud)

code-generation javafx fxml

14
推荐指数
3
解决办法
3万
查看次数

gcc的原子操作和代码生成

我正在考虑通过gcc查看为原子操作生成的一些程序集.我尝试了以下短序列:

int x1;
int x2;

int foo;

void test()
{
  __atomic_store_n( &x1, 1, __ATOMIC_SEQ_CST );
  if( __atomic_load_n( &x2  ,__ATOMIC_SEQ_CST ))
    return;

  foo = 4;
}
Run Code Online (Sandbox Code Playgroud)

看看Herb Sutter关于代码生成的原子武器谈话,他提到X86手册要求xchg用于原子存储和简单mov的原子读取.所以我期待的是:

test():
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    movl    $1, %eax
    xchg    %eax, x1(%rip)
    movl    x2(%rip), %eax
    testl   %eax, %eax
    setne   %al
    testb   %al, %al
    je      .L2
    jmp     .L1
.L2:
    movl    $4, foo(%rip)
.L1:
    popq    %rbp
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
Run Code Online (Sandbox Code Playgroud)

由于锁定 …

c assembly gcc code-generation atomic

14
推荐指数
1
解决办法
1399
查看次数

(Kotlin) Backend Internal error: Exception during code generation

I am creating a very thorough converter for Android with Kotlin, using the latest Android Studio Canary build and latest Kotlin. I am suddenly getting a compiling error, even thought Android Studio doesn't see any bug in the code, it is complaining about a backend error, so I think my project is good but the Android Studio has a bug?? Please help confirm, this has been a lot of work....

It is complaining about my class MassCalc, which is 6500 …

java android code-generation exception kotlin

14
推荐指数
4
解决办法
6364
查看次数