Bug 114369 Remove unused local and field too dangerous for multi quick fix
Version: 3.1.0 Build id: I20051025-0800 The two clean ups: Remove unused local variable and assignments without possible side effects and Remove unused private field and assignments without possible side effects are too dangerous to apply in a batch mode, at least without warning the user. Reason: private int i= methodWithSideEffect(); foo () { int j= methodWithSideEffect(); } in both cases i and j are removed as well as the two calls to methodWithSideEffect which will change the semantic of the program. Possible solutions: 1. Not having these two multi quick fixes 2. Warn the user 3. Only remove variables if this does not remove any method call 4. ?
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/UnusedCodeMultiFix.java
removePrivateFields.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
		removePrivateFields.setSelection(fRemoveUnusedPrivateFields);
		removePrivateFields.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				fRemoveUnusedPrivateFields= ((Button)e.getSource()).getSelection();
			}
		});
		
		Button removeLocals= new Button(composite, SWT.CHECK);
		removeLocals.setText(MultiFixMessages.UnusedCodeMultiFix_RemoveUnusedVariable_description);
		removeLocals.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
		removeLocals.setSelection(fRemoveUnusedLocalVariables);
		removeLocals.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				fRemoveUnusedLocalVariables= ((Button)e.getSource()).getSelection();
			}
		});
		
		return composite;
	}
	public void saveSettings(IDialogSettings settings) {
		settings.put(REMOVE_UNUSED_IMPORTS_SETTINGS_ID, fRemoveUnusedImports);
		settings.put(REMOVE_UNUSED_PRIVATE_METHODES_SETTINGS_ID, fRemoveUnusedPrivateMethods);
		settings.put(REMOVE_UNUSED_PRIVATE_CONSTRUCTORS_SETTINGS_ID, fRemoveUnusedPrivateConstructors);
		settings.put(REMOVE_UNUSED_PRIVATE_FIELDS_SETTINGS_ID, fRemoveUnusedPrivateFields);
		settings.put(REMOVE_UNUSED_PRIVATE_TYPE_SETTINGS_ID, fRemoveUnusedPrivateTypes);
		settings.put(REMOVE_UNUSED_LOCAL_VARIABLES_SETTINGS_ID, fRemoveUnusedLocalVariables);
	}
}