java-refactoring-remove-parameter — скилл для GitHub Copilot
Скилл помогает находить неиспользуемые или выводимые из контекста параметры Java-методов и удалять их вместе со всеми вызовами. Подходит для рефакторинга, когда важно сохранить поведение и проверить тесты.
npx skills add github/awesome-copilot --skill java-refactoring-remove-parameter -a claude-codeЧто делает java-refactoring-remove-parameter
Скилл предлагает проверить, действительно ли параметр не используется или может быть получен из поля, константы либо другого параметра. Затем нужно найти все вызовы и проверить иерархию методов, отражённые вызовы, конфигурацию и возможное влияние на перегрузки. В примерах показано удаление параметра из метода и конструктора.
Перед изменениями он требует запустить подходящий тестовый набор; после правки тесты запускают повторно. Если исходная проверка не проходит или у затронутого кода нет тестов, скилл предлагает остановиться. Для публичного или защищённого API, а также сгенерированного кода, нужно сначала спросить пользователя. Установите его, если хотите проводить такие изменения Java по проверяемому плану; для простого поиска параметров без изменения кода он не нужен.
Какие задачи решает
- найти неиспользуемые параметры методов Java
- удалить параметр из объявления и всех вызовов
- проверить переопределения и ссылки на метод
- сохранить побочные эффекты аргумента при изменении вызова
- сравнить результаты тестов до и после рефакторинга
Примеры запросов агенту
- Найди неиспользуемые параметры в этом Java-модуле и сначала проверь тесты.
- Удали параметр `context` из этого метода, если он действительно не используется; обнови вызовы и запусти тесты.
- Проверь, не затронет ли удаление параметра переопределения, отражённые вызовы или публичный API.
Как установить java-refactoring-remove-parameter
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill java-refactoring-remove-parameter -a claude-code2Вручную: положить файлы
~/.claude/skills/java-refactoring-remove-parameter/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/java-refactoring-remove-parameter/
Вручную: положить файлы
.agents/skills/java-refactoring-remove-parameter/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/java-refactoring-remove-parameter/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill java-refactoring-remove-parameter2GitHub CLI
gh skill install github/awesome-copilot java-refactoring-remove-parameter3Вручную: положить файлы
.github/skills/java-refactoring-remove-parameter/SKILL.mdКомандой платформы
gemini skills install https://github.com/github/awesome-copilot --path skills/java-refactoring-remove-parameterВручную: положить файлы
.devin/skills/java-refactoring-remove-parameter/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о java-refactoring-remove-parameter
Как установить java-refactoring-remove-parameter в GitHub Copilot?
Выполните npx skills add github/awesome-copilot --skill java-refactoring-remove-parameter. Также доступна команда gh skill install github/awesome-copilot java-refactoring-remove-parameter.
Что делает java-refactoring-remove-parameter?
Скилл помогает находить неиспользуемые или выводимые параметры Java-методов и убирать их из сигнатур и вызовов. Он задаёт проверки тестов и возможных зависимостей перед правкой.
Что делать, если у затронутого кода нет тестов?
Скилл предписывает остановиться и сначала предложить characterization tests. Удалять или ослаблять существующие тесты нельзя.
Исходный текст
SKILL.md · MIT
---
name: java-refactoring-remove-parameter
description: 'Refactoring using Remove Parameter in Java Language'
---
# Refactoring Java Methods with Remove Parameter
## Role
You are an expert in refactoring Java methods.
Below are **2 examples** (with titles code before and code after refactoring) that represents **Remove Parameter**.
## Code Before Refactoring 1:
```java
public Backend selectBackendForGroupCommit(long tableId, ConnectContext context, boolean isCloud)
throws LoadException, DdlException {
if (!Env.getCurrentEnv().isMaster()) {
try {
long backendId = new MasterOpExecutor(context)
.getGroupCommitLoadBeId(tableId, context.getCloudCluster(), isCloud);
return Env.getCurrentSystemInfo().getBackend(backendId);
} catch (Exception e) {
throw new LoadException(e.getMessage());
}
} else {
return Env.getCurrentSystemInfo()
.getBackend(selectBackendForGroupCommitInternal(tableId, context.getCloudCluster(), isCloud));
}
}
```
## Code After Refactoring 1:
```java
public Backend selectBackendForGroupCommit(long tableId, ConnectContext context)
throws LoadException, DdlException {
if (!Env.getCurrentEnv().isMaster()) {
try {
long backendId = new MasterOpExecutor(context)
.getGroupCommitLoadBeId(tableId, context.getCloudCluster());
return Env.getCurrentSystemInfo().getBackend(backendId);
} catch (Exception e) {
throw new LoadException(e.getMessage());
}
} else {
return Env.getCurrentSystemInfo()
.getBackend(selectBackendForGroupCommitInternal(tableId, context.getCloudCluster()));
}
}
```
## Code Before Refactoring 2:
```java
NodeImpl( long id, long firstRel, long firstProp )
{
this( id, false );
}
```
## Code After Refactoring 2:
```java
NodeImpl( long id)
{
this( id, false );
}
```
## Safety Rules
- Behaviour-preserving only. Remove a parameter only if it is truly unused or derivable (field, constant, other parameter); never remove one that is read, even if "redundant" by convention.
- Baseline first: run the narrowest green test command (`./mvnw -q -Dtest=MyTest test`, `./gradlew test --tests MyTest`) or `./mvnw verify` / `./gradlew build`, and re-run after the change. If the baseline is red, stop and report.
- If the affected code has no tests, stop and report; propose characterization tests first. Never delete or weaken tests.
- Find every usage before changing a signature: use LSP find-references (`lsp-setup`/jdtls) and grep across all modules, including tests. Also check:
- overrides and interface implementors (`@Override`, abstract/default methods, functional interfaces, method references): the whole hierarchy must change together;
- reflection and string-based lookups (`getMethod`, `getDeclaredMethod`, `MethodHandle`, proxies), and Spring/CDI/Quarkus/Jakarta annotated methods (`@Bean`, `@EventListener`, `@Scheduled`, `@Inject`, `@Path`, `@Observes`, `@PostConstruct`), which a compiler will not flag;
- constructors used by serialization/deserialization or JPA/Jackson (`@JsonCreator`, `@ConstructorBinding`, `readObject`), and `serialVersionUID` impact;
- XML/properties/YAML configuration and AOP pointcut expressions naming the method;
- public or protected API consumed by other modules or published artifacts.
- Ask the user before changing public/protected/published API (prefer deprecating and adding an overload) or touching generated code.
- One parameter per step (one commit each when the user asks for commits). Prefer the jdtls Change Method Signature refactoring when available; otherwise update the declaration and all callers together.
- Removing a parameter can make an overload collide with an existing signature or change overload resolution; check this. Evaluating the argument at the call site may have had side effects: keep them if they matter.
## Task
Apply **Remove Parameter** to improve readability, coupling and consistency.
1. Identify unused or derivable parameters.
2. Remove each from the declaration and from all callers, then compile and run the tests.
3. Add a one-line comment only where the removal is non-obvious; otherwise explain it in the report.
4. Report parameters removed, callers updated, the commands run and their results, and anything left unverified (e.g. reflective or external callers).
## Code to be Refactored:
Now, assess all methods with unused parameters and refactor them using **Remove Parameter**
© github · MIT · github/awesome-copilot