标签: code-generation

如何使用 eclipse 模板自动插入类符号?

有人知道如何使用 Eclipse 模板在类签名上方插入“@RunWith 注释”吗?

前任。:

@RunWith(Parameterized.class)
public class MyClassTest {
...
    @Parameters
    public static Collection<Object[]> parameters() {
        List<Object[]> list = new ArrayList<Object[]>();
        list.add(new Object[] { "mind!", "find!" });
        list.add(new Object[] { "misunderstood", "understood" });
        return list;
    }
...
}
Run Code Online (Sandbox Code Playgroud)

__

模板:

// TODO: move this '@RunWith(Parameterized.class)' to class anotation
    @Parameters
    public static Collection<Object[]> parameters() {
        ${type:elemType(collection)}<Object[]> parametersList = new ${type:elemType(collection)}<Object[]>();
        ${cursor}// TODO: populate collection
        return parametersList;
    }
Run Code Online (Sandbox Code Playgroud)

__ 谢谢您的帮助!

java eclipse code-generation eclipse-templates

5
推荐指数
1
解决办法
1434
查看次数

自动生成的 Python 构造函数

我有无数来自 SQLAlchemy 的各种项目的 Python 类(还有一些来自 Pygame 的项目),我最近注意到其中许多项目中的一个模式:它们的构造函数总是这样:

class Foo(Base):
    def __init__(self, first, last, email, mi=""):
        self.first = first
        self.last = last
        self.email = email
        self.mi = mi
Run Code Online (Sandbox Code Playgroud)

...由此构造函数所做的唯一一件事就是将一组位置参数传输到一组完全相同命名的数据成员中,不执行任何计算或其他函数调用。

在我看来,这种重复是不必要的,并且在更改时容易出现人为错误。

这让我想到了一个问题:是否可以自动生成这样的__init__(self, ...)函数,最好不要乱用 CPython 字节码或使用模板/宏来改变源文件本身?

python constructor code-generation data-members

5
推荐指数
1
解决办法
2966
查看次数

Xcode 4 中的源代码生成

我有一个项目,其中大量 C++ 代码是从一些元描述自动生成到多个文件中的。每当发生新构建时,如何让 Xcode 4 自动将这些文件添加到项目中?

注意:我知道构建阶段和自定义脚本,但我能找到的只是与资源相关的:将资源文件复制到最终的应用程序包。就我而言,我需要让 Xcode 4 自动将这些自动生成的文件注入应用程序构建过程中...

xcode code-generation

5
推荐指数
1
解决办法
807
查看次数

使用机器学习生成代码

我对机器学习非常感兴趣。我有一个想法来开发一个可以根据给定标准生成源代码的程序。例如,如果我已经训练系统如何向控制台写入内容以及使用变量的标准方式,那么它应该能够为我要求将某些内容打印到控制台的任何内容生成源代码,同样。有没有资源源码或者现有的开源项目?

code-generation artificial-intelligence machine-learning neural-network

5
推荐指数
1
解决办法
3592
查看次数

围绕现有的 .net 库生成 .net dll 包装器

我有一个名为 ExpensiveAndLargeObfuscatedFoo.dll 的 dll。让我们说它定义了一个名为 ExpensiveAndLargeObfuscatedFooSubClass 的类型。它是为 .NET 编译的。

是否有任何工具(免费、付费等)可以生成 c# 或 vb 类文件,这些文件除了环绕这个昂贵的 dll 中定义的所有内容外什么都不做?这样我就可以添加功能、修复错误(CorpFUBAR 不会修复)、添加日志记录等?

从字面上看,我想要看起来像这样的输出

namespace easytoread {
    public class SubClass {
        private ExpensiveAndLargeObfuscatedFoo.SubClass _originalSubClass;
        public SubClass() {
            this._originalSubClass = new ExpensiveAndLargeObfuscatedFoo.SubClass ();
        }
        public string StupidBuggyMethod(string param1,int param2) {
            return _originalSubClass.StupidBuggyMethod(param1, param2);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它必须处理自定义返回类型以及原语

namespace easytoread {
    public class SubFooClass {
        private ExpensiveAndLargeObfuscatedFoo.SubFooClass _originalSubFooClass;
        public SubFooClass() {
            this._originalSubFooClass= new ExpensiveAndLargeObfuscatedFoo.SubFooClass ();
        }
        private SubFooClass(ExpensiveAndLargeObfuscatedFoo.SubFooClass orig) {
            this._originalSubFooClass = orig;
        }
        public SubFooClass StupidBuggyMethod(string …
Run Code Online (Sandbox Code Playgroud)

.net c# clr code-generation wrapper

5
推荐指数
1
解决办法
2824
查看次数

在 Eclipse 中从 XML 生成 Java 代码

我正在开发一个项目,该项目将包含几个彼此非常相似的 Java 类,并且我想从 XML 文件生成这些类。我希望能够做的是改变 Eclipse 构建过程来做这样的事情:

  • 编译代码生成器
  • 运行代码生成器,将 XML 转换为 Java
  • 编译项目的其余部分

我可以手动完成这一切,但我更愿意让 Eclipse 为我完成这一切。

例子

我希望能够采用如下所示的源 XML 文件:

<command-list>
    <command name="DATE" />
    <command name="GROUP">
        <capability "READER" />
        <argument "groupname" />
    </command>
    <command name="ARTICLE">
        <capability "READER" />
        <argument "message-id" optional="true" />
    </command>
</command-list>
Run Code Online (Sandbox Code Playgroud)

并让它给我类似于以下内容(在适当的单独文件中):

public class Date extends Command {
    public ResponseCode execute() {
        Server srv = getServer();
        srv.send("DATE");
        return srv.getResponse();
    }
}

public class Group extends Command {
    public ResponseCode execute() {
        Server srv = getServer();
        if (srv.hasCapability(Capabilities.READER) …
Run Code Online (Sandbox Code Playgroud)

java xml eclipse code-generation eclipse-m2t-jet

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

带有@MappedSuperclass 的 JPA 静态元模型(带有一些 Generation Gap 模式)

我试图用 JPA 实体实现 Generation Gap Pattern。这是我们选择的解决方案( <-- 是继承)

BaseEntity <-- EntityGenerated <-- Entity
Run Code Online (Sandbox Code Playgroud)

EntityGenerated 类型是抽象的并使用@MappedSuperclass 映射,所有字段都使用正确的映射注释生成,关系指向具体的子类,而不是 Generated 。

Entity 是一个具体的类型,只有当类不存在时才生成,最初只有用@Entity 注释的类声明。其他映射属性(如@Table 等)位于生成的 orm.xml 中。

现在,当我们生成 jpa 静态元模型(使用 hibernate 或 openjpa 元模型生成器)时,生成的类如下所示:

public class BaseEntity_ {
    public static volatile SingularAttribute<PersistentDomainObject,Long> id;
    public static volatile SingularAttribute<PersistentDomainObject,Long> timeStamp;
}

public class UserGenerated_ extends BaseEntity_ {
    public static volatile SetAttribute<UserGenerated,Group> groups;
}

public class User_ extends UserGenerated_  {
}
Run Code Online (Sandbox Code Playgroud)

如果我想在 jpa 条件查询中使用 User_,我将执行以下操作:

CriteriaQuery<User> query = criteriaBuilder.createQuery(User.class);
Root<User> root = query.from(User.class);
query.where(root.get(User_.groups).in(paramGroups));
Run Code Online (Sandbox Code Playgroud)

但它不会编译.... User_.groups …

code-generation jpa criteria-api metamodel

5
推荐指数
0
解决办法
2241
查看次数

Visual Studio体系结构代码生成 - 创建列表<type>而不是IEnumerable <type>

是否可以在Visual Studio(2013)类图中配置一个关联,以便在从它生成代码时创建一个具有类型List<MyClass>甚至ICollection<MyClass>是默认值的属性IEnumerable<MyClass>?

c# code-generation visual-studio

5
推荐指数
1
解决办法
865
查看次数

为什么jOOQ建议将生成的代码放在"/ target"下而不是"/ src"下?

查看代码生成器的Maven插件配置的jOOQ示例(接近配置的末尾),我看到生成的文件的目标目录是target/generated-sources/jooq.

由于生成器生成Java代码,你知道为什么这里的建议不是一个子文件夹/src,而是一个完全分离的子文件夹?这有什么理由吗?这是最佳做法还是什么?

java sql code-generation maven jooq

5
推荐指数
1
解决办法
1246
查看次数

自动生成替换方法

为正在制作的应用程序创建语言文件时,我遇到了很多样板代码。我目前有一个包含所有语言字符串的类,然后使用反射将这些字符串写入文件。

我经常碰到的是,我的字符串中有一些要替换的占位符,例如,我可能有一个像这样的字符串:

public static String USER_INFO = "Username: %name% money: %balance%";

我想实现的是基于注释生成一些方法,例如我可以使用lombok生成getter / setter和其他方法。根据上面的字符串,我将有一个注释Arguments(应该正确地命名为“替换者”或更有意义的东西),如下所示:

@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface Arguments {
  String[] value();
}
Run Code Online (Sandbox Code Playgroud)

我想做的就是添加这样的注释:

@Arguments(
        value = {"%balance%", "%name%"}
)
public static String USER_INFO = "Username: %name% - money: %balance%";
Run Code Online (Sandbox Code Playgroud)

并自动生成以下替换方法:

public static String USER_INFONameReplacement(String name) {
    return USER_INFO.replace("%name%", name);
}
public static String USER_INFOAllReplacement(String name, String balance) {
    return USER_INFO.replace("%name%", name).replace("%balance%", balance);
}
public static String USER_INFOBalanceReplacement(String balance) {
    return USER_INFO.replace("%balance%", balance);
}
Run Code Online (Sandbox Code Playgroud)

经过一些搜索之后,我最终尝试在这样的类中实现AbstractProcessor:

@SupportedAnnotationTypes(
    {"io.github.freakyville.configHelper.annotations.Arguments"})
@SupportedSourceVersion(SourceVersion.RELEASE_8) …
Run Code Online (Sandbox Code Playgroud)

java code-generation annotations

5
推荐指数
1
解决办法
233
查看次数