Понятно, что OpenRewrite имеет 3 основных метода создания рецептов: декларативный, рефастер и императивный. Речь идет о методе Refaster.
Я создал следующий класс шаблона Refaster для простого изменения кода — обеспечения того, чтобы деление происходило после умножения. (Просто пример для проверки возможностей OpenRewrite)
package com.self.openrewrite_lib.refaster;
import com.google.errorprone.refaster.annotation.AfterTemplate;
import com.google.errorprone.refaster.annotation.BeforeTemplate;
import org.openrewrite.java.template.RecipeDescriptor;
@RecipeDescriptor(name = "Multiply then divide formatter", description = "Ensures that divisions occur after multiplication for accuracy.")
public class MultiplyThenDivide {
@BeforeTemplate
public double divideThenMultiply(double original, double divisor, double multiplier) {
return original / divisor * multiplier;
}
@AfterTemplate
public double multiplyThenDivide(double original, double divisor, double multiplier) {
return original * multiplier / divisor;
}
}
После запуска компиляции mvn в терминале класс Recipe создается в каталоге target/generated-sources/annotations/com/self/openrewrite_lib/refaster .
package com.self.openrewrite_lib.refaster;
import org.jspecify.annotations.NullMarked;
import org.openrewrite.ExecutionContext;
import org.openrewrite.Preconditions;
import org.openrewrite.Recipe;
import org.openrewrite.TreeVisitor;
import org.openrewrite.java.JavaParser;
import org.openrewrite.java.JavaTemplate;
import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.search.*;
import org.openrewrite.java.template.Primitive;
import org.openrewrite.java.template.function.*;
import org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor;
import org.openrewrite.java.tree.*;
import javax.annotation.Generated;
import java.util.*;
import static org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor.EmbeddingOption.*;
/**
* OpenRewrite recipe created for Refaster template {@code MultiplyThenDivide}.
*/
@SuppressWarnings("all")
@NullMarked
@Generated("org.openrewrite.java.template.processor.RefasterTemplateProcessor")
public class MultiplyThenDivideRecipe extends Recipe {
/**
* Instantiates a new instance.
*/
public MultiplyThenDivideRecipe() {}
@Override
public String getDisplayName() {
return "Multiply then divide formatter";
}
@Override
public String getDescription() {
return "Ensures that divisions occur after multiplication for accuracy.";
}
@Override
public TreeVisitor\
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.3.4
com.self
openrewrite-lib
0.0.1-SNAPSHOT
openrewrite-lib
Demo project for Spring Boot
1.8
1.8
17
org.openrewrite.recipe
rewrite-recipe-bom
2.21.1
pom
import
org.springframework.boot
spring-boot-starter
org.openrewrite
rewrite-java
compile
org.openrewrite
rewrite-java-17
runtime
org.openrewrite
rewrite-yaml
compile
org.openrewrite
rewrite-templating
com.google.errorprone
error_prone_core
2.34.0
provided
com.google.auto.service
auto-service-annotations
javax.annotation
javax.annotation-api
1.3.2
org.projectlombok
lombok
1.18.34
true
org.springframework.boot
spring-boot-starter-test
test
org.openrewrite
rewrite-test
test
org.springframework.boot
spring-boot-maven-plugin
maven-surefire-plugin
3.0.0-M9
org.apache.maven.plugins
maven-compiler-plugin
3.13.0
17
17
-parameters
org.projectlombok
lombok
1.18.34
org.openrewrite
rewrite-templating
1.16.1
org.openrewrite.maven
rewrite-maven-plugin
5.42.2
com.self.openrewrite_lib.refaster.MultiplyThenDivideRecipe
Подробнее здесь: https://stackoverflow.com/questions/791 ... not-usable
OpenRewrite — рецепт шаблона рефастера недоступен для обнаружения и использования. ⇐ JAVA
Программисты JAVA общаются здесь
1729752307
Anonymous
Понятно, что OpenRewrite имеет 3 основных метода создания рецептов: декларативный, рефастер и императивный. Речь идет о методе Refaster.
Я создал следующий класс шаблона Refaster для простого изменения кода — обеспечения того, чтобы деление происходило после умножения. (Просто пример для проверки возможностей OpenRewrite)
package com.self.openrewrite_lib.refaster;
import com.google.errorprone.refaster.annotation.AfterTemplate;
import com.google.errorprone.refaster.annotation.BeforeTemplate;
import org.openrewrite.java.template.RecipeDescriptor;
@RecipeDescriptor(name = "Multiply then divide formatter", description = "Ensures that divisions occur after multiplication for accuracy.")
public class MultiplyThenDivide {
@BeforeTemplate
public double divideThenMultiply(double original, double divisor, double multiplier) {
return original / divisor * multiplier;
}
@AfterTemplate
public double multiplyThenDivide(double original, double divisor, double multiplier) {
return original * multiplier / divisor;
}
}
После запуска компиляции mvn в терминале класс Recipe создается в каталоге target/generated-sources/annotations/com/self/openrewrite_lib/refaster .
package com.self.openrewrite_lib.refaster;
import org.jspecify.annotations.NullMarked;
import org.openrewrite.ExecutionContext;
import org.openrewrite.Preconditions;
import org.openrewrite.Recipe;
import org.openrewrite.TreeVisitor;
import org.openrewrite.java.JavaParser;
import org.openrewrite.java.JavaTemplate;
import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.search.*;
import org.openrewrite.java.template.Primitive;
import org.openrewrite.java.template.function.*;
import org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor;
import org.openrewrite.java.tree.*;
import javax.annotation.Generated;
import java.util.*;
import static org.openrewrite.java.template.internal.AbstractRefasterJavaVisitor.EmbeddingOption.*;
/**
* OpenRewrite recipe created for Refaster template {@code MultiplyThenDivide}.
*/
@SuppressWarnings("all")
@NullMarked
@Generated("org.openrewrite.java.template.processor.RefasterTemplateProcessor")
public class MultiplyThenDivideRecipe extends Recipe {
/**
* Instantiates a new instance.
*/
public MultiplyThenDivideRecipe() {}
@Override
public String getDisplayName() {
return "Multiply then divide formatter";
}
@Override
public String getDescription() {
return "Ensures that divisions occur after multiplication for accuracy.";
}
@Override
public TreeVisitor\
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.3.4
com.self
openrewrite-lib
0.0.1-SNAPSHOT
openrewrite-lib
Demo project for Spring Boot
1.8
1.8
17
org.openrewrite.recipe
rewrite-recipe-bom
2.21.1
pom
import
org.springframework.boot
spring-boot-starter
org.openrewrite
rewrite-java
compile
org.openrewrite
rewrite-java-17
runtime
org.openrewrite
rewrite-yaml
compile
org.openrewrite
rewrite-templating
com.google.errorprone
error_prone_core
2.34.0
provided
com.google.auto.service
auto-service-annotations
javax.annotation
javax.annotation-api
1.3.2
org.projectlombok
lombok
1.18.34
true
org.springframework.boot
spring-boot-starter-test
test
org.openrewrite
rewrite-test
test
org.springframework.boot
spring-boot-maven-plugin
maven-surefire-plugin
3.0.0-M9
org.apache.maven.plugins
maven-compiler-plugin
3.13.0
17
17
-parameters
org.projectlombok
lombok
1.18.34
org.openrewrite
rewrite-templating
1.16.1
org.openrewrite.maven
rewrite-maven-plugin
5.42.2
com.self.openrewrite_lib.refaster.MultiplyThenDivideRecipe
Подробнее здесь: [url]https://stackoverflow.com/questions/79120652/openrewrite-refaster-template-recipe-is-not-discoverable-and-not-usable[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия