diff --git a/build.xml b/build.xml
index 0125614..498dd53 100644
--- a/build.xml
+++ b/build.xml
@@ -3,6 +3,7 @@
   <property name="src.dir" value="${basedir}/src" />
   <property name="aosp.src.dir" value="third-party/java/aosp/src" />
   <property name="test.dir" value="${basedir}/test" />
+  <property name="plugin.dir" value="${basedir}/plugin" />
   <property name="lib.dir" value="${basedir}/lib" />
   <property name="third-party.dir" value="${basedir}/third-party" />
   <property name="build.dir" value="${basedir}/build" />
@@ -231,6 +232,9 @@
       <fileset dir="${test.dir}">
         <include name="**/*.java"/>
       </fileset>
+      <fileset dir="${plugin.dir}">
+        <include name="**/*.java"/>
+      </fileset>
     </pmd>
   </target>
 
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/BuckTarget.java b/plugin/src/com/facebook/buck/plugin/intellij/BuckTarget.java
index d035a79..28dce91 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/BuckTarget.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/BuckTarget.java
@@ -17,20 +17,17 @@
 package com.facebook.buck.plugin.intellij;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 
 public class BuckTarget {
 
   private final String type;
   private final String name;
   private final String basePath;
-  private final ImmutableList<String> sources;
 
-  public BuckTarget(String type, String name, String basePath, ImmutableList<String> sources) {
+  public BuckTarget(String type, String name, String basePath) {
     this.type = Preconditions.checkNotNull(type);
     this.name = Preconditions.checkNotNull(name);
     this.basePath = Preconditions.checkNotNull(basePath);
-    this.sources = Preconditions.checkNotNull(sources);
   }
 
   public String getName() {
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/commands/BuckRunner.java b/plugin/src/com/facebook/buck/plugin/intellij/commands/BuckRunner.java
index bd3d3ca..5aeb3f3 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/commands/BuckRunner.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/commands/BuckRunner.java
@@ -31,7 +31,6 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.ServerSocket;
-import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/commands/CleanCommand.java b/plugin/src/com/facebook/buck/plugin/intellij/commands/CleanCommand.java
index a52f354..519b372 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/commands/CleanCommand.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/commands/CleanCommand.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2013-present Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License. You may obtain
+ * a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
 package com.facebook.buck.plugin.intellij.commands;
 
 import com.intellij.openapi.diagnostic.Logger;
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/commands/TargetsCommand.java b/plugin/src/com/facebook/buck/plugin/intellij/commands/TargetsCommand.java
index 0d658f0..e316cfe 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/commands/TargetsCommand.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/commands/TargetsCommand.java
@@ -56,14 +56,7 @@
         String basePath = target.get("buck.base_path").asText();
         String name = target.get("name").asText();
         String type = target.get("type").asText();
-        ImmutableList.Builder<String> srcBuilder = ImmutableList.builder();
-        JsonNode srcs = target.get("srcs");
-        if (srcs != null && srcs.isArray()) {
-          for (JsonNode src : srcs) {
-            srcBuilder.add(src.asText());
-          }
-        }
-        builder.add(new BuckTarget(type, name, basePath, srcBuilder.build()));
+        builder.add(new BuckTarget(type, name, basePath));
       }
       return builder.build();
     } catch (IOException e) {
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckProgressPanel.java b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckProgressPanel.java
index 7f58cc9..4ae5f24 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckProgressPanel.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckProgressPanel.java
@@ -41,6 +41,7 @@
 
   private JPanel panel;
   private JTree tree;
+  @SuppressWarnings("unused")
   private JScrollPane scrollPane;
   private DefaultTreeModel treeModel;
   private ProgressNode treeRoot;
@@ -109,6 +110,7 @@
     throw new RuntimeException("Node of rule_start that matches rule_end not found!");
   }
 
+  @SuppressWarnings("unused")
   private void createUIComponents() {
     createModel();
     tree = new Tree(treeModel);
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.form b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.form
index 0544fe0..daa760d 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.form
+++ b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.form
@@ -10,7 +10,7 @@
       <size top="0" left="3" bottom="3" right="3"/>
     </border>
     <children>
-      <toolbar id="faed" binding="toolBar">
+      <toolbar id="faed">
         <constraints>
           <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false">
             <preferred-size width="-1" height="20"/>
@@ -36,7 +36,7 @@
           </component>
         </children>
       </toolbar>
-      <scrollpane id="8bbd6" binding="scrollPane">
+      <scrollpane id="8bbd6">
         <constraints>
           <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
         </constraints>
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.java b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.java
index 9f8e485..bfe2ce8 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.java
@@ -35,8 +35,6 @@
 import javax.swing.JComponent;
 import javax.swing.JList;
 import javax.swing.JPanel;
-import javax.swing.JToolBar;
-import javax.swing.JScrollPane;
 import javax.swing.SwingUtilities;
 import javax.swing.event.AncestorEvent;
 import javax.swing.event.AncestorListener;
@@ -49,9 +47,7 @@
   private JPanel targetsPanel;
   private JList targetsList;
   private JButton refreshTargetsButton;
-  private JToolBar toolBar;
   private JButton cleanButton;
-  private JScrollPane scrollPane;
 
   public BuckTargetsPanel(BuckPluginComponent component) {
     this.component = Preconditions.checkNotNull(component);
@@ -61,6 +57,7 @@
     return targetsPanel;
   }
 
+  @SuppressWarnings("unused")
   private void createUIComponents() {
     targetsPanel = new JPanel();
     targetsPanel.addAncestorListener(new AncestorListener() {
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckUI.java b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckUI.java
index fd15325..2f0546c 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckUI.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/ui/BuckUI.java
@@ -17,9 +17,7 @@
 package com.facebook.buck.plugin.intellij.ui;
 
 import com.facebook.buck.plugin.intellij.BuckPluginComponent;
-import com.facebook.buck.plugin.intellij.BuckTarget;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.intellij.icons.AllIcons;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.wm.ToolWindow;
diff --git a/plugin/src/com/facebook/buck/plugin/intellij/ui/TargetsListModel.java b/plugin/src/com/facebook/buck/plugin/intellij/ui/TargetsListModel.java
index 9c86d7d..0cd0e42 100644
--- a/plugin/src/com/facebook/buck/plugin/intellij/ui/TargetsListModel.java
+++ b/plugin/src/com/facebook/buck/plugin/intellij/ui/TargetsListModel.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2013-present Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License. You may obtain
+ * a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
 package com.facebook.buck.plugin.intellij.ui;
 
 import com.facebook.buck.plugin.intellij.BuckTarget;
