  Consistency is one of the keys to maintainable source code and hence a
successful software project. We propose a novel method of extracting the intent
of programmers from source code of a large project (~300kLOC) and checking the
semantic consistency of its variable names. Our system learns a
project-specific naming convention for variables based on its role solely from
source code, and suggest alternatives when it violates its internal
consistency. The system can also show the reasoning why a certain variable
should be named in a specific way. The system does not rely on any external
knowledge. We applied our method to 12 open-source projects and evaluated its
results with human reviewers. Our system proposed alternative variable names
for 416 out of 1080 (39%) instances that are considered better than ones
originally used by the developers. Based on the results, we created patches to
correct the inconsistent names and sent them to its developers. Three
open-source projects adopted it.
