Merge branch 'develop' of github.com:sleuthkit/autopsy into report_index_and_search
@ -36,10 +36,10 @@ GetTagNameDialog.tagNameExistsTskCore.msg=The {0} tag name already exists in the
|
|||||||
OpenLogFolder.error1=Log File Not Found: {0}
|
OpenLogFolder.error1=Log File Not Found: {0}
|
||||||
OpenLogFolder.CouldNotOpenLogFolder=Could not open log folder
|
OpenLogFolder.CouldNotOpenLogFolder=Could not open log folder
|
||||||
CTL_OpenLogFolder=Open Log Folder
|
CTL_OpenLogFolder=Open Log Folder
|
||||||
CTL_OpenOutputFolder=Open Output Folder
|
CTL_OpenOutputFolder=Open Case Folder
|
||||||
OpenOutputFolder.error1=Output Folder Not Found\: {0}
|
OpenOutputFolder.error1=Case Output Folder Not Found\: {0}
|
||||||
OpenOutputFolder.noCaseOpen=No open case, therefore no current output folder available.
|
OpenOutputFolder.noCaseOpen=No open case, therefore no current case output folder available.
|
||||||
OpenOutputFolder.CouldNotOpenOutputFolder=Could not open output folder
|
OpenOutputFolder.CouldNotOpenOutputFolder=Could not open case output folder
|
||||||
ShowIngestProgressSnapshotAction.actionName.text=Get Ingest Progress Snapshot
|
ShowIngestProgressSnapshotAction.actionName.text=Get Ingest Progress Snapshot
|
||||||
OpenPythonModulesFolderAction.actionName.text=Python Plugins
|
OpenPythonModulesFolderAction.actionName.text=Python Plugins
|
||||||
OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python plugins folder not found: {0}
|
OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python plugins folder not found: {0}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2017 Basis Technology Corp.
|
* Copyright 2011-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -35,7 +35,7 @@ import org.sleuthkit.autopsy.casemodule.Case;
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The action associated with the Tools/Open Output Folder menu item. It opens a
|
* The action associated with the Tools/Open Case Folder menu item. It opens a
|
||||||
* file explorer window for the root output directory for the currently open
|
* file explorer window for the root output directory for the currently open
|
||||||
* case. If the case is a single-user case, this is the case directory. If the
|
* case. If the case is a single-user case, this is the case directory. If the
|
||||||
* case is a multi-user case, this is a subdirectory of the case directory
|
* case is a multi-user case, this is a subdirectory of the case directory
|
||||||
@ -44,7 +44,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
|||||||
* This action should only be invoked in the event dispatch thread (EDT).
|
* This action should only be invoked in the event dispatch thread (EDT).
|
||||||
*/
|
*/
|
||||||
@ActionRegistration(displayName = "#CTL_OpenOutputFolder", iconInMenu = true, lazy = false)
|
@ActionRegistration(displayName = "#CTL_OpenOutputFolder", iconInMenu = true, lazy = false)
|
||||||
@ActionReference(path = "Menu/Tools", position = 1850, separatorBefore = 1849)
|
@ActionReference(path = "Menu/Case", position = 302)
|
||||||
@ActionID(id = "org.sleuthkit.autopsy.actions.OpenOutputFolderAction", category = "Help")
|
@ActionID(id = "org.sleuthkit.autopsy.actions.OpenOutputFolderAction", category = "Help")
|
||||||
public final class OpenOutputFolderAction extends CallableSystemAction {
|
public final class OpenOutputFolderAction extends CallableSystemAction {
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ public final class OpenOutputFolderAction extends CallableSystemAction {
|
|||||||
try {
|
try {
|
||||||
Desktop.getDesktop().open(outputDir);
|
Desktop.getDesktop().open(outputDir);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.SEVERE, String.format("Failed to open output folder %s", outputDir), ex); //NON-NLS
|
logger.log(Level.SEVERE, String.format("Failed to open case output folder %s", outputDir), ex); //NON-NLS
|
||||||
NotifyDescriptor descriptor = new NotifyDescriptor.Message(
|
NotifyDescriptor descriptor = new NotifyDescriptor.Message(
|
||||||
NbBundle.getMessage(this.getClass(), "OpenOutputFolder.CouldNotOpenOutputFolder", outputDir.getAbsolutePath()), NotifyDescriptor.ERROR_MESSAGE);
|
NbBundle.getMessage(this.getClass(), "OpenOutputFolder.CouldNotOpenOutputFolder", outputDir.getAbsolutePath()), NotifyDescriptor.ERROR_MESSAGE);
|
||||||
DialogDisplayer.getDefault().notify(descriptor);
|
DialogDisplayer.getDefault().notify(descriptor);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2017 Basis Technology Corp.
|
* Copyright 2011-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -61,6 +61,11 @@ class CaseInformationPanel extends javax.swing.JPanel {
|
|||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
tabbedPane.getSelectedComponent().setSize(tabbedPane.getSelectedComponent().getPreferredSize());
|
tabbedPane.getSelectedComponent().setSize(tabbedPane.getSelectedComponent().getPreferredSize());
|
||||||
|
if (tabbedPane.getSelectedComponent() instanceof CasePropertiesPanel) {
|
||||||
|
editDetailsButton.setVisible(true);
|
||||||
|
} else {
|
||||||
|
editDetailsButton.setVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -2172,7 +2172,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
|||||||
}
|
}
|
||||||
CorrelationAttributeInstance eamArtifactInstance = new CorrelationAttributeInstance(
|
CorrelationAttributeInstance eamArtifactInstance = new CorrelationAttributeInstance(
|
||||||
new CorrelationCase(resultSet.getInt("case_id"), resultSet.getString("case_uid"), resultSet.getString("case_name")),
|
new CorrelationCase(resultSet.getInt("case_id"), resultSet.getString("case_uid"), resultSet.getString("case_name")),
|
||||||
new CorrelationDataSource(-1, resultSet.getInt("case_id"), resultSet.getString("device_id"), resultSet.getString("name")),
|
new CorrelationDataSource(resultSet.getInt("case_id"), -1, resultSet.getString("device_id"), resultSet.getString("name")),
|
||||||
resultSet.getString("file_path"),
|
resultSet.getString("file_path"),
|
||||||
resultSet.getString("comment"),
|
resultSet.getString("comment"),
|
||||||
TskData.FileKnown.valueOf(resultSet.getByte("known_status"))
|
TskData.FileKnown.valueOf(resultSet.getByte("known_status"))
|
||||||
|
@ -198,10 +198,10 @@
|
|||||||
<file name="org-openide-actions-ToolsAction.shadow_hidden"/>
|
<file name="org-openide-actions-ToolsAction.shadow_hidden"/>
|
||||||
<file name="org-sleuthkit-autopsy-filesearch-FileSearchAction.shadow">
|
<file name="org-sleuthkit-autopsy-filesearch-FileSearchAction.shadow">
|
||||||
<attr name="originalFile" stringvalue="Actions/Tools/org-sleuthkit-autopsy-filesearch-FileSearchAction.instance"/>
|
<attr name="originalFile" stringvalue="Actions/Tools/org-sleuthkit-autopsy-filesearch-FileSearchAction.instance"/>
|
||||||
<attr name="position" intvalue="200"/>
|
<attr name="position" intvalue="104"/>
|
||||||
</file>
|
</file>
|
||||||
<folder name="RunIngestModules">
|
<folder name="RunIngestModules">
|
||||||
<attr name="position" intvalue="201"/>
|
<attr name="position" intvalue="105"/>
|
||||||
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.sleuthkit.autopsy.ingest.Bundle"/>
|
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.sleuthkit.autopsy.ingest.Bundle"/>
|
||||||
<file name="org-sleuthkit-autopsy-ingest-RunIngestAction.shadow">
|
<file name="org-sleuthkit-autopsy-ingest-RunIngestAction.shadow">
|
||||||
<attr name="originalFile" stringvalue="Actions/Tools/org-sleuthkit-autopsy-ingest-RunIngestAction.instance"/>
|
<attr name="originalFile" stringvalue="Actions/Tools/org-sleuthkit-autopsy-ingest-RunIngestAction.instance"/>
|
||||||
@ -213,7 +213,7 @@
|
|||||||
</file>-->
|
</file>-->
|
||||||
<file name="org-sleuthkit-autopsy-report-ReportWizardAction-separatorAfter.instance">
|
<file name="org-sleuthkit-autopsy-report-ReportWizardAction-separatorAfter.instance">
|
||||||
<attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
|
<attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
|
||||||
<attr name="position" intvalue="104"/>
|
<attr name="position" intvalue="199"/>
|
||||||
</file>
|
</file>
|
||||||
<!--<file name="Separator1.instance_hidden"/>
|
<!--<file name="Separator1.instance_hidden"/>
|
||||||
<file name="Separator3.instance_hidden"/>-->
|
<file name="Separator3.instance_hidden"/>-->
|
||||||
|
@ -202,7 +202,7 @@ public class ViewContextAction extends AbstractAction {
|
|||||||
undecoratedParentNode.setChildNodeSelectionInfo(new ContentNodeSelectionInfo(content));
|
undecoratedParentNode.setChildNodeSelectionInfo(new ContentNodeSelectionInfo(content));
|
||||||
TreeView treeView = treeViewTopComponent.getTree();
|
TreeView treeView = treeViewTopComponent.getTree();
|
||||||
treeView.expandNode(parentTreeViewNode);
|
treeView.expandNode(parentTreeViewNode);
|
||||||
if (treeViewTopComponent.getSelectedNode().getDisplayName().equals(parentTreeViewNode.getDisplayName())) {
|
if (treeViewTopComponent.getSelectedNode().equals(parentTreeViewNode)) {
|
||||||
//In the case where our tree view already has the destination directory selected
|
//In the case where our tree view already has the destination directory selected
|
||||||
//due to an optimization in the ExplorerManager.setExploredContextAndSelection method
|
//due to an optimization in the ExplorerManager.setExploredContextAndSelection method
|
||||||
//the property change we listen for to call DirectoryTreeTopComponent.respondSelection
|
//the property change we listen for to call DirectoryTreeTopComponent.respondSelection
|
||||||
|
@ -34,6 +34,7 @@ class ReportExcel implements TableReportModule {
|
|||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(ReportExcel.class.getName());
|
private static final Logger logger = Logger.getLogger(ReportExcel.class.getName());
|
||||||
private static ReportExcel instance;
|
private static ReportExcel instance;
|
||||||
|
private static final int EXCEL_CELL_MAXIMUM_SIZE = 36767; //Specified at:https://poi.apache.org/apidocs/org/apache/poi/ss/SpreadsheetVersion.html
|
||||||
|
|
||||||
private Workbook wb;
|
private Workbook wb;
|
||||||
private Sheet sheet;
|
private Sheet sheet;
|
||||||
@ -236,10 +237,24 @@ class ReportExcel implements TableReportModule {
|
|||||||
* @param row cells to add
|
* @param row cells to add
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@NbBundle.Messages({
|
||||||
|
"ReportExcel.exceptionMessage.dataTooLarge=Value is too long to fit into an Excel cell. ",
|
||||||
|
"ReportExcel.exceptionMessage.errorText=Error showing data into an Excel cell."
|
||||||
|
})
|
||||||
|
|
||||||
public void addRow(List<String> rowData) {
|
public void addRow(List<String> rowData) {
|
||||||
Row row = sheet.createRow(rowIndex);
|
Row row = sheet.createRow(rowIndex);
|
||||||
for (int i = 0; i < rowData.size(); ++i) {
|
for (int i = 0; i < rowData.size(); ++i) {
|
||||||
row.createCell(i).setCellValue(rowData.get(i));
|
Cell excelCell = row.createCell(i);
|
||||||
|
try {
|
||||||
|
excelCell.setCellValue(rowData.get(i));
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (e instanceof java.lang.IllegalArgumentException && rowData.get(i).length() > EXCEL_CELL_MAXIMUM_SIZE) {
|
||||||
|
excelCell.setCellValue(Bundle.ReportExcel_exceptionMessage_dataTooLarge() + e.getMessage());
|
||||||
|
} else {
|
||||||
|
excelCell.setCellValue(Bundle.ReportExcel_exceptionMessage_errorText());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++rowIndex;
|
++rowIndex;
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,7 @@ import org.openide.util.NbBundle;
|
|||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.services.Services;
|
import org.sleuthkit.autopsy.casemodule.services.Services;
|
||||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.EscapeUtil;
|
||||||
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils.ExtractFscContentVisitor;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils.ExtractFscContentVisitor;
|
||||||
@ -554,7 +555,8 @@ class ReportHTML implements TableReportModule {
|
|||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("\t<tr>\n"); //NON-NLS
|
builder.append("\t<tr>\n"); //NON-NLS
|
||||||
for (String cell : row) {
|
for (String cell : row) {
|
||||||
builder.append("\t\t<td>").append(cell).append("</td>\n"); //NON-NLS
|
String escapeHTMLCell = EscapeUtil.escapeHtml(cell);
|
||||||
|
builder.append("\t\t<td>").append(escapeHTMLCell).append("</td>\n"); //NON-NLS
|
||||||
}
|
}
|
||||||
builder.append("\t</tr>\n"); //NON-NLS
|
builder.append("\t</tr>\n"); //NON-NLS
|
||||||
rowCount++;
|
rowCount++;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2013-16 Basis Technology Corp.
|
* Copyright 2013-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -40,7 +40,6 @@ import java.util.logging.Level;
|
|||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||||
import org.sleuthkit.autopsy.coreutils.EscapeUtil;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
@ -666,8 +665,7 @@ class TableReportGenerator {
|
|||||||
tableModule.startTable(columnHeaderNames);
|
tableModule.startTable(columnHeaderNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
String previewreplace = EscapeUtil.escapeHtml(preview);
|
tableModule.addRow(Arrays.asList(new String[]{preview, uniquePath, tagsList}));
|
||||||
tableModule.addRow(Arrays.asList(new String[]{previewreplace.replaceAll("<!", ""), uniquePath, tagsList}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finish the current data type
|
// Finish the current data type
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2017 Basis Technology Corp.
|
* Copyright 2017-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -28,13 +28,14 @@ import org.sleuthkit.autopsy.core.UserPreferences;
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
|
||||||
@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboardOpenAction")
|
@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboardOpenAction")
|
||||||
@ActionReference(path = "Menu/Tools", position = 104)
|
@ActionReference(path = "Menu/Tools", position = 201)
|
||||||
@ActionRegistration(displayName = "#CTL_AutoIngestDashboardOpenAction", lazy = false)
|
@ActionRegistration(displayName = "#CTL_AutoIngestDashboardOpenAction", lazy = false)
|
||||||
@Messages({"CTL_AutoIngestDashboardOpenAction=Auto Ingest Dashboard"})
|
@Messages({"CTL_AutoIngestDashboardOpenAction=Auto Ingest Dashboard"})
|
||||||
public final class AutoIngestDashboardOpenAction extends CallableSystemAction {
|
public final class AutoIngestDashboardOpenAction extends CallableSystemAction {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(AutoIngestDashboardOpenAction.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(AutoIngestDashboardOpenAction.class.getName());
|
||||||
private static final String DISPLAY_NAME = Bundle.CTL_AutoIngestDashboardOpenAction();
|
private static final String DISPLAY_NAME = Bundle.CTL_AutoIngestDashboardOpenAction();
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
|
@ -365,81 +365,84 @@ class GlobalListsManagementPanel extends javax.swing.JPanel implements OptionsPa
|
|||||||
chooser.addChoosableFileFilter(autopsyFilter);
|
chooser.addChoosableFileFilter(autopsyFilter);
|
||||||
chooser.addChoosableFileFilter(encaseFilter);
|
chooser.addChoosableFileFilter(encaseFilter);
|
||||||
chooser.setAcceptAllFileFilterUsed(false);
|
chooser.setAcceptAllFileFilterUsed(false);
|
||||||
|
chooser.setMultiSelectionEnabled(true);
|
||||||
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||||
|
|
||||||
String listName = null;
|
String listName = null;
|
||||||
int returnVal = chooser.showOpenDialog(this);
|
int returnVal = chooser.showOpenDialog(this);
|
||||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
File selFile = chooser.getSelectedFile();
|
File[] selFiles = chooser.getSelectedFiles();
|
||||||
if (selFile == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//force append extension if not given
|
for (File file : selFiles) {
|
||||||
String fileAbs = selFile.getAbsolutePath();
|
if (file == null) {
|
||||||
|
continue;
|
||||||
final KeywordSearchList reader;
|
}
|
||||||
|
|
||||||
if (KeywordSearchUtil.isXMLList(fileAbs)) {
|
//force append extension if not given
|
||||||
reader = new XmlKeywordSearchList(fileAbs);
|
String fileAbs = file.getAbsolutePath();
|
||||||
} else {
|
final KeywordSearchList reader;
|
||||||
reader = new EnCaseKeywordSearchList(fileAbs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!reader.load()) {
|
|
||||||
KeywordSearchUtil.displayDialog(
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.listImportFeatureTitle"), NbBundle.getMessage(this.getClass(), "KeywordSearch.importListFileDialogMsg", fileAbs), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<KeywordList> toImport = reader.getListsL();
|
|
||||||
List<KeywordList> toImportConfirmed = new ArrayList<>();
|
|
||||||
|
|
||||||
final XmlKeywordSearchList writer = XmlKeywordSearchList.getCurrent();
|
|
||||||
|
|
||||||
for (KeywordList list : toImport) {
|
|
||||||
//check name collisions
|
|
||||||
listName = list.getName();
|
|
||||||
if (writer.listExists(listName)) {
|
|
||||||
String[] options;
|
|
||||||
if (toImport.size() == 1) { //only give them cancel and yes buttons for single list imports
|
|
||||||
options = new String[]{NbBundle.getMessage(this.getClass(), "KeywordSearch.yesOwMsg"),
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.cancelImportMsg")};
|
|
||||||
} else {
|
|
||||||
options = new String[]{NbBundle.getMessage(this.getClass(), "KeywordSearch.yesOwMsg"),
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.noSkipMsg"),
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.cancelImportMsg")};
|
|
||||||
}
|
|
||||||
int choice = JOptionPane.showOptionDialog(this,
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.overwriteListPrompt", listName),
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.importOwConflict"),
|
|
||||||
JOptionPane.YES_NO_CANCEL_OPTION,
|
|
||||||
JOptionPane.QUESTION_MESSAGE,
|
|
||||||
null,
|
|
||||||
options,
|
|
||||||
options[0]);
|
|
||||||
if (choice == JOptionPane.OK_OPTION) {
|
|
||||||
toImportConfirmed.add(list);
|
|
||||||
} else if (choice == JOptionPane.CANCEL_OPTION) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (KeywordSearchUtil.isXMLList(fileAbs)) {
|
||||||
|
reader = new XmlKeywordSearchList(fileAbs);
|
||||||
} else {
|
} else {
|
||||||
//no conflict
|
reader = new EnCaseKeywordSearchList(fileAbs);
|
||||||
toImportConfirmed.add(list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (!reader.load()) {
|
||||||
|
KeywordSearchUtil.displayDialog(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.listImportFeatureTitle"), NbBundle.getMessage(this.getClass(), "KeywordSearch.importListFileDialogMsg", fileAbs), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (toImportConfirmed.isEmpty()) {
|
List<KeywordList> toImport = reader.getListsL();
|
||||||
return;
|
List<KeywordList> toImportConfirmed = new ArrayList<>();
|
||||||
}
|
|
||||||
|
|
||||||
if (!writer.writeLists(toImportConfirmed)) {
|
final XmlKeywordSearchList writer = XmlKeywordSearchList.getCurrent();
|
||||||
KeywordSearchUtil.displayDialog(
|
|
||||||
NbBundle.getMessage(this.getClass(), "KeywordSearch.listImportFeatureTitle"), NbBundle.getMessage(this.getClass(), "KeywordSearch.kwListFailImportMsg"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.INFO);
|
for (KeywordList list : toImport) {
|
||||||
|
//check name collisions
|
||||||
|
listName = list.getName();
|
||||||
|
if (writer.listExists(listName)) {
|
||||||
|
String[] options;
|
||||||
|
if (toImport.size() == 1) { //only give them cancel and yes buttons for single list imports
|
||||||
|
options = new String[]{NbBundle.getMessage(this.getClass(), "KeywordSearch.yesOwMsg"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.cancelImportMsg")};
|
||||||
|
} else {
|
||||||
|
options = new String[]{NbBundle.getMessage(this.getClass(), "KeywordSearch.yesOwMsg"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.noSkipMsg"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.cancelImportMsg")};
|
||||||
|
}
|
||||||
|
int choice = JOptionPane.showOptionDialog(this,
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.overwriteListPrompt", listName),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.importOwConflict"),
|
||||||
|
JOptionPane.YES_NO_CANCEL_OPTION,
|
||||||
|
JOptionPane.QUESTION_MESSAGE,
|
||||||
|
null,
|
||||||
|
options,
|
||||||
|
options[0]);
|
||||||
|
if (choice == JOptionPane.OK_OPTION) {
|
||||||
|
toImportConfirmed.add(list);
|
||||||
|
} else if (choice == JOptionPane.CANCEL_OPTION) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//no conflict
|
||||||
|
toImportConfirmed.add(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toImportConfirmed.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!writer.writeLists(toImportConfirmed)) {
|
||||||
|
KeywordSearchUtil.displayDialog(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearch.listImportFeatureTitle"), NbBundle.getMessage(this.getClass(), "KeywordSearch.kwListFailImportMsg"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.INFO);
|
||||||
|
}
|
||||||
|
ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, LAST_KEYWORD_LIST_PATH_KEY, file.getParent());
|
||||||
}
|
}
|
||||||
ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, LAST_KEYWORD_LIST_PATH_KEY, selFile.getParent());
|
|
||||||
}
|
}
|
||||||
tableModel.resync();
|
tableModel.resync();
|
||||||
|
|
||||||
|
24
build.xml
@ -32,7 +32,10 @@
|
|||||||
</condition>
|
</condition>
|
||||||
<condition property="os.family" value="windows">
|
<condition property="os.family" value="windows">
|
||||||
<os family="windows"/>
|
<os family="windows"/>
|
||||||
</condition>
|
</condition>
|
||||||
|
<condition property="os.family" value="mac">
|
||||||
|
<os family="mac"/>
|
||||||
|
</condition>
|
||||||
<import file="build-${os.family}.xml"/>
|
<import file="build-${os.family}.xml"/>
|
||||||
|
|
||||||
<!-- Third party tools dependencies -->
|
<!-- Third party tools dependencies -->
|
||||||
@ -82,7 +85,13 @@
|
|||||||
<copy file="${basedir}/LICENSE-2.0.txt" tofile="${zip-tmp}/${app.name}/LICENSE-2.0.txt"/>
|
<copy file="${basedir}/LICENSE-2.0.txt" tofile="${zip-tmp}/${app.name}/LICENSE-2.0.txt"/>
|
||||||
<copy file="${basedir}/NEWS.txt" tofile="${zip-tmp}/${app.name}/NEWS.txt"/>
|
<copy file="${basedir}/NEWS.txt" tofile="${zip-tmp}/${app.name}/NEWS.txt"/>
|
||||||
<copy file="${basedir}/KNOWN_ISSUES.txt" tofile="${zip-tmp}/${app.name}/KNOWN_ISSUES.txt"/>
|
<copy file="${basedir}/KNOWN_ISSUES.txt" tofile="${zip-tmp}/${app.name}/KNOWN_ISSUES.txt"/>
|
||||||
<unzip src="${thirdparty.dir}/gstreamer/${os.family}/i386/0.10.7/gstreamer.zip" dest="${zip-tmp}/${app.name}/gstreamer"/>
|
<if>
|
||||||
|
<equals arg1="${os.family}" arg2="windows"/>
|
||||||
|
<then>
|
||||||
|
<unzip src="${thirdparty.dir}/gstreamer/${os.family}/i386/0.10.7/gstreamer.zip" dest="${zip-tmp}/${app.name}/gstreamer"/>
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
|
||||||
<copy file="${basedir}/icons/icon.ico" tofile="${zip-tmp}/${app.name}/icon.ico" overwrite="true"/>
|
<copy file="${basedir}/icons/icon.ico" tofile="${zip-tmp}/${app.name}/icon.ico" overwrite="true"/>
|
||||||
|
|
||||||
<!-- Copy the Autopsy documentation to the docs folder -->
|
<!-- Copy the Autopsy documentation to the docs folder -->
|
||||||
@ -91,8 +100,17 @@
|
|||||||
</copy>
|
</copy>
|
||||||
|
|
||||||
<property name="app.property.file" value="${zip-tmp}/${app.name}/etc/${app.name}.conf" />
|
<property name="app.property.file" value="${zip-tmp}/${app.name}/etc/${app.name}.conf" />
|
||||||
|
<var name="jvm-value" value="--branding ${app.name} -J-Xms24m -J-Xmx4G -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication"/>
|
||||||
<!-- for Japanese localized version add option: -Duser.language=ja -->
|
<!-- for Japanese localized version add option: -Duser.language=ja -->
|
||||||
<property name="jvm.options" value=""--branding ${app.name} -J-Xms24m -J-Xmx4G -J-XX:MaxPermSize=128M -J-Xverify:none -J-XX:+UseG1GC -J-XX:+UseStringDeduplication -J-Xdock:name=${app.title}"" />
|
<if>
|
||||||
|
<equals arg1="${os.family}" arg2="mac"/>
|
||||||
|
<then>
|
||||||
|
<property name="jvm.options" value=""${jvm-value} -J-Xdock:name=${app.title}""/>
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<property name="jvm.options" value=""${jvm-value}""/>
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
<propertyfile file="${app.property.file}">
|
<propertyfile file="${app.property.file}">
|
||||||
<!-- Note: can be higher on 64 bit systems, should be in sync with project.properties -->
|
<!-- Note: can be higher on 64 bit systems, should be in sync with project.properties -->
|
||||||
<entry key="default_options" value="@JVM_OPTIONS" />
|
<entry key="default_options" value="@JVM_OPTIONS" />
|
||||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
BIN
docs/doxygen-user/images/live_triage_case.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/doxygen-user/images/live_triage_dialog.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/doxygen-user/images/live_triage_ds.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
docs/doxygen-user/images/live_triage_script.png
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 16 KiB |
33
docs/doxygen-user/live_triage.dox
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*! \page live_triage_page Live Triage
|
||||||
|
|
||||||
|
\section live_triage_overview Overview
|
||||||
|
|
||||||
|
The Live Triage feature allows you to load Autopsy onto a removable drive to run on target systems while making minimal changes to that target system. This will currently only work on Windows systems.
|
||||||
|
|
||||||
|
\section live_triage_create_drive Creating a live triage drive
|
||||||
|
|
||||||
|
To create a live triage drive, go to Tools->Make Live Triage Drive to bring up the main dialog.
|
||||||
|
|
||||||
|
\image html live_triage_dialog.png
|
||||||
|
|
||||||
|
Select the drive you want to use - any type of USB storage device will work. For best results use the fastest drive available. Once the process is complete the root folder will contain an Autopsy folder and a RunFromUSB.bat file.
|
||||||
|
|
||||||
|
\section live_triage_usage Running Autopsy from the live triage drive
|
||||||
|
|
||||||
|
Insert the drive into the target machine and browse to it in Windows Explorer. Right click on RunFromUSB.bat and select "Run as administrator". This is necessary to analyze the local drives.
|
||||||
|
|
||||||
|
\image html live_triage_script.png
|
||||||
|
|
||||||
|
Running the script will generate a few more directories on the USB drive. The configData directory stores all the data used by Autopsy - primarily configuration files and temporary files. You can make changes to the Autopsy settings and they will persist between runs. The cases directory is created as a recommended place to save your case data. You will need to browse to it when creating a case in Autopsy.
|
||||||
|
|
||||||
|
Once Autopsy is running, proceed to create a case as normal, making sure to save it on the USB drive.
|
||||||
|
|
||||||
|
\image html live_triage_case.png
|
||||||
|
|
||||||
|
Then choose the Local Disk data source and select the desired drive.
|
||||||
|
|
||||||
|
\image html live_triage_ds.png
|
||||||
|
|
||||||
|
See the \ref ds_local page for more information on local disk data sources.
|
||||||
|
|
||||||
|
*/
|
@ -60,6 +60,7 @@ The following topics are available here:
|
|||||||
- \subpage windows_authentication
|
- \subpage windows_authentication
|
||||||
- \subpage multiuser_sec_page
|
- \subpage multiuser_sec_page
|
||||||
- \subpage multiuser_page
|
- \subpage multiuser_page
|
||||||
|
- \subpage live_triage_page
|
||||||
- \subpage advanced_page
|
- \subpage advanced_page
|
||||||
|
|
||||||
If the topic you need is not listed, refer to the <a href="http://wiki.sleuthkit.org/index.php?title=Autopsy_User%27s_Guide">Autopsy Wiki</a> or join the <a href="https://lists.sourceforge.net/lists/listinfo/sleuthkit-users">SleuthKit User List</a> at SourceForge.
|
If the topic you need is not listed, refer to the <a href="http://wiki.sleuthkit.org/index.php?title=Autopsy_User%27s_Guide">Autopsy Wiki</a> or join the <a href="https://lists.sourceforge.net/lists/listinfo/sleuthkit-users">SleuthKit User List</a> at SourceForge.
|
||||||
|
281
ruleset.xml
@ -1,13 +1,280 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<ruleset name="Custom ruleset"
|
<ruleset name="Autopsy ruleset"
|
||||||
xmlns="http://pmd.sf.net/ruleset/1.0.0"
|
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
|
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
|
||||||
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
|
|
||||||
<description>
|
<description>
|
||||||
Ruleset used by Autopsy
|
Ruleset used by Autopsy
|
||||||
</description>
|
</description>
|
||||||
|
<rule ref="rulesets/java/basic.xml/SimplifiedTernary"/>
|
||||||
<rule ref="rulesets/java/unusedcode.xml"/>
|
<rule ref="rulesets/java/basic.xml/AvoidUsingOctalValues"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/BigIntegerInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/ClassCastExceptionWithToArray"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/ForLoopShouldBeWhileLoop"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/CheckResultSet"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/UnconditionalIfStatement"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/CheckSkipResult"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/DontUseFloatTypeForLoopIndices"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/MisplacedNullCheck"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/BooleanInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/ExtendsObject"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/AvoidBranchingStatementAsLastInLoop"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/DoubleCheckedLocking"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/ReturnFromFinallyBlock"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/AvoidThreadGroup"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/CollapsibleIfStatements"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/AvoidUsingHardCodedIP"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/CheckResultSet"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/DontCallThreadRun"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/BrokenNullCheck"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/AvoidMultipleUnaryOperators"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode"/>
|
||||||
|
<rule ref="rulesets/java/basic.xml/JumbledIncrementer"/>
|
||||||
|
<rule ref="rulesets/java/braces.xml/WhileLoopsMustUseBraces"/>
|
||||||
|
<rule ref="rulesets/java/braces.xml/IfStmtsMustUseBraces"/>
|
||||||
|
<rule ref="rulesets/java/braces.xml/IfElseStmtsMustUseBraces"/>
|
||||||
|
<rule ref="rulesets/java/braces.xml/ForLoopsMustUseBraces"/>
|
||||||
|
<rule ref="rulesets/java/clone.xml/ProperCloneImplementation"/>
|
||||||
|
<rule ref="rulesets/java/clone.xml/CloneThrowsCloneNotSupportedException"/>
|
||||||
|
<rule ref="rulesets/java/clone.xml/CloneMethodMustImplementCloneable"/>
|
||||||
|
<rule ref="rulesets/java/clone.xml/CloneMethodReturnTypeMustMatchClassName"/>
|
||||||
|
<rule ref="rulesets/java/clone.xml/CloneMethodMustBePublic"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/NPathComplexity"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/ExcessiveMethodLength"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/ExcessiveParameterList"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/ExcessiveClassLength"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/CyclomaticComplexity"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/StdCyclomaticComplexity"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/ModifiedCyclomaticComplexity"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/ExcessivePublicCount"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/TooManyFields"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/NcssMethodCount"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/NcssTypeCount"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/NcssConstructorCount"/>
|
||||||
|
<rule ref="rulesets/java/codesize.xml/TooManyMethods"/>
|
||||||
|
<rule ref="rulesets/java/comments.xml/CommentRequired">
|
||||||
|
<properties>
|
||||||
|
<!-- Disabled because we have lots of undocumented fields -->
|
||||||
|
<property name="fieldCommentRequirement" value="Unwanted"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
<!-- Commented out because it was flagged some of our header / copyright comments
|
||||||
|
<rule ref="rulesets/java/comments.xml/CommentSize"/> -->
|
||||||
|
<rule ref="rulesets/java/comments.xml/CommentContent"/>
|
||||||
|
<rule ref="rulesets/java/comments.xml/CommentDefaultAccessModifier"/>
|
||||||
|
<!--
|
||||||
|
Commented out because they are controversial and we want basics right now.
|
||||||
|
<rule ref="rulesets/java/controversial.xml/NullAssignment"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/OnlyOneReturn"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AssignmentInOperand"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AtLeastOneConstructor"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/DontImportSun"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/SuspiciousOctalEscape"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/CallSuperInConstructor"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/UnnecessaryParentheses"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/DataflowAnomalyAnalysis"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidFinalLocalVariable"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidUsingShortType"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidUsingVolatile"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidUsingNativeCode"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidAccessibilityAlteration"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidPrefixingMethodParameters"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/AvoidLiteralsInIfCondition"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/UseObjectForClearerAPI"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/UseConcurrentHashMap"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/OneDeclarationPerLine"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/DefaultPackage"/>
|
||||||
|
<rule ref="rulesets/java/controversial.xml/UnnecessaryConstructor"/>
|
||||||
|
-->
|
||||||
|
<rule ref="rulesets/java/coupling.xml/CouplingBetweenObjects"/>
|
||||||
|
<rule ref="rulesets/java/coupling.xml/ExcessiveImports"/>
|
||||||
|
<rule ref="rulesets/java/coupling.xml/LooseCoupling"/>
|
||||||
|
<rule ref="rulesets/java/coupling.xml/LoosePackageCoupling"/>
|
||||||
|
<!-- Commented out because we have not enforced this in the past
|
||||||
|
<rule ref="rulesets/java/coupling.xml/LawOfDemeter"/> -->
|
||||||
|
<rule ref="rulesets/java/design.xml/UseUtilityClass"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidDeeplyNestedIfStmts"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SwitchDensity"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ConstructorCallsOverridableMethod"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AccessorClassGeneration"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/FinalFieldCouldBeStatic"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/CloseResource"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/NonStaticInitializer"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/DefaultLabelNotLastInSwitchStmt"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/OptimizableToArrayCall"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/BadComparison"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ConfusingTernary"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/InstantiationToGetClass"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/IdempotentOperations"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SimpleDateFormatNeedsLocale"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ImmutableField"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UseLocaleWithCaseConversions"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidProtectedFieldInFinalClass"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidSynchronizedAtMethodLevel"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UseNotifyAllInsteadOfNotify"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AbstractClassWithoutAbstractMethod"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SimplifyConditional"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/PositionLiteralsFirstInCaseInsensitiveComparisons"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UnnecessaryLocalBeforeReturn"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/NonThreadSafeSingleton"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SingleMethodSingleton"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SingletonClassReturningNewInstance"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UncommentedEmptyConstructor"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidConstantsInterface"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UnsynchronizedStaticDateFormatter"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/PreserveStackTrace"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UseCollectionIsEmpty"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ReturnEmptyArrayRatherThanNull"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AbstractClassWithoutAnyMethod"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/TooFewBranchesForASwitchStatement"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UseVarargs"/>
|
||||||
|
<!-- Commented out because it flagged many of the NetBeans created UI classes that place
|
||||||
|
fields at various places in the class
|
||||||
|
<rule ref="rulesets/java/design.xml/FieldDeclarationsShouldBeAtStartOfClass"/> -->
|
||||||
|
<rule ref="rulesets/java/design.xml/GodClass"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidProtectedMethodInFinalClassNotExtending"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/ConstantsInInterface"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/CompareObjectsWithEquals"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/LogicInversion"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SingularField"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SimplifyBooleanReturns"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidInstanceofChecksInCatchClause"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/NonCaseLabelInSwitchStatement"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/NonStaticInitializer"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AvoidReassigningParameters"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SwitchStmtsShouldHaveDefault"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/MissingBreakInSwitch"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/EqualsNull"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/UncommentedEmptyMethodBody"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/SimplifyBooleanExpressions"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/AssignmentToNonFinalStatic"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
|
||||||
|
<rule ref="rulesets/java/design.xml/PositionLiteralsFirstInComparisons"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyCatchBlock"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyWhileStmt"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyFinallyBlock"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyIfStmt"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyStatementNotInLoop"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyTryBlock"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyStatementBlock"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyStaticInitializer"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptyInitializer"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptySwitchStatements"/>
|
||||||
|
<rule ref="rulesets/java/empty.xml/EmptySynchronizedBlock"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/FinalizeOverloaded"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/FinalizeShouldBeProtected"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/AvoidCallingFinalize"/>
|
||||||
|
<rule ref="rulesets/java/finalizers.xml/EmptyFinalizer"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/TooManyStaticImports"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/UnusedImports"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/ImportFromSamePackage"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/DuplicateImports"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/DontImportJavaLang"/>
|
||||||
|
<rule ref="rulesets/java/imports.xml/UnnecessaryFullyQualifiedName"/>
|
||||||
|
<!-- Disabled because it generated a lot of errors for non-Beans
|
||||||
|
<rule ref="rulesets/java/javabeans.xml/BeanMembersShouldSerialize"/>-->
|
||||||
|
<rule ref="rulesets/java/javabeans.xml/MissingSerialVersionUID"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/MoreThanOneLogger"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/LoggerIsNotStaticFinal"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/SystemPrintln"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/AvoidPrintStackTrace"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/GuardLogStatementJavaUtil"/>
|
||||||
|
<rule ref="rulesets/java/logging-java.xml/InvalidSlf4jMessageFormat"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/ReplaceVectorWithList"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/ReplaceHashtableWithMap"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/ReplaceEnumerationWithIterator"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/AvoidEnumAsIdentifier"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/AvoidAssertAsIdentifier"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/IntegerInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/ByteInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/ShortInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/migrating.xml/LongInstantiation"/>
|
||||||
|
<!-- Disabled because it wanted all private static to be caps
|
||||||
|
<rule ref="rulesets/java/naming.xml/VariableNamingConventions"/> -->
|
||||||
|
<rule ref="rulesets/java/naming.xml/AvoidDollarSigns"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/AbstractNaming"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/SuspiciousHashcodeMethodName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/SuspiciousConstantFieldName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/SuspiciousEqualsMethodName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingTypeName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingMethodName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/MisleadingVariableName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/ShortClassName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/ClassNamingConventions"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/MethodNamingConventions"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/GenericsNaming"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/NoPackage"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/MethodWithSameNameAsEnclosingClass"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/ShortVariable"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/LongVariable"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/ShortMethodName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/BooleanGetMethodName"/>
|
||||||
|
<rule ref="rulesets/java/naming.xml/PackageCase"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/LocalVariableCouldBeFinal"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/MethodArgumentCouldBeFinal"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/UseArrayListInsteadOfVector"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/SimplifyStartsWith"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/UseStringBufferForStringAppends"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/UseArraysAsList"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/AvoidArrayLoops"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/AddEmptyString"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/RedundantFieldInitializer"/>
|
||||||
|
<rule ref="rulesets/java/optimizations.xml/PrematureDeclaration"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidCatchingThrowable"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/ExceptionAsFlowControl"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidCatchingNPE"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidRethrowingException"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/DoNotExtendJavaLangError"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/DoNotThrowExceptionInFinally"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidThrowingNewInstanceOfSameException"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidLosingExceptionInformation"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidCatchingGenericException"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
|
||||||
|
<rule ref="rulesets/java/strictexception.xml/AvoidThrowingNullPointerException"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/AvoidDuplicateLiterals"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/InefficientStringBuffering"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/AppendCharacterWithChar"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/ConsecutiveAppendsShouldReuse"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/ConsecutiveLiteralAppends"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/UseIndexOfChar"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/InefficientEmptyStringCheck"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/InsufficientStringBufferDeclaration"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/UselessStringValueOf"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/StringBufferInstantiationWithChar"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/AvoidStringBufferField"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/StringInstantiation"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/UseEqualsToCompareStrings"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/StringToString"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/UseStringBufferLength"/>
|
||||||
|
<rule ref="rulesets/java/strings.xml/UnnecessaryCaseChange"/>
|
||||||
|
<rule ref="rulesets/java/sunsecure.xml/MethodReturnsInternalArray"/>
|
||||||
|
<rule ref="rulesets/java/sunsecure.xml/ArrayIsStoredDirectly"/>
|
||||||
|
<rule ref="rulesets/java/typeresolution.xml/LooseCoupling"/>
|
||||||
|
<rule ref="rulesets/java/typeresolution.xml/CloneMethodMustImplementCloneable"/>
|
||||||
|
<rule ref="rulesets/java/typeresolution.xml/UnusedImports"/>
|
||||||
|
<rule ref="rulesets/java/typeresolution.xml/SignatureDeclareThrowsException"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UnnecessaryConversionTemporary"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UnnecessaryFinalModifier"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UselessOverridingMethod"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UnusedNullCheckInEquals"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UselessParentheses"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UselessQualifiedThis"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UselessOperationOnImmutable"/>
|
||||||
|
<rule ref="rulesets/java/unnecessary.xml/UnnecessaryReturn"/>
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedModifier"/>
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedLocalVariable"/>
|
||||||
|
<!-- Commented out because it flagged many event listeners and other interfaces.
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedFormalParameter"/> -->
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateField"/>
|
||||||
|
<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateMethod"/>
|
||||||
|
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|