小编Ale*_*ndr的帖子

学生作业的持续整合

好的,所以这可能听起来有点奇怪,但在这里它.

我正在当地大学教授数据结构和算法实验室,并希望为我的学生提供各种流畅和有趣的体验.到目前为止,我使用了一个简单的git存储库,每个学生都分叉了,每当他们完成一个任务时,他们发出了一个push + pull请求,我会查看他们的代码,如果一切正常,我会将pull请求合并到main回购.这很好用,但我想做一些更有趣的事情.

该实验室正在用C语言教学(甚至不是C++)(不,我不想进入任何关于为什么另一种语言会更好的论战).我想要做的就是像学生制作的每次推动一样运行Jenkins构建,这可以验证手头任务的一些预定义测试.

例如,对于第2周,我会给他们一份带有列表的家庭作业.我想自己编写这个功课的测试,然后自动验证他们使用这些测试做了什么.

我有什么:

  • 24/7运行CentOS机器,我可以使用它来放置任何东西(我有Jenkins和Tomcat运行在它上面)
  • 足够的时间和意志力,试图让他们在这个实验室的经验值得一试

++一个非常好的'附加'到所有这些将是使用像声纳作为代码验证器和检查其分支内的重复代码(以查看是否有人复制了其他人的答案)

我是通过去Jenkins服务器,思考声纳等而走上正轨吗?我离开了吗?我不认为这是不可能的.它可能很难,是的,但这会让它变得有趣^^

我想要的'流量'是:

  • 每个学生都是git组织+回购的一部分
  • 他们从本地主人那里创建了一个分支(我会施加一个限制,比如'只使用带有你名字的子文件夹')
  • 主分支将包含测试
  • 他们将在他们的分支上完成他们的家庭作业,然后将其推送到Jenkins/Gerrit /等等
  • 将以某种方式测试分支,如果所有测试都通过,它将与主服务器合并.

我代表亲爱的学生们,谢谢你们.

git continuous-integration gerrit jenkins sonarqube

10
推荐指数
1
解决办法
580
查看次数

绑定不匹配:该类型不是绑定参数的有效替代

我最近开始实现一些数据结构,并且,我正在尝试使所有内容尽可能“可扩展”。

public abstract class AbstractNode<E extends Element, U extends AbstractNode<E, U>> { ... }

public class BinarySearchTree<Element> extends Tree<Element, Node<Element>> { ... }

public class Element implements Cloneable { ... }

public class Node<E extends Element> extends AbstractNode<E, Node<E>> { ... }

public abstract class Tree<E extends Element, T extends AbstractNode<E, T>> { ... }
Run Code Online (Sandbox Code Playgroud)

BinarySearchTree消息提示我在课堂上遇到很多错误Bound mismatch: The type Element is not a valid substitute for the bounded parameter <E extends Element> of the type Node<E>。为什么!?我在那里做错了什么?

另外,在BinarySearchTree类中,我得到了 …

java oop generics

0
推荐指数
1
解决办法
693
查看次数

标签 统计

continuous-integration ×1

generics ×1

gerrit ×1

git ×1

java ×1

jenkins ×1

oop ×1

sonarqube ×1