RFR: 7449: Add GitHub action to verify copyright year [v3]

Alex Ciminian duke at openjdk.java.net
Sat Dec 11 20:20:44 UTC 2021


> This PR adds a script to check copyright notices on changed files. I've not added a GitHub action yet, I'd like to get some feedback before doing that �� 
> 
> The script is written in Kotlin and uses [JGit](https://www.eclipse.org/jgit/) to interface with the git repository. To run, it only needs the kotlin compiler which is [preinstalled on GitHub Actions runners](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md).
> 
> It works as follows:
> 
> * diff the HEAD commit and the merge base between it and master (i.e. where the feature branch diverged from)
> * for every changed file (except deletions), validate the copyright header
>   - if the file is new, it should have Oracle and Datadog copyright starting from the year of the HEAD commit
>   - if the file is not new, it should keep the existing copyright holders and update the year range if necessary
> * we compare file contents from objects in the git repo, not the files themselves
> * currently we don't validate we're in the correct directory or the commits
> 
> The output looks like this:
> 
> 
> kotlinc -script scripts/copyrightchecker.main.kts                                                                                                                                                     
> Checked out at: 759788185939b16f447e553b3ee64121187ea311 (base: 8b8aa7c299b92b655ba669a92d16f193beb406bc)
> ⚪️ scripts/copyrightchecker.main.kts
> ✅ Validation succeeded
> 
> 
> 
> kotlinc -script scripts/copyrightchecker.main.kts                                                                                                                                                       
> Checked out at: 7ad43eed12c9eb85a96882c9518a9acbe12e74c5 (base: ca204424ce32336f2923aff66f619d571b1fc720)
> ⚪️ .gitignore
> �� application/org.openjdk.jmc.feature.flightrecorder/feature.xml
> �� Failed to parse:    Copyright (c) 2018, 2021 Oracle and/or its affiliates. All rights reserved.
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/.classpath
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/.gitignore
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/META-INF/MANIFEST.MF
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/build.properties
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/icons/heatmap.png
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/icons/heatmap at 2x.png
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/plugin.properties
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/plugin.xml
> �� application/org.openjdk.jmc.flightrecorder.heatmap/pom.xml
> Expected:
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
> 	Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
> 	Copyright (c) 2021, Datadog, Inc. All rights reserved.
> 
> 	DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> Actual:
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
>    Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
>    Copyright (c) 2021, Datadog, Inc. All rights reserved.
> 
>    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HE
> (check whitespace if strings seem to match)
> �� application/org.openjdk.jmc.flightrecorder.heatmap/src/main/java/org/openjdk/jmc/flightrecorder/heatmap/views/HeatmapView.java
> �� application/org.openjdk.jmc.flightrecorder.heatmap/src/main/resources/heatmap.js
> ⚪️ application/org.openjdk.jmc.flightrecorder.heatmap/src/main/resources/page.template
> �� application/pom.xml
> Expected:
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
> 	Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
> 
> 	DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> Actual:
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
>    Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
> 
>    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEAD
> (check whitespace if strings seem to match)
> 
> ❌ Validation failed

Alex Ciminian has updated the pull request incrementally with one additional commit since the last revision:

  Run copyright checker during validate workflow on linux

-------------

Changes:
  - all: https://git.openjdk.java.net/jmc/pull/342/files
  - new: https://git.openjdk.java.net/jmc/pull/342/files/82eb4012..f67d2fc8

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jmc&pr=342&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jmc&pr=342&range=01-02

  Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jmc/pull/342.diff
  Fetch: git fetch https://git.openjdk.java.net/jmc pull/342/head:pull/342

PR: https://git.openjdk.java.net/jmc/pull/342


More information about the jmc-dev mailing list