Commit Graph

49 Commits

Author SHA1 Message Date
Ben Liblit 191904d607 Remove "throws XYZ" declarations where XYZ cannot be thrown
Unnecessary "throws" declarations tend to cascade.  If foo() calls
bar() and bar() falsely declares that it might throw IOException, that
often leads a programmer to declare that foo() might throw IOException
as well.  Fixing the bar() throws declaration then reveals that we can
fix the foo() throws declaration too.  By the time we reach a fixed
point with cleaning these up, we have removed roughly 320 unnecessary
throws declarations.

In a few cases, this cleanup even lets us remove entire "try
... catch" statements where the only thing being caught was an
exception that we now statically know cannot be thrown.  Nice!

In Eclipse project configurations, upgrade any future such shenanigans
from warnings to errors.  Now that we've fixed this, we don't want it
coming back again.

There is a potential drawback to this change.  Conceivably some public
WALA API entry point might have declared that it could throw some
exception merely to reserve the *option* of throwing that exception in
third-party code that subclasses and overrides the API entry point in
question.  I have no idea whether this is a significant concern in
practice, though.
2017-07-28 10:20:28 -07:00
Ben Liblit 594525a83f Fix Eclipse warnings about methods that can be declared static
The fix is to add "static" where appropriate, of course.  I've also
simplified calls to such methods to reflect the fact that they no
longer need a specific object to call the method on.

In projects that contain test inputs, I've left the non-static
declarations unchanged, and instead downgraded the warning to be
ignored.  In all other projects, this warning has been upgraded to an
error.
2017-07-14 22:38:38 -07:00
Ben Liblit 421dcd4991 Change two "if" checks that can never be true into asserts
Eclipse warns that the "if" statements' true blocks are dead, and
indeed the conditions being tested here can never be true.  It's a
little subtle why that's so, though.  Changing them to "assert"
statements removes two warnings about deprecated code, while still
helping human readers understand what invariants must hold here.
2017-03-17 22:03:22 -05:00
Ben Liblit ed0ddd780f Correct HTML embedded in Javadoc comments
Most of the invalid HTML arose from bare "<" and ">" characters.
These should be escaped as "&lt;" and "&gt;" when not intended to
introduce HTML tags.  When you have many such characters close
together, "{@literal ...}" is a nice, readable alternative that
automatically escapes its contents.  If the text in question is
intended to be a code fragment, then "{@code ...}"  is appropriate:
this is essentially equivalent to "<code>{@literal ...}</code>".

There were a few other HTML violations too, but none common enough to
be worth detailing here.
2016-11-28 11:14:41 -06:00
Martin Mohr f2a4bba83f bugfix in debug output: only take item from worklist if it is not empty 2015-06-14 23:33:43 -07:00
Collin Winter 33d3139667 Use Arrays.toString() instead of the default array toString() method.
The former will include the contents of the array, while the latter
only includes the object's identity.

This will allow WALA to be compiled using Google's error-prone compiler
(https://github.com/google/error-prone).
2015-03-25 19:02:28 -07:00
Juergen Graf c05415720e remove custom change markers for code that will be merged to main branch 2014-08-01 12:27:22 +02:00
Juergen Graf 4772f36d47 add standard type parameter to most pointer analysis references. When it breaks we move back to ? extends InstanceKey. 2014-05-20 22:00:06 +02:00
Tobias Blaschke 964a0d86b9 Debug-Output only
No changes on the inner workings, only provided better Debug-Messages.
2014-04-11 17:50:17 +02:00
Juergen Graf cdaaddf88b Merge branch 'wala' into master 2013-07-02 14:23:24 +02:00
Julian Dolby 080325b5f6 merge 2013-06-25 11:57:37 -04:00
Juergen Graf 61d7a33928 remove warnings in com.ibm.wala.core 2013-03-12 00:50:17 +01:00
Manu Sridharan 256cd06460 Convert all Java source files to use Unix line endings; no semantic change 2012-09-04 15:56:05 -07:00
dolby-oss a9ec87f360 Changes motivated by analysis issues in JavaScript. The main change is that calls of the form f.x() in JavaScript are now analyzed like 'method calls' so that the 'this' pointer in the receiver functions can be filtered based upon the types that actually have the method being invoked. This requires much more dynamic filtering than in a language like Java, since properties like 'x' are simply properties that happen to hold functions, and so can be assigned in a first-class manner. Thus, the filtering needs to handle variance in both the types and the values of their properties; this is implemented as multiple levels of abstract object directed side effect equations in the dataflow system.
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@4535 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2012-03-01 02:45:51 +00:00
dolby-oss 4da02a9125 Changes to extend supported context sensitivity to CPA-style:
1) extend ContextSelector interface to allow it to specify parameters of interest
  2) extend filtering mechanism at call sites to allow CPA-style filtering when requested by contexts
  3) various related fixes and extensions:
    a) removed redundant code to handle dispatch for JavaScript, so now it shares the core mechanism
    b) tighten types for operators that take an array of args - now the array is T[] at the cost of a few array allocation methods
    c) a bit more support for empty int sets
    d) void function objects
    e) bug fixes for lexical scoping support, and adaptation to work with core dispatch mechanism
    f) example of CPA-style sensitivity to handle nastiness in a JavaScript for(.. in ...) loop
    

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@4150 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2011-04-27 13:58:56 +00:00
sjfink fa825de846 refactoring of fixpoint API
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@4033 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2011-01-17 21:43:18 +00:00
msridhar1 447823c629 kill unused supportRefinement option
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3833 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2010-05-12 18:30:55 +00:00
sjfink 8d636def47 tweak comments
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3672 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-06-12 15:22:26 +00:00
sjfink de6adbc4d7 more migration to Java assertions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3559 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-05-01 17:42:28 +00:00
sjfink 17c2aa7588 remove unnecessary ClassHierarchyExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3558 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-05-01 13:04:33 +00:00
sjfink 9939142eae switch from Assertions._assert to Java assertions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3555 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-04-30 13:16:52 +00:00
msridhar1 e08ed2663f Deprecate Iterator2Collection.toCollection(); use toSet() or toList() instead.
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3421 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-04-09 15:24:42 +00:00
sjfink b8f49b5564 precondition checks and documentation
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3310 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-03-13 21:16:38 +00:00
sjfink bc88234330 more IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3290 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-03-12 13:23:41 +00:00
sjfink c54d9057de more IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3288 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-03-11 20:46:21 +00:00
sjfink 8edeaf893d more IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3287 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-03-11 20:10:40 +00:00
sjfink 4d1f7ab35f more IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3272 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-03-10 21:18:07 +00:00
msridhar1 021f6e0317 expose graph view of constraints that includes implicit constraints
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3206 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2009-02-03 19:23:22 +00:00
msridhar1 3988bbda96 added debugging code to do type checking of points-to sets
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2752 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2008-04-08 16:44:30 +00:00
sjfink d427d32b6b tweak some debugging statements
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2660 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2008-03-04 15:01:02 +00:00
sjfink e6a904b715 just refactoring ... introduce 2 new packages in wala.util.
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2446 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2008-01-24 22:05:28 +00:00
sjfink 87b712b8ed add some assertions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2345 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2008-01-10 20:04:06 +00:00
sjfink 6723d33683 bug fix and related API changes for interface type tests
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2104 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-12-05 19:49:03 +00:00
sjfink 59241d6dab a new factory for MutableMapping and some logic cleanups
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1943 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-10-24 20:20:07 +00:00
sjfink a91ded2ba3 hide Pair constructor; misc. generics-related cleanups
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1700 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-08-31 23:19:45 +00:00
sjfink eb91983f53 lots of new generics for fixed point solver hierarchy
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1694 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-08-31 21:38:28 +00:00
sjfink a304c60f79 more type parameters from Manu
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1391 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-07-07 01:57:47 +00:00
sjfink 5eb76541f0 massive overhaul of Warnings management
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1382 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-07-06 22:08:13 +00:00
sjfink 8864b70d50 miscellaneous housekeeping
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1364 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-07-06 03:07:14 +00:00
sjfink 6421783e52 introduce factory for Iterator2Collection
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1308 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-06-21 16:14:00 +00:00
sjfink 65cc4433cd make some fields final
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1244 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-06-05 14:01:26 +00:00
sjfink 8e52444761 make many fields final
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1232 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-06-01 21:38:35 +00:00
sjfink ea3caa1e8a mostly clean up old comments.
also rename InferGraphRootsImpl to InferGraphRoots

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1200 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-05-30 19:05:23 +00:00
sjfink fdb7a17af3 add @Overrides annotations and nuke unnecessary casts
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1197 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-05-30 15:16:05 +00:00
sjfink 4acf542744 validate some arguments; throw IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1119 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-05-15 03:15:05 +00:00
sjfink ed509d5910 throw IllegalArgumentExceptions
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1098 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-05-08 21:49:58 +00:00
dolby-oss 2dc8f805d4 major change is reworking how filtering works in the propagation call graph builders. The old notion of a filter as a type or an instance key has been replaced with an interface TypeFilter that supports arbitrary filtering. The class and instance key filters have been redone to use it, and a new filter that filters for types that dispatch to a particular method has also been added.
other minor changes:

TypeInference:
 1) fix to handle constant that is the last value number
 2) add visitor to set result of instanceof to boolean if doPrimitives
 3) PrimitivePropagateOperator not final to allow specialization
PrimitiveType:
 mimic Java semantics for implicit upcasts: add notion of size and 
 define meet to take larger size
SSASwitchInstruction:
 add iterator for switch labels
cfg.Util:
 add more helpers for dealing with switches


git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@838 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2007-03-12 01:56:32 +00:00
sjfink 59f5f9d69e introduce ClassHierarchyDweller
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@516 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2006-12-21 19:03:50 +00:00
sjfink df97f42b7e attempt to introduce tags and trunk
git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@490 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
2006-11-22 17:38:46 +00:00