标签: code-generation

7
推荐指数
2
解决办法
3751
查看次数

从Object生成DTO

我想从我的一些现有对象中自动生成一些DTO,我想知道是否已经存在Resharper,DevExpress或VSX开源使用,我需要一个工具来查看我的代码并让我选择我想要的属性包含在我的DTO中,然后基于该类生成一个类...

resharper vsx code-generation devexpress visual-studio-2008

7
推荐指数
2
解决办法
1605
查看次数

编写单元测试时要测试什么?

我想开始对我们的应用程序进行单元测试,因为我相信这是与测试建立良好关系的第一步,并允许我分支到其他形式的测试,最有趣的是带有Cucumber的BDD.

我们目前使用Codesmith生成所有Base类,它们完全基于数据库中的表.我很好奇使用这些Base类生成测试用例的好处?这是不好的测试实践吗?

这让我想到了我的帖子的终极问题.使用单元测试时我们测试什么?

我们是否测试了我们想知道的例子?还是我们测试我们不想要的例子?

他们可以采用多种失败方式和多种成功方式,我们如何知道何时停止?

以Summing函数为例.给它1,2并且在唯一的单元测试中期望3 ..我们怎么知道5,6不回来35?

问题回顾

  • 生成单元测试(好/坏)
  • 我们测试什么/多少?

testing unit-testing code-generation

7
推荐指数
2
解决办法
312
查看次数

C#如何从代码生成代码

是否可以根据同一项目中的代码生成和构建一些c#代码.我试过T4和Reflection,但是有一些装配锁定问题.还有其他方法吗?

c# code-generation

7
推荐指数
1
解决办法
5825
查看次数

存储过程生成器工具

我正在寻找能够为给定表生成基本存储过程结构(CRUD操作)的工具,是否有相同的工具?

sql-server code-generation stored-procedures

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

如何从数据库生成对象@Entities?

我想@Entity从数据库生成JPA (但我希望它是面向对象的).例如

@Entity
@Table(name = "badges")
public class Badges implements java.io.Serializable {

    private Integer id;
    private User user;
    private String name;
    private String date;
Run Code Online (Sandbox Code Playgroud)

如果它还支持ManyToOne,OneToMany,Parent和ManyToMany,那将会很酷.

PS我试过JBoss Tools(Hibernate Tools),但我没有为我工作.

java code-generation hibernate jpa

7
推荐指数
1
解决办法
5457
查看次数

c ++状态机生成器

您是否了解任何开源状态机c ++代码生成器(可在Linux上运行)?理想情况下,该工具将输出所有状态机逻辑和存根.它也会接受UML或人类可读的清单文件作为输入.

c++ code-generation state-machine

7
推荐指数
2
解决办法
8438
查看次数

如何使用Roslyn CTP将尾随行添加到AttribueList

我试图[DataContractAttribute]使用Roslyn CTP语法生成一些属性.不幸的是,Roslyn将属性放在与属性相同的行上.

这是我得到的:

[DataContract]public int Id { get; set; }
[DataContract]public int? Age { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:

[DataContract]
public int Id { get; set; }
[DataContract]
public int? Age { get; set; }
Run Code Online (Sandbox Code Playgroud)

发电机代码:

string propertyType = GetPropertyType();
string propertyName = GetPropertyName();
var property = Syntax
    .PropertyDeclaration(Syntax.ParseTypeName(propertyType), propertyName)
    .WithModifiers(Syntax.TokenList(Syntax.Token(SyntaxKind.PublicKeyword)))
    .WithAttributeLists(
        Syntax.AttributeList(
            Syntax.SeparatedList<AttributeSyntax>(
                Syntax.Attribute(Syntax.ParseName("DataContract")))))
    .WithAccessorList(
        Syntax.AccessorList(
            Syntax.List(
                Syntax.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration)
                    .WithSemicolonToken(Syntax.Token(SyntaxKind.SemicolonToken)),
                Syntax.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration)
                    .WithSemicolonToken(Syntax.Token(SyntaxKind.SemicolonToken))
        )));
Run Code Online (Sandbox Code Playgroud)

在将这些属性包装在类,命名空间和最后的CompilationUnit之后,我使用以下代码来获取字符串结果:

var compUnit = Syntax.CompilationUnit().WithMembers(...);
IFormattingResult fResult = compUnit.Format(new FormattingOptions(false, 4, 4));
string result = fResult.GetFormattedRoot().GetText().ToString();
Run Code Online (Sandbox Code Playgroud)

.net c# code-generation roslyn

7
推荐指数
2
解决办法
2690
查看次数

在.NET 4.5中动态生成代码的最简单方法是什么?

我正在编写一种特定的对象映射器.基本上我想从一个转换DataTable,其具有的字段a,b并c以具有属性的对象a,b并且c(该对象的类别的将由手写).将有许多不同的DataTable和许多不同的类需要映射到,所以我想制作一个执行此数据复制的通用机制.基本上,我想要以下功能:

public T Map<T>(DataTable t) where T: new() { ... }
Run Code Online (Sandbox Code Playgroud)

现在,我可以用Reflection做到这一点,但这很慢.该功能将成为框架的核心,并将经常使用.所以我在考虑动态代码生成.第一次在特定的方法上运行此方法时T,它将执行必要的反射并发出一个匿名方法,该方法执行所有适当的映射.下次它将运行该代码.这应该尽可能高效.

只有一个问题 - 我从未在运行时发出代码.我怎么做?我看了Expressions,但他们只能表达,而不是一系列的陈述.

然后是CodeDOM和CSharpCodeProvider.那种工作 - 我可以生成C#代码作为字符串,在运行中编译它然后获得引用.但它涉及C#编译器并生成一个全新的内存中程序集.听起来有点......重量级的一个简单的方法.

有一些更简单的方法吗?生成轻量级匿名方法的东西没有附加到任何程序集(或附加到现有程序集)?


好的,因为人们问了一个例子.

这是一个手工编写的课程

class MyBusinessObject
{
    public int a;
    public string b { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是一个手工准备的DataTable(在现实生活中,它将来自一个外部库):

DataTable t = new DataTable();
t.AddColumn("a", typeof(int));
t.AddColumn("b", typeof(string));
t.AddRow(42, "Meaning");
Run Code Online (Sandbox Code Playgroud)

这是应该动态生成的方法:

(DataRow drow, MyBusinessObject o) =>
{
    o.a = (int)drow["a"];
    o.b = (string)drow["b"]; …
Run Code Online (Sandbox Code Playgroud)

.net code-generation

7
推荐指数
1
解决办法
2208
查看次数

phpstorm生成类型为提示的setter

在phpstorm中,您可以通过alt+ insert> setters>选择变量来为类成员生成setter方法来生成setter方法.

但是,即使phpstorm知道变量的类型/类,它也不会在参数列表中插入类型提示.

如何让phpstorm生成带有类型提示的setter,但仅限于类型hintable类型?

示例类

class CodeGenerationTest {
    /* @var \DateTimeInterface */
    private $date;
    /* @var int */
    private $num;
}
Run Code Online (Sandbox Code Playgroud)

所需的生成的setter应该是:

/**
 * @param DateTimeInterface $date
 */
public function setDate(DateTimeInterface $date)
{
    $this->date = $date;
}

/**
 * @param int $num
 */
public function setNum($num)
{
    $this->num = $num;
}
Run Code Online (Sandbox Code Playgroud)

setNum是正确的,但setDate生成时缺少参数的类型提示:

/**
 * @param DateTimeInterface $date
 */
public function setDate($date)
{
    $this->date = $date;
}
Run Code Online (Sandbox Code Playgroud)

php code-generation phpstorm

7
推荐指数
1
解决办法
2851
查看次数