Giter Site home page Giter Site logo

ricechecks's People

Contributors

danwallach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

jpratt-mru

ricechecks's Issues

Deprecated features of Gradle

Currently this:

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4/userguide/command_line_interface.html#sec:command_line_warnings

The problem seems to be the way we're calling project.javaexec:

gradle.buildFinished { ignoredResult ->
    project.javaexec {
        classpath = configurations.ricechecks
        main = "edu.rice.autograder.AutoGraderKt"
        args = [ "--project", gradeProject,
                 "--config", gradeConfig,
                 "grade" ]
    }
}

Possible solution: finalizedBy:
https://discuss.gradle.org/t/how-to-call-task-execution-from-outside-task/25971

automatic uploads to Sonatype

Here's a script that doesn't seem to do the job:

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            pom.withXml { fixPomXml(it) }
        }
    }
}

Deleted for now since it was throwing errors on Travis (and I don't want to set up username/password environment variables there.).

If we're going to release versions of RiceChecks on a regular basis, we need to get the uploading process properly automated. Manual upload sucks.

Simplify the annotation tags based on context

Example: if GradeTopic was attached to a class, then any Grade within that class that doesn't name a topic could "inherit" the stated topic and project.

Upsides: cleaner annotations.

Downsides: even more error checking and validation.

Coverage testing for lambdas

We probably want the lambdas' coverage stats to be accumulated alongside their containing classes, rather than being treated as separate classes for coverage purposes. This will require paying attention to the mangled names.

JDK8 support

Created a branch to experiment with this:
https://github.com/RiceComp215-Staff/RiceChecks/tree/jdk8-support

  • Changed all the examples to compile against Java8
    • Updated build.gradle files (notably, switching to a much older error-prone plugin)
    • Got rid of all the var declarations
    • List.of(...) to Arrays.asList(...)
  • Changed the core Kotlin code to use older Java8 APIs
    • Some APIs are too new, all easily downgraded

It's going to be all-JDK8 or all-JDK11. No easy way to mix them. Among other issues, we need to make sure all the generated libraries use the "version 53" classfiles, otherwise this happens in a JDK8 project trying to read JDK11 classfiles:

> Task :standaloneSort:compileJava FAILED
/Users/dwallach/IdeaProjects/RiceChecks/standaloneSort/src/main/java/edu/rice/sort/InsertionSort.java:9: error: cannot access GradeCoverage
import edu.rice.autograder.annotations.GradeCoverage;
                                      ^
  bad class file: /Users/dwallach/.gradle/caches/modules-2/files-2.1/edu.rice.ricechecks/ricechecks-annotations/0.5/780f06a5a0184415e1eab7e3ca34756690d8ee75/ricechecks-annotations-0.5.jar(/edu/rice/autograder/annotations/GradeCoverage.class)
    class file has wrong version 55.0, should be 53.0

Machine-readable autograder output

Make a flag to write autograder output to a file (YAML? JSON?) suitable for uploading elsewhere. Seems as good an interface for others to do uploads as anything.

GitHub annotations: provide more output

The autograders from GitHub Education all use the check_run facility to set annotations on the build. We should do this with the final score of the autograder.

Relevant code:

Relevant GitHub APIs:

Prior code that I wrote that works with the check-suites data:

Implementation strategy?

  • The main RiceChecks doesn't need to change, since it should run as-is on a student machine or in a cloud CI. Grading output in JSON format is already written to the filesystem. That will stick around.
  • A new RiceChecks tool would be run from GitHub Actions that would read the grading JSON and would manipulate annotations on the commit.
  • Kinda unclear: maybe we want to set up a "check run server" to run the unit tests on every commit and configure RiceChecks to run as a check suite?

Set up RiceChecks demonstration for anybody to play with

Currently no Kotlin support: gitpod-io/gitpod#83

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.