标签: code-generation

.Net - 检测所需标识符是否为关键字

在.net中,有没有办法检测某个单词是否是给定.net语言中的关键字?

我正在为这个项目使用一个相当简单的代码生成器,我想开始自动化它.现在我手工完成每一个,所以解决出现的任何问题都很容易.但是,一旦这种情况自动开始,我将需要一种方法来检测我需要用作标识符的单词是否是关键字.我仍然可以使用它,我只需要正确引用它.

我知道我可以简单地引用我生成的所有内容,但我想保持生成的代码很漂亮:)

我需要引用的一类例子:

vb:  Public [Class] As String = "CLASS"
c#:  public String @class = "CLASS";
Run Code Online (Sandbox Code Playgroud)

.net code-generation

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

自动测试生成?

目前我正在为报告功能编写测试,项目获得的功能越多,需要编写更多报告

在我的案例报告中得到一些"搜索"参数和限制,如行数等

现在我的问题:任何人都知道如何使用phpunit为一个具有众所周知的可能参数的函数自动生成测试用例?

我读了一些像其他语言的快速检查工具,但是为PHP存在自动测试生成吗?或者有人建议如何自动创建测试?

谢谢

php phpunit unit-testing code-generation

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

是否有任何免费工具可以帮助自动生成代码?

几个学期回来我有一个课,我们写了一个非常基本的方案解析器,最后是一个解释器.在课程结束后,我将解析器转换为C++解析器,只要我没有对预处理器或宏做任何事情,我就可以很好地解析C++.我可以用它来读取我的类和函数,并做一些巧妙的事情,比如自动生成类读者或编写器,或者从文本文件中设置函数回调.

但是,我的计划非常有限.我确信我可以花一些时间来使它更健壮并做更多整洁的事情,但如果已经有更强大的工具可以做同样的事情,我不想花费时间和精力.我认为必须有这样的东西,因为解析器是编译器的重要组成部分,但我还没有看到专门用于自动代码生成的工具,这使得它很容易通过并使用代表类,函数和数据的数据结构.特别是C++的变量.有没有这样的工具?

编辑:

希望这将澄清我正在寻找的一点点.我在Visual Studio中作为预建步骤运行的程序.它读取我的源文件,列出类,它们的成员,它们的功能等,然后用它们来生成新的代码.目前我只是使用它来轻松读取和写入我的数据结构到纯文本文件,但我也可以做其他事情.文件读取器和编写器输出到普通的.cpp和.h文件,我将其包含在项目的其余部分中,就像我任何其他文件一样.我正在寻找的是做类似事情的工具,所以我可以决定是继续使用自己的还是转而使用更好的解决方案.我不是在寻找任何可以生成机器代码或编辑代码的东西.

c++ code-generation

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

简单实用的C#代码生成(VS 2008或2010)

我推迟使用生成的代码作为构建过程的一部分,因为它担心它在构建过程中引入的复杂性.

有没有一种简单的方法可以将构建时生成的代码集成到应用程序中?

我正在考虑的代码类似于 Visual Studio执行的资源和设置文件代码生成:

  • 在这里进行智能感知很有价值
  • 属性之间有很多属性和链接,这些属性和链接很容易描述,但是不可能在C#中简洁地实现.
  • 底层资源是可修改的,代码自动重新生成,无需任何用户交互,也无需了解生成器的内部.

对于(非现实世界)示例,考虑通过类似命名的C#属性(或方法)生成对正则表达式的命名捕获组的访问者的预编译器.这是我想要生成的各种事物的典型:样板包装器的长片段,其主要功能是启用编译时检查错误(在上面;访问不存在的捕获组或写入和无效的正则表达式)和否不太重要的是,这些属性的智能感知.最后,这个设置应该可以由团队中的其他人轻松使用,只有极少的学习曲线.即,要求手动干预以重新生成代码是绝对不可接受的,也不能接受将生成的代码提交到源代码控制中.在最坏的情况下,每个人都应该只需要安装一些扩展; 理想情况下,扩展应该可以安装到源树中,这样任何签出树的人都可以在没有任何介绍的情况下构建项目.

为了使其运行良好,IDE集成非常重要:更新底层的"资源"定义文件应该触发 代码的重新生成而无需任何用户交互,理想情况下,生成器本身将很容易为其他开发人员维护(即一些发电机调试能力是一个加号).

最后,类似XSLT的方法是理想的,其中相同的模板可以应用于各种输入资源 ; 因为这意味着你甚至不需要查看实际的生成器代码,如果你想要做的就是更新资源,并且因为它使模板重用变得微不足道.

我看过T4,但是从我看到的这个方法有一个不太方便的ASP方法,模板和资源没有干净地分开(即,生成器负责查找资源 - 这使模板重用变得不那么容易).

是否有更好(更干净)的解决方案或运行T4的某种方式,以便可以轻松地重复使用相同的模板并且(很像.NET设置文件)资源的任何更新都会自动触发已实现代码的重新生成?

简介: 我正在寻找可以实现的代码方法

  1. 当底层资源(不是模板!)发生变化时,无需开发干预即自动重新生成代码.
  2. 维护起来有点简单
  3. 能够在多个资源之间共享相同的生成器模板(其中,#1点可能意味着资源应该引用生成器,反之亦然).

c# t4 code-generation visual-studio

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

在没有Visual Studio的情况下构建RIA服务项目

我正在尝试在持续集成服务器上构建支持RIA的Silverlight项目.没有安装Visual Studio.因此我错过了一些库/目标.

需要安装什么才能构建仅使用MSBuild的RIA项目?

msbuild wcf continuous-integration code-generation wcf-ria-services

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

在C++中自动生成代码

我想要一段不涉及循环但自动生成一些C++代码的代码.

我有一个const int d,从这里我想编写d行代码来访问一个数组.所以举个例子

for(int k=0; k<d;++k){
  // do something to myarryay[k];
}
Run Code Online (Sandbox Code Playgroud)

但我不想在for循环中写这个.我希望编译器执行,就好像编写了以下代码行:

do something to myarray[0]
do something to myarray[1]
.
.
.
do something to myarray[d]
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一些建议吗?

提前致谢.

c++ code-generation

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

以编程方式生成C#代码文件的干净,高效,绝对可靠的方法

我想知道是否有任何好方法以编程方式生成C#代码而不实际操作字符串或StringBuilders.此外,它应检查代码是否编译,但我想这可以使用CSharpCodeProvider完成.

我正在寻找以下内容:

CodeUnit unit = new CodeUnit();
unit.AddDefaultUsings();
unit.AddUsing("MyApi.CoolNameSpace", "MyApi.Yay");
var clazz = unit.AddClass("GeneratedClass", Access.Public);
clazz.AddConstructor("....");
if(unit.Compile() != true)
    //oh dang, somethings wrong!
else unit.WriteUTF8To("GeneratedClass.cs");
Run Code Online (Sandbox Code Playgroud)

这可能是核心库的一部分(不要认为CSharpCodeProvider可以做到这一点?)或外部库,但这根本不是我的强项(使用c#动态生成代码),所以如果这看起来毫无头绪,那是因为我!

.net c# code-generation

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

混合WaveMaker/Java项目 - 怎么做?

WaveMaker是一个生成Java和Javascript代码的RAD工具 - 所以:

  1. 应该将哪些文件签入版本控制,哪些文件应该被忽略?
  2. 如果我想自定义生成的代码会发生什么?我的定制会被默默覆盖吗?
  3. 可以自定义代码往返WaveMaker吗?
  4. 如何在WaveMaker外部进行数据库更改 - 它们可以进行往返式转换吗?
  5. 如果我对生成的代码进行更改,这会改变问题1的答案吗?
  6. 或者,是否应该避免直接定制生成的代码?如果是这样,应该做些什么呢?

version-control code-generation roundtrip wavemaker

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

从C#中的动态生成POCO

.NET 4.5中是否有任何内容可以从dynamic具有所有自动实现属性的字符串生成字符串C#POCO ?

如果没有,是否有任何内置于.NET中的内容(类似于a),List<KeyValuePair<string, Type>>以便我们可以根据伪代码生成POCO:

foreach (var kvp in list)
{
    builder.AppendFormat("public {0} {1} {{ get; set; }}", kvp.Value, kvp.Key);
}
Run Code Online (Sandbox Code Playgroud)

最后,有没有任何知名的库可以帮助这种非常基本的代码生成?

c# reflection code-generation dynamic poco

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

CodeDom如何创建一个void返回类型的方法?

public void CreateMethod()
{
    CodeMemberMethod mymethod = new CodeMemberMethod();
    mymethod.Name = testMethod;
    CodeTypeReference ctr = new CodeTypeReference();
    //Assign the return type to the method.
    mymethod.ReturnType = ctr;

    CodeSnippetExpression snippet1 = new CodeSnippetExpression("AutomationBase obj = new AutomationBase()");
    CodeSnippetExpression snippet2 = new CodeSnippetExpression("obj.Execute(testCases[1])");       
    CodeExpressionStatement stmt1 = new CodeExpressionStatement(snippet1);
    CodeExpressionStatement stmt2 = new CodeExpressionStatement(snippet2);
    mymethod.Statements.Add(stmt1);
    mymethod.Statements.Add(stmt2);
    mymethod.Attributes = MemberAttributes.Public;
    myclass.Members.Add(mymethod);
}
Run Code Online (Sandbox Code Playgroud)

产量

 public virtual void TestCaseId002() {
            AutomationBase obj = new AutomationBase();
            obj.Execute(testCases[1]);
        }
Run Code Online (Sandbox Code Playgroud)

获得虚拟无效

我只需要无效.

.net c# asp.net code-generation codedom

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