gradle-lint-plugin
rewrite
Our great sponsors
gradle-lint-plugin | rewrite | |
---|---|---|
3 | 24 | |
735 | 1,761 | |
2.4% | 5.6% | |
6.9 | 9.9 | |
16 days ago | 1 day ago | |
Groovy | Java | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gradle-lint-plugin
-
Learning in public: Lessons from open source
A little more than two years ago, in October 2019, I began work on my first significant open source project, the Dependency Analysis Gradle Plugin. I had just left a job where I had done relatively little coding, was taking a month off, and wanted to get back into a building mode and learn some new things. I decided to explore the domain of unused-dependency detection. The nearest competitor I was aware of was the Gradle Lint Plugin from the Netflix Nebula collection. However, as that plugin has never supported Android projects, that meant I had an exploitable niche—if only I could exploit it.
-
Large-Scale Automated Source Code Refactoring with OpenRewrite
Semgrep’s focus is on static analysis/search and is based on rules that developers need to write in a new DSL. Autofix is experimental and is one pattern replaced with another. https://semgrep.dev/docs/experiments/overview/
OpenRewrite originated to do transformations of code, specifically to remove a Netflix proprietary logging library and replace it with in SLF4J. The predecessor of OpenRewrite was Gradle Lint (https://github.com/nebula-plugins/gradle-lint-plugin), commonly used to update Gradle build configuration. OpenRewrite added search after transformation and search can be very flexible (search for all usages of a particular package/any method, not just a specific method invocation). Instead of being DSL based, OpenRewrite provides a set of building blocks called recipes that can be combined together to create more powerful recipes. When building blocks are not enough, you can write a custom recipe in the same language as what you are managing. Java for Java and TypeScript for JavaScript/TypeScript (coming soon).
For example, you can see JUnit 4 to 5 migration recipe contains a set of pre-built and custom recipes.
-
is there a way to find out unused dependencies in a spring boot project
Also found Gradle Nebula Lint https://github.com/nebula-plugins/gradle-lint-plugin/wiki
rewrite
- FLaNK Weekly 31 December 2023
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
If you're into this sort of thing, there's OpenRewrite[1] for the Java ecosystem.
-
What's New in Spring Framework 6.1
> Spring has gotten so bloated.
I'd call Spring feature-rich than bloated. You can always shed weight that you don't want to carry.
> Plus there's multiple ways of doing the same thing. e.g. JPA, spring-data.
That's because there are different ways to solve a problem. Someone may want an ORM-based approach to connect to the database; they can choose spring-data-jpa. Someone may want to use JDBC with a light abstraction on top of it; they can choose spring-data-jdbc. It's all about choices and right tradeoffs and Spring offers plenty of them.
> they don't provide easy upgrade paths between majors versions
That's not my experience. I've been happily upgrading 2.x.x versions and plan to upgrade to 3.2.x when it is ready. But depending on the codebase, I admit it can be painful. Projects like OpenRewrite[1] might help here.
> and they stop updating vulnerabilities on older major versions.
This is not news. They want you to pay for extended support if you need it.
> No docs on migration.
They do maintain migration docs on GitHub wiki which are a lot more detailed than their blog posts on migration. Here's the latest one to upgrade from Spring Boot 2 to 3: https://github.com/spring-projects/spring-boot/wiki/Spring-B...
-
Any ideas on how to automate upgrade of legacy Spring Framework/Spring Boot repositories?
Openrewrite would probably be a big help, see https://docs.openrewrite.org
-
what is your favorite programming trick/tool that not many People know about?
In a similar vein there is OpenRewrite which is an open-source project that works in a similar way. It also has a lot of great refactorings already built in, like doing all the grunt work for migrating to JUnit 5, or replacing string concatenation in SLF4J log calls with parameterized formatting.
-
What are your thoughts on Spring in 2023?
https://github.com/openrewrite/rewrite might help
-
Whats a good tool for applying code changes to many repos
We use openrewrite as our way to run code transformations on lots of repositories automatically. You still need to invest a good amount of time in tooling to actually apply the transformations but it's a compiler plugin so it can support sophisticated transforms.
-
Blackhat 2022 recap – Trends and highlights
Well, openRewrite has been introduced, an automated software refactoring to keep up to date with API changes, fix vulnerabilities, and improve code quality and the Moderne platform to manage the entire process. The talk explained three vulnerabilities (temporary directory hijacking, Partial path traversal, and Zip Slip) and focused on java language.
-
Decluttering Google Guava
You could try to automate the conversion with OpenRewrite.
-
UPGRADE TO MICRONAUT 3
There is also a tool to make your life upgrading easier. OpenRewrite has a Gradle (and Maven) plugin to refactor your code. Add the plugin, dependency and task as follows:
What are some alternatives?
JavaParser - Java 1-17 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.
gradle-dependency-analyze - Dependency analysis plugin for gradle
Gradle - Adaptable, fast automation for all
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
aws-ip-ranges - Tracking the history and size of AWS's ip-ranges.json file
cl-cuda - Cl-cuda is a library to use NVIDIA CUDA in Common Lisp programs.
spring-cloud-dataflow - A microservices-based Streaming and Batch data processing in Cloud Foundry and Kubernetes
groovy-android-gradle-plugin - A Gradle plugin to support the Groovy language for building Android apps
rbac-police - Evaluate the RBAC permissions of Kubernetes identities through policies written in Rego
kooder - 🔍An open source GitLab/Gitee/Gitea code search tool. Kooder 是一个为 Gitee/GitLab 开发的开源代码搜索工具,这是一个镜像仓库,主仓库在 Gitee。
phantom-attack - POC for Phantom Attack