标签: code-generation

如何测试代码生成工具?

我目前正在开发一个我的小项目,它以动态方式生成SQL调用以供其他软件使用.SQL调用事先是未知的,因此我希望能够对生成SQL的对象进行单元测试.

您是否了解如何才能做到这一点的最佳方法?请记住,没有可能的方法来了解要生成的所有可能的SQL调用.

目前我唯一的想法是使用regex从db创建接受的SQL的测试用例,并确保SQL将编译,但这不能确保调用返回预期的结果.

编辑:添加更多信息:

我的项目是Boo的扩展,允许开发人员使用一组属性标记他的属性.此属性用于标识开发人员如何将对象存储在DB中.例如:

# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)] 
class MyObject():
    # Tells  the compiler that name is the PK
    [PrimaryKey(Size = 25)]
    [Property(Name)]
    private name as String

    [TableColumn(Size = 25)]
    [Property(Surname)]
    private surname as String

    [TableColumn()]
    [Property(Age)]
    private age as int
Run Code Online (Sandbox Code Playgroud)

好主意是生成的代码不需要使用反射,但它会在编译时添加到类中.是的,编译需要更长的时间,但根本不需要使用Reflection.我目前有代码工作生成所需的方法,在编译时返回SQL,它们被添加到对象并可以被调用,但我需要测试生成的SQL是否正确:P

database testing unit-testing code-generation

9
推荐指数
1
解决办法
252
查看次数

从Ontology创建Java类

我有一个本体文件(在RDF中),它表示我正在编写的应用程序中的实体.我正在使用Jena,可以通过直接操作三元组来访问Concepts并创建/访问资源.

为了简化操作,我创建了一组Java类,一个用于我的本体中每种类型的资源,同时记住它们的继承和属性.例如

public class Agent{
}
Run Code Online (Sandbox Code Playgroud)

和

public class Person extends Agent{
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

如果本体包含两种类型的资源,Agent并且Person后者是前者的子类.

我意识到创建这些类(以及提取它们的方法)的过程非常单调.如果我在数据库上编写应用程序,我会使用Hibernate的配置文件,并让它处理细节.

我的问题是:是否有可用的工具将本体(在RDF文件中)作为输入,并创建一组表示本体中的概念的Java文件,如上例所示?(或者,如果耶拿本身可以做到这一点,我错过了一些东西)

谢谢.

java rdf code-generation jena

9
推荐指数
1
解决办法
4373
查看次数

自动生成变量*name*以匹配您提供的参数?

R#4.5(欢迎回答5)
VS2008(欢迎回答VS2010)
C#(FWIW)

我正在使用构造函数(问题也适用于方法),并且有Intellisense:

Foo Constructor Intellisense,显示参数变量名称

我还没有为第一个参数"firstName"指定值.今天,我键入"firstName",然后让IDE为我创建该变量(我初始化为某个值).

我知道IDE会为我创建变量.我希望它为我创建变量名称.

我不想输入"firstName".我喜欢参数作者选择的变量名,我想在我的(调用)代码中使用该变量名.

有没有办法让我自动重新生成这些可接受的变量名称(调用代码),因为我按参数参数移动,通过这一行(调用)代码?

c# parameters resharper code-generation visual-studio

9
推荐指数
1
解决办法
2655
查看次数

代码生成器与ORM

我编写了一个代码生成器,为给定的SQL Server/CE数据库生成POCO和存储库.没有什么花哨的,只有简单的CRUD程序才能使用经典的ADO.Net.我的问题是,为什么我应该使用像L2S/EF4这样的ORM而不是自定义代码生成器?每隔2到3年,微软就会发布一些新的数据访问框架/技术,我知道很多开发人员不能总是与最新技术保持联系,但他们每个人都知道经典的ADO.Net,如何修改现有代码以及如何开发新功能.ORM工具是否带来了现在必须的东西,或者我可以坚持使用经典的ADO.Net?

谢谢!

orm ado.net code-generation

9
推荐指数
2
解决办法
3320
查看次数

如何以编程方式创建Visual Studio解决方案(.sln)文件,包括网站项目?

我正在开发一个代码生成器项目,该项目使用可自定义的层创建解决方案 现在我可以通过编写代码中的所有元素来创建.sln文件.但是项目文件不需要这个,可以使用MSBuild Project类进行编辑.

我想添加一个网站项目模板支持等,所以这样我编辑.sln文件并不酷,我想知道有更好的方法来做这个,比如MSBuild或其他什么?

我看到以编程方式生成Visual Studio解决方案,该解决方案说使用Visual Studio SDK(用于扩展visual studio,编写插件......),但是没有任何代码示例.

提前致谢

c# msbuild code-generation solution visual-studio

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

BNF的BNF是什么?即我们如何定义BNF元语法?

我试图定义BNF的BNF.换句话说,我试图定义BNF的元语法.也就是说,BNF语法是其自身的实例并且可以生成任何其他BNF语法.

任何提示/提示/片段将非常感谢!

谢谢!

compiler-construction code-generation

9
推荐指数
1
解决办法
2335
查看次数

我可以建议"生成方法存根"在Visual C#中存储新生成的代码吗?

我正在使用Microsoft Visual C#2010.

我在两个文件中有一个类:

file1.cs

partial class SomeClass {
    // something
}
Run Code Online (Sandbox Code Playgroud)

file2.cs

partial class SomeClass {
    // something else
}
Run Code Online (Sandbox Code Playgroud)

现在,在项目的第三位,当我写" SomeClass.SomeMethod() "并按下Alt + Shift + F10,并选择"生成方法存根..."时,它总是在file1.cs中创建代码.

我的问题是:是否有可能在file2.cs中给出指令,以及如何?

c# code-generation visual-studio-2010

9
推荐指数
1
解决办法
241
查看次数

对于跨平台的asp.net 5开发,有没有T4模板和EnvDTE的替代品?

我们目前使用T4模板生成基于C#代码(实体POCO)和EDMX(在旧应用程序中)的C#代码文件

迁移到ASP.NET 5以支持跨平台开发,是否有任何代码生成工具可以读取项目类和元数据结构,并在设计时生成C#文件,类似于T4模板?

t4 code-generation entity-framework-core asp.net-core

9
推荐指数
2
解决办法
4723
查看次数

使用SymPy codegen为方程组生成Fortran子例程

基于我在这里找到的前一个例子,我试图找出如何生成一个Fortran代码,该代码对应于我需要坚持的特定形式.所需的FORTRAN代码将如下所示(它基于FitzHugh-Nagumo模型):

  SUBROUTINE FF(NE,U,PAR,F) 
!     ---------- -- 
!     Define the nonlinear term

  IMPLICIT NONE
  INTEGER, INTENT(IN) :: NE
  DOUBLE PRECISION, INTENT(IN) :: U(NE),PAR(*)
  DOUBLE PRECISION, INTENT(OUT) :: F(NE)

  DOUBLE PRECISION u,v,e,a1,a0

    u=U(1)
    v=U(2)
    e=PAR(1)
    a1=PAR(2)
    a0=PAR(3)

    F(1)= u-u**3-v 
    F(2)= e*(u-a1*v-a0)

  END SUBROUTINE FF
Run Code Online (Sandbox Code Playgroud)

我设法在SymPy中创建正确的表达式,但我还没弄清楚如何生成所需的代码codegen.这是我到目前为止的尝试:

from sympy import symbols,latex
from sympy.utilities.codegen import codegen
from sympy.tensor import IndexedBase, Idx
from sympy import Matrix
U, PAR = symbols('U PAR', cls=IndexedBase)

u = U[1]
v = U[2]

e = …
Run Code Online (Sandbox Code Playgroud)

python code-generation sympy python-2.7 codegen

9
推荐指数
1
解决办法
248
查看次数

仅在Java或Kotlin注释异常变量时自动记录catch块

我想为Java或Kotlin做这个:给出下面的代码

try {...
} catch(@AutoLog e:Exception){// position1
}

在构建期间自动在position1添加日志记录语句.我可以使用AspectJ为catch块添加代码(对于Java和Kotlin),但它适用于所有catch块,我无法检查是否存在@AutoLog注释并且只在它出现时才添加代码.所以我想我必须转向Java(或KAPT for Kotlin)的APT(注释处理工具)?

顺便说一句,我在这里找到了一个KAPT代码生成示例:https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation ,但它会生成代码来分隔文件,而我想要的是do是修改原始文件/类并在catch块中添加语句.

java aop code-generation annotations kotlin

9
推荐指数
1
解决办法
162
查看次数