标签: code-generation

寻找独立的命令行代码生成器脚本

我正在寻找一个库或命令行脚本,它允许我创建我可以从命令行生成的自定义模板.铁轨脚手架发电机上的红宝石几乎与我想做的相同.我甚至更喜欢用Ruby编写(但它不能要求Rails,因为我可能不会在Ruby应用程序中使用它).这样的脚本已经有哪些?

code-generation template-engine

20
推荐指数
2
解决办法
7196
查看次数

使用包含类型提示的宏生成Clojure代码

我正在尝试使用类型提示生成一些Clojure代码,但是每当我构建一些代码时类型提示似乎都消失了(它们在代码编译时也不起作用)

例如

`(let [^BufferedImage b (create-buffered-image)] 
   (.getRGB b 0 0))

=> (clojure.core/let [user/b (user/create-buffered-image)] (.getRGB user/b 0 0))
Run Code Online (Sandbox Code Playgroud)

我不确定为什么类型提示正在消失,但我认为它与读者处理metatdata的方式有关.

在生成的代码中创建正确类型提示的正确方法是什么?

macros code-generation metaprogramming clojure type-hinting

20
推荐指数
1
解决办法
1588
查看次数

Spring Framework中的CGLIB是什么?

什么是CGLIB以及它与Spring的关系?在使用Spring Framework时,我们是否必须明确定义CGLIB的用法?

spring code-generation cglib

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

从单元测试自动生成类?

我正在寻找一种可以进行单元测试的工具,比如

IPerson p = new Person();
p.Name = "Sklivvz";
Assert.AreEqual("Sklivvz", p.Name);
Run Code Online (Sandbox Code Playgroud)

并自动生成相应的存根类和接口

interface IPerson         // inferred from IPerson p = new Person();
{
    string Name 
    { 
        get;              // inferred from Assert.AreEqual("Sklivvz", p.Name);
        set;              // inferred from p.Name = "Sklivvz";
    }
}

class Person: IPerson     // inferred from IPerson p = new Person();
{
    private string name;  // inferred from p.Name = "Sklivvz";

    public string Name    // inferred from p.Name = "Sklivvz";
    {
        get
        {
            return name;  // inferred from Assert.AreEqual("Sklivvz", …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing code-generation

19
推荐指数
1
解决办法
1200
查看次数

从SQL 2008中的外键关系生成删除语句?

是否可以通过脚本/工具基于表fk关系生成删除语句.

即我有表:DelMe(ID)并且有30个表格,其中我需要首先删除其ID的fk引用,是否有一些我可以运行的工具/脚本将生成基于FK关系的30个删除语句为了我 ?

(顺便说一下我知道关于级联删除的关系,我不能在这个现有的db中使用它)

我正在使用Microsoft SQL Server 2008

sql code-generation foreign-keys dynamic-sql

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

控制Clojure宏中的符号生成

我正在尝试(作为一种自学练习)创建一个Clojure宏,它将生成代码以将函数应用于整数序列并对结果求和,例如

f(0)+ f(1)+ f(2)+ f(3)

这是我的尝试:

(defmacro testsum [func n] 
  `(fn [x#] (+ ~@( map (fn [i] `(~func x#)) (range n)))))
Run Code Online (Sandbox Code Playgroud)

然而,x#gensym似乎出现了问题,我最终得到了两个不同版本的x,因此该函数不起作用:

(macroexpand '(testsum inc 3))
Run Code Online (Sandbox Code Playgroud)

得到:

(fn* ([x__809__auto__] 
  (clojure.core/+ 
    (inc x__808__auto__) 
    (inc x__808__auto__) 
    (inc x__808__auto__))))
Run Code Online (Sandbox Code Playgroud)

除了不同的809和808版本的x之外,这几乎是我想要的......

我究竟做错了什么?我认为自动gensym旨在为这种目的创造一个独特的符号?有没有更好的方法呢?

macros code-generation symbols clojure

19
推荐指数
1
解决办法
2666
查看次数

测试代码生成器优化

我已经为LLVM代码生成器后端编写了一个低级优化.基本上,优化将在基本块级重新排序汇编指令,以允许稍后(现有)优化更有效地优化结果代码.我想验证一些测试用例,我想对测试过程提出一些建议,因为这是我第一次尝试这样的测试.

到目前为止我考虑过的事情:

  1. 编译用C编写的基准测试,并检查使用该-S选项生成的ASM .我已经完成了这项工作,并将结果与​​我的优化结果进行了比较.这个方法让我看到我的优化工作,但即使我编写自定义的非可执行C文件,我也无法检查所有我想要的指令排序测试用例.

  2. 将基准编译到LLVM程序集,编辑它,然后将ASM降低到目标机器程序集.这可能有效,但是由于LLVM和目标ASM之间的抽象级别不同,我怀疑我能够通过攻击LLVM ASM来检查所有测试用例,直到它生成我想要的内容为止.

  3. 使用目标ASM测试用例作为LLVM的输入,并使用新的优化重新编译.我无法为LLVM或gcc(LLVM接受的大多数选项)找到一个选项来接受ASM作为输入.

在验证低级ASM编译器优化时,测试特定ASM测试用例的好策略是什么?LLVM(或gcc)是否有一些命令行选项可以使这个过程更容易?


编辑:为了澄清,我不是要求自动生成ASM测试用例; 我的问题是我有那些测试用例(例如,ASM_before.sreference_ASM_after.s),但我需要能够传入ASM_before.sLLVM并确保优化的输出ASM_after.s与已知的好reference_ASM_after.s.我正在寻找一种方法来做到这一点,而无需"反编译" ASM_before.s成高级语言,然后将其编译(优化)到ASM_after.s.

testing assembly gcc code-generation llvm

19
推荐指数
1
解决办法
871
查看次数

基于模板的C/C++代码生成

有关C/C++模板基本代码生成器的任何建议,专门用于生成重复代码生成?(不是基于UML/MATLAB模型或其他高级的东西).对于这个领域的新手任何好的通用教程(不是基于工具)?

我遇到了GNU Autogen看起来不错,但看起来它需要一个陡峭的学习曲线.我更喜欢一些像Eclipse这样的eclipse插件,易于使用,最重要的是很好的教程.

c code-generation

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

从Java生成LLVM代码

我想使用Java的LLVM代码生成框架.

也就是说,我希望Java代码编译成LLVM.我只想要一个用于代码生成的LLVM库,我可以从Java调用它.通常的LLVM库是C,所以我不能使用它.

有没有Java端口?如果不是,那么最简单的方法是什么呢?将API包装到JNI中?

java code-generation llvm

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

Python打包:在安装时生成python文件,使用tox

我想在安装时生成一个python文件.

我想既这项工作python setup.py develop,python setup.py installpip install.到现在为止还挺好.

但是我也希望这与tox一起使用.这是我遇到问题的地方.

我使用的方法是调整developinstall命令以在setup.py中生成源代码,如下所示:

# make code as python 3 compatible as possible
from __future__ import absolute_import, division, print_function, unicode_literals

import subprocess
import setuptools
import os.path
import distutils.core

from setuptools.command.develop import develop
from setuptools.command.install import install


# Build anltr files on installation
#   this is such a mess... it looks like there are
#   no common steps to develop and install

class AntlrDevelopCommand(develop): …
Run Code Online (Sandbox Code Playgroud)

python code-generation build setuptools tox

19
推荐指数
1
解决办法
740
查看次数