【问题标题】:How to use the APT tool to create exercises in course material如何使用 APT 工具在课程材料中创建练习
【发布时间】:2009-08-27 11:52:05
【问题描述】:

我正在编写有关如何编写系统集成工具插件的练习。我们将在练习后实施正确的答案以进行演示,但学生将收到一些方法为空的源代码,并且只是在其中包含一个 TODO 的注释来描述他们应该做什么。

为避免重复,如果学生的版本可以从可编译且正确的答案源文件中生成,那就太好了。让我印象深刻的是,Java 注释处理工具(即 APT,而不是 debian APT)可能用于生成练习,如果输入法带有注释,则 APT 将方法吐出为空。

使用 APT 可以做到这一点吗?如果是这样,如何做到这一点?

有没有更好/更简单的方法来避免重复,从单一来源生成练习和正确答案,我忽略了?

【问题讨论】:

    标签: java annotations apt


    【解决方案1】:

    虽然 APT 是可以做到的,但我并不认为 APT 是一种理想的方法。一般来说,APT 只应该让您生成新的人工制品并提供limited amount of structural information。您只能通过compiler-specific hacks 访问AST 树(就像Project Lombok 一样)。

    【讨论】:

      【解决方案2】:

      我不确定 APT 能否做到这一点,因为您需要访问源代码才能输出结果。

      您最好使用一个简单的程序来识别以注释为前缀的方法,并用学生的占位符替换打开和关闭大括号的方法的内容。

      另一种可能更简单的机制是使用自定义注释来标记可替换区域,然后仅处理此文件以获得结果。例如

      public class SomeClass {
         public SomeClass() {
            // real code here
         }
      
         public void someMethod() {
            //EXERCISE:START
            System.out("put some real compilable code here, "+
                       "that students will have to implement themselves");
            //EXERCISE:END
         }
      }
      

      然后,您只需编写一些简单的代码即可删除 cmets 和它们之间的内容。

      【讨论】:

      • 是的,神奇的 cmets 可能更好。我认为 awk 可以处理由匹配正则表达式的行界定的区域。我得调查一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2019-04-10
      • 2020-07-24
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多