Commit Graph

63 Commits

Author SHA1 Message Date
Tagir Valeev
aa6829d7c1 [java-tests] IDEA-333831 Separate mock JDK and JetBrains annotations for testing
Also: avoid manual mocking of Java 10 classes in StreamCollector10Inlining test, use mockJDK11 instead
Also: rewrite SliceTestCase and its inheritors to LightJavaCodeInsightFixtureTestCase, as annotations.jar is not included into project created by DaemonAnalyzerTestCase
Also: 'mutates' attribute of @Contract annotation is resolvable now, as we can use newer jetbrains-annotations library.
Also: documentation tests now don't generate links to JetBrains annotations, which corresponds to the actual behavior in production

GitOrigin-RevId: e460826893c1277cb2b78b18aae9d5aca97d8333
2023-10-05 11:24:29 +00:00
Vladimir Krivosheev
50249d22c1 IJPL-238 fix BytecodeAnalysisResultsHighlightingTest
GitOrigin-RevId: 89b3726e70b73061b2b3abd6e9818a046b3e6209
2023-09-15 20:50:23 +00:00
Nikolay Chashnikov
91d3e0a72b cleanup: remove redundant '@author' tags from javadoc comments - 26
Now we have Code Vision hints which determine the author via Git history and show it in the editor automatically, and this information is more accurate than the tags which were automatically added when files were created.

GitOrigin-RevId: 535941a4b79bc36c173a27f3e505b43ffc85edc1
2023-01-18 17:02:50 +00:00
Tagir Valeev
6ffb7e417e [java-dfa] Extract "Constant conditions" into separate "Constant values" inspection (IDEA-58235)
GitOrigin-RevId: 95a81fcd1546afec31afc2a044a9ba5fa1337411
2022-09-08 21:30:59 +00:00
Tagir Valeev
231c892de2 [java-analysis] Test for IDEA-266180
GitOrigin-RevId: bf9e92df66a2b0abf56230cefa04887abc847b22
2021-04-23 08:39:03 +03:00
Tagir Valeev
7b359df0e1 [java-inference] Avoid -> new; pure contracts on methods returning Collection or Map
We assume that such methods return local object. However, we also assume that Collection/Map size is its field. But in fact, it may delegate to another collection

Fixes IDEA-266180 Constant conditions & exceptions false positive with Guava Lists

GitOrigin-RevId: ba6f76bd1b34b1b9503b4be1ce85119ba54f6b3e
2021-04-09 05:13:19 +00:00
Tagir Valeev
5a04ca5310 [java-inference] Failure contract: better null->fail inference (IDEA-230802)
GitOrigin-RevId: 778b9be125871e9002c719fb50f205a202439b2f
2021-03-11 11:27:57 +00:00
Tagir Valeev
b4c69a9cec [java-inference] Failure contract inference improved
GitOrigin-RevId: 687b4c909c1d2ae67d519ec71899d52fa3e29434
2021-03-11 11:27:56 +00:00
Tagir Valeev
da4a1cc6a5 [java-analysis] Purity solver optimizations
1. Stop loading equations if the solution is definitely impure and return value is known
2. Replace "mutates" map with single value in MethodAnnotations

GitOrigin-RevId: 1fd25b97060b3f5a3c9ce3b22c24baa10d35a6f7
2021-02-05 10:51:47 +00:00
Tagir Valeev
c5c09c693a [java-analysis] Hard-code that Throwable.initCause is mutates_this
This allows contract inference for methods like AssertionError(Object) constructor.
Fixes IDEA-260003 A warning is shown when Optional.get is called even when Optional.isPresent is verified before

GitOrigin-RevId: 548008f5462b828e0346f089474182f59ec39bd1
2021-01-22 12:55:45 +00:00
Tagir Valeev
d17aa59d6d IDEA-237601 Infer mutation signature from the bytecode
GitOrigin-RevId: d3c47f6a35f948f65f5d447d8561044d7ec9ce23
2020-04-14 12:31:00 +00:00
Tagir Valeev
097416297a Duplicate class files removed
GitOrigin-RevId: 7fa735dd7eaefadc358d6c6876f71d5fa2d14e2e
2020-04-14 12:31:00 +00:00
Tagir Valeev
6ed3465b66 BytecodeAnalysisIndex: use faster hashes; encode key in 12 bytes instead of 14
Bytes per class in integration test reduced from 2083 to 1900

GitOrigin-RevId: 1c0e84b6c70869283e9db48b718e44e78dc3c554
2019-11-07 02:40:58 +00:00
Tagir Valeev
79cc904ff9 BytecodeAnalysis: infer @NotNull for static final fields (for now: non-branching clinit only)
Fixes IDEA-223861 Infer static field nullability from the bytecode

GitOrigin-RevId: 2ee3102df5677e567defbe849900769237a728bc
2019-10-02 10:07:03 +00:00
Rustam Vishnyakov
123242c4b2 EditorConfig documentation test
GitOrigin-RevId: fd52ace3d7a32ecd02c2c5ab90e077967604c15e
2019-06-16 04:03:21 +03:00
Egor Zhdan
c1813cfb52 Cleanup: NotNull/Nullable
GitOrigin-RevId: b8e892f32ea84c2115973155dba7127b892cc36e
2019-06-16 04:02:08 +03:00
Anna Kozlova
91f7445298 constructor reference: don't ignore constructor parameters during method reference inference (IDEA-185578)
GitOrigin-RevId: e836468e05db28157713e9edd3c70382f8ecdebc
2019-06-13 03:15:49 +03:00
Egor Zhdan
39d2d77155 Cleanup: NotNull/Nullable
GitOrigin-RevId: b8e892f32ea84c2115973155dba7127b892cc36e
2019-06-13 03:14:35 +03:00
Dmitry Avdeev
83f21c7197 Merge remote-tracking branch 'origin/master'
GitOrigin-RevId: 211e84dab4063848c1d3d835a526271ee1466636
2019-05-07 17:03:19 +03:00
Dmitry Avdeev
f9664fc455 IDEA-211555 Freeze on completion in XML file
do not process xincludes in ExtensionDomExtender

GitOrigin-RevId: d631dcd52d5bf500b61960473e16237008ad02a3
2019-05-07 17:02:41 +03:00
Alexey Kudravtsev
5910039653 attach JDK Annotations automatically on JDK creation to fix IDEA-211771
GitOrigin-RevId: 975cffd646b68abb31a61eb6ac50de264c428cdc
2019-05-03 03:07:50 +03:00
peter
506f7989e0 Revert "IDEA-201136 Update velocity library to 2.0"
it's too troublesome and has no clear benefits for now
we can return to this when we have more convincing reasons to upgrade than just "it's too old"
2019-01-14 22:18:42 +01:00
peter
c1d1037f47 IDEA-201136 Update velocity library to 2.0 2019-01-02 12:59:17 +01:00
Tagir Valeev
5422868682 BytecodeAnalysisIntegrationTest: depend on exact versions of velocity and collections 2018-10-26 16:00:05 +07:00
nik
224d9ced70 update commons-collection (IDEA-198976) 2018-10-25 09:37:06 +03:00
Roman Shevchenko
e0589b585f [tests] migrates bytecode analysis tests to light test case
... and moves test data out of source code
2018-09-14 14:45:43 +02:00
Tagir Valeev
8446c4bce4 Testdata fixed after dfa_refactoring 2018-08-08 17:48:41 +07:00
Tagir Valeev
1aae19b0df BytecodeAnalysisIndex: support new/this/paramX contracts
IDEA-191302 Introduce new contract return values: this, new, paramX
2018-05-04 17:44:23 +07:00
Tagir Valeev
37a4a385ab BytecodeAnalysisIntegrationTest: add missing commons-collection annotations after moving velocity to maven
Before commons-collections was packed inside the velocity.jar and many classes were removed from there
2018-03-30 14:14:22 +07:00
Tagir Valeev
b144fc264e Purity inference: fix expected data (which was not updated due to non-invalidated local cache) 2018-01-19 10:22:28 +07:00
Tagir Valeev
1aa64e3da2 IDEA-185138 Bytecode purity inference: do not infer method as pure if it reads the volatile field 2018-01-18 17:57:51 +07:00
Tagir Valeev
b414748d24 BytecodeAnalysis: force purity of enum.ordinal() and array.clone() 2018-01-15 16:29:57 +07:00
Maxim.Mossienko
4d165172dd update testdata to reflect newer mock jdk 1.7 2017-06-13 15:09:42 +02:00
Tagir Valeev
82da560c31 Introduced AggressiveHardCodedPurity under registry key (IDEA-CR-21434)
New key = java.annotations.inference.aggressive.hardcoded.purity (true
by default). Implies purity for Object.toString(), Iterable.iterator(),
Iterator.hasNext() and this-changing Iterator.next(). Parameter-changing
 mode supported for hardcoded purity.
2017-05-30 17:38:23 +07:00
Tagir Valeev
97eaee737b BytecodeAnalysis refactoring: HKey and Key merged to EKey; hashing is encapsulated inside HMethod/Method pair 2017-05-30 13:17:05 +07:00
Tagir Valeev
60e8eb5948 PurityAnalysis: Object.toString hardcoded pure 2017-05-29 15:14:46 +07:00
Tagir Valeev
668fcdd985 PurityAnalysis: more native methods hardcoded 2017-05-25 15:22:20 +07:00
Tagir Valeev
5599cc543f BytecodeAnalysis: infer failing contracts; infer contracts for input boolean arguments; squash inferred contracts; refactoring 2017-05-24 11:49:05 +07:00
Tagir Valeev
871ef095bb PurityAnalysis: StringBuffer.toString is also hardcoded (used for string concatenation in older java versions) 2017-05-24 10:45:15 +07:00
Tagir Valeev
9f7b27a7cc BytecodeAnalysisIntegrationTest: expected annotations fixed (somehow these two were missing) 2017-05-18 14:40:57 +07:00
Tagir Valeev
c41245708f Bytecode analysis: purity inference improvement (also fixes IDEA-172989):
1. Lambda/method reference creation is pure
2. String concatenation is pure
3. Constructor which only modifies own fields (calls setters, etc.) is pure
4. Exception creation is pure
5. A few hardcoded native methods
2017-05-18 10:52:53 +07:00
Roman Shevchenko
c1e9f34a41 [java] improves resolve inside .class file 2016-06-06 15:30:39 +03:00
Ilya Klyuchnikov
00712ecdf5 new annotations 2015-12-30 13:22:42 +03:00
Ilya Klyuchnikov
414ec9db35 IDEA-145968: a change in test data 2015-10-12 15:00:23 +03:00
peter
4d76c50f69 add LinkedHashMap to mockJdk7 2015-10-06 15:27:44 +02:00
Ilya Klyuchnikov
7944b7a260 IDEA-145494: reformatting test data 2015-10-05 18:27:37 +03:00
Ilya Klyuchnikov
ac3ee3b425 IDEA-144129: support for inferred negated contracts 2015-09-25 15:01:31 +03:00
peter
e5d728e7a4 don't return inferred annotations that will be neglected anyway (e.g. on overrideable methods) 2014-12-03 17:40:04 +01:00
Ilya Klyuchnikov
2cec677727 Testing Inference of '@Contract(pure=true)' annotations: delta in test data 2014-10-16 08:51:38 +04:00
Ilya Klyuchnikov
582239346e bytecode analysis: no inference of "true|false->..." contracts 2014-10-01 17:50:41 +04:00