标签: code-generation

有什么方法可以让 TStringList.CommaText 不使用引号转义逗号?

我正在做一些代码生成工作,我需要做的一件事是创建一个函数调用,其中一个参数是函数调用,如下所示:

result := Func1(x, y, Func2(a, b, c));
Run Code Online (Sandbox Code Playgroud)

TStringList.CommaText 对于生成参数列表非常有用,但是当我遍历树以构建外部函数调用时,我最终得到的结果如下:

result := Func1(x, y, "Func2(a, b, c)");
Run Code Online (Sandbox Code Playgroud)

它引用了第三个参数,因为它包含逗号,并且产生了无效代码。但是我不能做一些像 StringReplace 所有双引号为空字符串这样简单的事情,因为函数参数很可能是一个带有双引号的字符串。有没有办法让它不转义包含逗号的行?

delphi code-generation escaping tstringlist

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

有没有好的 C++ 模板引擎

有谁知道一个好的 C++ 模板引擎?因为,我的目标是尝试生成 C++ 和 Python 代码,给出一个模板和需要在该模板中填写的内容的描述,简而言之,我正在尝试做一些类似 cayenne 的事情,但对于 C++ 和 Python,使用C++ 处理器。因为它对我的其他项目自动生成持久性代码很有用。

提前致谢。

c++ code-generation template-engine processor

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

Maven 使用 AnnotationProcessor 构建,它解析 src/main/java 中的文件并生成源到 generate-test-sources/test-annotations

我正在使用 maven 3.0.3 和 Java7。

我有一个 AnnotationProcessor,它应该解析src/main/java( not src/test/java ) 中带注释的 java 文件并为 JUnit-Tests 生成 Helper-Classes。这些助手类应该存储在其中,target/generated-test-sources/test-annotations因为它们使用仅在测试范围内可用的库。(注意:只要此依赖项不在测试范围内,一切都可以正常工作,但是构建会立即失败。它绝对只需要在测试范围内/在单元测试和测试类编译期间。)

我尝试了几种配置但没有任何运气:

  1. 我将 配置为maven-compiler-plugin在compile:compile. 生成的 HelperClass 将存储在generated-sources/annotations. 未在generated-test-sources/test-annotations如需要的话。结果是,不会使用测试范围的依赖项。由于编译错误“找不到符号”,构建失败。失败

  2. 我使用了上面的配置并重新定义了生成的SourcesDirectory:

    <generatedSourcesDirectory>
       ${project.build.directory}/generated-test-sources/test-annotations
    </generatedSourcesDirectory>
    
    Run Code Online (Sandbox Code Playgroud)

    生成的类将按generated-test-sources/test-annotations预期存储,但构建仍然失败,因为它尝试按照上述方式编译该文件并错过了测试范围的依赖项。失败

  3. 我尝试使用上述配置并排除**/generated-test-sources/test-annotations/**/*.java以防止编译器在此阶段编译:

    <excludes>
       <exclude>**/generated-test-sources/test-annotations/**/*.java</exclude>
    </excludes>
    
    Run Code Online (Sandbox Code Playgroud)

    没运气。与上述相同的编译器错误。失败

  4. 我将 配置为maven-compiler-plugin在test-compile:testCompile. 该助手类理论上可能已经在发生generated-test-sources/test-annotations,但AnnotationProcessor会在位于在注释类不失足src/main/java,不src/test/java,这是编译范围的过程中AFAIK test-compile:testCompile。因此不会找到 Annotated 类,不会生成 HelperClass,因此无法存储在generated-test-sources. 失败

  5. 试图在compile:testCompileand期间运行它test-compile:compile,这在两种情况下都会导致 src/main/java …

java unit-testing code-generation annotations maven

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

TT发电机中的辅助方法

我试图在我的T4生成器中放入一个辅助方法,使一些生成逻辑更简单,但我不能让它正确编译.我想稍后在.tt中使用这个助手(不要将它作为输出生成)

如果我把以下内容

<#
    public static void Test()
    {
    }
#>
Run Code Online (Sandbox Code Playgroud)

要么

<#
    public static class Helpers 
    {
        public static void Test()
        {
        }
    }
#>
Run Code Online (Sandbox Code Playgroud)

在我的.tt中我得到以下错误

编译转换:}预期

有没有办法做到这一点?

c# t4 code-generation

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

如何使用自定义模板生成代码?

是否有任何工具可以使用我定义的自定义模板生成代码(文本文件)?例如,它应该有可能包含一些函数的多个模板(我可以指定和参数化)并将它们放在一个类文件模板中。

你知道有什么高级软件可以帮助我吗?IDE 中的文件模板(如 Webstorm)对我来说太简单了。

code-generation

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

在matlab中具有多个匹配的switch-case用于代码生成

以下代码是有效的matlab sytax,用于检查是否b匹配中的任何元素a.但是,如果代码用于代码生成(即simulink),那么我得到错误:

'code generation only supports cell operations for varargin and varargout  
Run Code Online (Sandbox Code Playgroud)

您可以通过%#codegen在脚本顶部添加来检查这一点.)

a={2 3};
b=3;
switch b
    case a
        disp yay
    otherwise
        disp boo
end
Run Code Online (Sandbox Code Playgroud)

case在代码生成兼容代码中,我应该如何匹配语句中的多个模式?

以下内容对我不起作用:

case a(1) || a(2) %//with a=[2, 3] above, since cells not allowed

case a(:)
Run Code Online (Sandbox Code Playgroud)

matlab code-generation simulink switch-statement matlab-coder

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

如何在 Gradle 中使用 jOOQ 自定义代码生成器策略?

这类似于这个问题,但我们使用的是 Gradle。假设我们直接在我们的构建脚本中使用 jOOQ 的代码生成,如文档中规范的描述。

有两个问题。首先,我们将strategy在生成器配置中添加一个新的,这应该很简单:

// ...
generator() {
    // ...
    strategy() {
        name('com.example.MyCustomGeneratorStrategy')
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我们println使用结果 XML 配置,该name元素会神秘地被省略(并且也是无声的):

<generator>
    <!-- ... -->
    <strategy />
</generator>
Run Code Online (Sandbox Code Playgroud)

其次,可以使用什么机制来预编译生成器策略类 ( com.example.MyCustomGeneratorStrategy) 并使其在构建脚本的类路径中可用?这里可能存在一个问题:策略代码依赖于 jOOQ 的 codegen 模块(并且也可能有其他依赖项 - 例如我们的依赖于 Apache Commons Lang)。

java code-generation gradle jooq

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

/ dev/urandom错误(webhost拒绝权限)

我正在使用功能:

private function random($len) {
        if (@is_readable('/dev/urandom')) {
            $f=fopen('/dev/urandom', 'r');
            $urandom=fread($f, $len);
            fclose($f);
        }

        $return='';
        for ($i=0;$i<$len;++$i) {
            if (!isset($urandom)) {
                if ($i%2==0) mt_srand(time()%2147 * 1000000 + (double)microtime() * 1000000);
                $rand=48+mt_rand()%64;
            } else $rand=48+ord($urandom[$i])%64;

            if ($rand>57)
                $rand+=7;
            if ($rand>90)
                $rand+=6;

            if ($rand==123) $rand=52;
            if ($rand==124) $rand=53;
            $return.=chr($rand);
        }
        return $return;
    }
Run Code Online (Sandbox Code Playgroud)

我有一些触发此功能的表单,我收到错误:

int(2)string(200)"is_readable():open_basedir限制生效.文件(/ dev/urandom)不在允许的路径内:

有没有办法替换这个功能而不使用/dev/urandom?非常感谢你.

php random code-generation

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

将 python 对象转换为 python AST-nodes

我需要将修改后的 python 对象转储回源代码。所以我尝试找到一些东西将真正的python对象转换为python ast.Node(稍后在astorlib中使用以转储源代码)

我想要的用法示例,Python 2:

import ast
import importlib

import astor


m = importlib.import_module('something')

# modify an object
m.VAR.append(123)

ast_nodes = some_magic(m)

source = astor.dump(ast_nodes)
Run Code Online (Sandbox Code Playgroud)

请帮我找到那个 some_magic

python code-generation

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

Graphql 中的架构和文档有什么区别?

Graphql 中的架构和文档有什么区别?

架构是这样的:

type Query {
   fo: String
}
Run Code Online (Sandbox Code Playgroud)

但文件是这样的:

query SomeQuery {
  foo {
    bar
  }
}
Run Code Online (Sandbox Code Playgroud)

规范真的很混乱https://graphql.github.io/graphql-spec/June2018/#sec-Language.Document

我总是使用模式,但对于 graphql-code-generator 中的客户端类型生成,它需要文档文件。https://graphql-code-generator.com/docs/getting-started/documents-field

code-generation graphql

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