[www] r296591 - [GSoC] Add two more clang-related projects.

Vassil Vassilev via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 1 02:07:14 PST 2017


Author: vvassilev
Date: Wed Mar  1 04:07:13 2017
New Revision: 296591

URL: http://llvm.org/viewvc/llvm-project?rev=296591&view=rev
Log:
[GSoC] Add two more clang-related projects.

Modified:
    www/trunk/OpenProjects.html

Modified: www/trunk/OpenProjects.html
URL: http://llvm.org/viewvc/llvm-project/www/trunk/OpenProjects.html?rev=296591&r1=296590&r2=296591&view=diff
==============================================================================
--- www/trunk/OpenProjects.html (original)
+++ www/trunk/OpenProjects.html Wed Mar  1 04:07:13 2017
@@ -20,6 +20,10 @@
           provide information for the type as written in template
           instantiations</a>
       </li>
+      <li><a href="#clang-shell-autocompletion-support">Shell auto-completion
+          support for clang</a>
+      </li>
+      <li><a href="#clang-diff-tool">Clang-based C/C++ diff tool</a></li>
     </ul>
     <ul><a href="http://clang-analyzer.llvm.org/">Clang Static Analyzer</a>
       <li><a href="#clang-sa-virt-calls">Warn if virtual calls are made from
@@ -315,6 +319,87 @@ Welcome prospective Google Summer of Cod
   </p>
 </div>
 
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
+  <a name="clang-shell-autocompletion-support">Shell auto-completion support for
+    clang.</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+  <p><b>Description of the project: </b>
+    Bash and other shells support typing a partial command and then
+    automatically completing it for the user (or at least providing suggestions
+    how to complete) when pressing the tab key. This is usually only supported
+    for popular programs such as package managers (e.g. pressing tab after
+    typing "apt-get install late" queries the APT package database and lists all
+    packages that start with "late). As of now clang's frontend isn't supported
+    by any common shell.
+
+    <br /> <br />
+    Suggested design approach: The main goal is to support variety of terminals.
+    It would be preferable to keep each shell plugin minimal, enabling easy
+    addition of new plugins. The implementation ought to extend the clang driver
+    switches with a flag to request auto-completion of a partial shell command.
+    <br /> <br />
+
+    The final auto-completion support should contain features such as:
+    <ul>
+      <li>Searching/correcting all flags. For example:
+        <ul>
+          <li>typing <pre>clang -tri<i>[tab]</i></pre> should complete to
+            <pre>-trigraphs</pre>
+          </li>
+          <li>typing <pre>clang -cc1 -dump-decls<i>[tab]</i></pre> should
+            correct <pre>-dump-decls</pre> to <pre>-dump-deserialized-decls</pre>
+          </li>
+        </ul>
+      </li>
+      <li>Searching for valid arguments for the flags. For example:
+        <ul>
+          <li>typing <pre>clang -cc1 -analyze -analyzer-checker=<i>[tab]</i> -fsyntax-only</pre>
+            should list all available static analyzers (eg. core.DivideZero)
+          </li>
+          <li>typing <pre>clang -std=<i>[tab]</i></pre> should list the
+            available language standards.
+          </li>
+        </ul>
+      </li>
+      <li>When the auto-completion for a partial command is ambiguous, all
+        possible completions should be displayed with the relevant description
+        from the "--help" output beside it (<a href="https://www.pablumfication.co.uk/wp-content/uploads/2010/02/fish-lsAutocompleteArguments.jpg">
+          example of this in fish with the command "ls"</a>).
+      </li>      
+    </ul>
+  </p>
+
+  <p><b>Expected results: </b>
+    Bash supports abovementioned auto-complete examples on at least OS X and
+    Linux.
+  <p><b>Confirmed Mentor:</b>Vassil Vassilev, Raphael Isemann</p>
+
+  <p><b>Desirable skills:</b>
+    Intermediate knowledge of C++ and shell scripting, Intermediate knowledge of
+    the clang driver.
+  </p>
+</div>
+
+<!-- *********************************************************************** -->
+<div class="www_subsubsection">
+  <a name="clang-diff-tool">Clang-based C/C++ diff tool.</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="www_text">
+  <p><b>Description of the project: </b>
+    Every developer has to interact with diff tools daily. The algorithms are
+    usually based on detecting "longest common subsequences", which is agnostic
+    to the file type content. A tool that would understand the structure of the
+    code may provide a better diff experience by being robust against, for
+    example, clang-format changes.
+  </p>
+</div>
+
 
 <!-- *********************************************************************** -->
 <div class="www_subsection">




More information about the llvm-commits mailing list