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

Alex Ciminian duke at openjdk.java.net
Wed Mar 2 18:03:12 UTC 2022


On Sat, 11 Dec 2021 20:20:44 GMT, Alex Ciminian <duke at openjdk.java.net> wrote:

>> 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

I've put the script in a gist here: https://gist.github.com/cimi/3c623176fd0a2cab2dc8c4696178baf3

I'll close this PR, if you have ideas on how to run this if we write it in Java (and if you think it's worth it), I'm happy to port the code ��

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

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


More information about the jmc-dev mailing list