Skip to content

Commit

Permalink
version 2.4.8
Browse files Browse the repository at this point in the history
  • Loading branch information
christopheexakat committed Aug 24, 2022
1 parent 9aabfe4 commit 8ce5c53
Show file tree
Hide file tree
Showing 14 changed files with 78,087 additions and 88,970 deletions.
21 changes: 10 additions & 11 deletions Administrator/Installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -426,17 +426,16 @@ When producing a report with Github action, the result is either send to STDOUT,
`Github upload <https://github.com/actions/upload-artifact>`_, aka actions/upload-artifact@v2, is a solution to upload the results. Add the following configuration in the action file :

::

- name: Exakat
uses: docker://exakat/exakat-ga
- with:
///... possible other directives
project_reports: Diplomat
/// project_reports may include other reports, like Sarif and Perfile
- uses: actions/upload-artifact@v2
with:
name: my-exakat-report
path: /github/workspace/diplomat
- name: Exakat
uses: docker://exakat/exakat-ga
- with:
///... possible other directives
project_reports: Diplomat
/// project_reports may include other reports, like Sarif and Perfile
- uses: actions/upload-artifact@v2
with:
name: my-exakat-report
path: /github/workspace/diplomat

The report files are stored in the ``/github/workspace`` folder, with different names depending on the requested exakat report. For example, the `Sarif` report is exported to the file 'exakat.sarif', while the `Diplomat` report is stored in the folder called 'diplomat'. Thus, the configuration shall be :

Expand Down
300 changes: 293 additions & 7 deletions Annex.rst

Large diffs are not rendered by default.

297 changes: 5 additions & 292 deletions Changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Release Note

Here is the release note of exakat.

**Version 2.5.0 (Wang Gui, 2022-09-07)**
**Version 2.4.0 (****, 2022-04-20)**


+ Architecture
Expand All @@ -24,295 +24,6 @@ Here is the release note of exakat.
+ Tokenizer
+

**Version 2.4.9 (Xue Rengui, 2022-08-24)**


+ Architecture
+

+ Cobbler
+

+ Report
+

+ Analysis
+ Refactored analysis : strange names now covers types too.

+ Tokenizer
+ Fixed detection of constant in ternary/coalesce

**Version 2.4.7 (Xu Jingzong, 2022-08-03)**


+ Architecture
+

+ Cobbler
+ New cobbler : remove brackets to single-instruction commands

+ Report
+ New inventory : IP

+ Analysis
+ Refactored analysis : Could Use Array_sum()
+ Refactored analysis : Wrong Attribute with properties
+ Refactored analysis : implode Args order now support types
+ Refactored analysis : fopen mode does accept rw
+ Refactored analysis : references on objects (full refactor)
+ New analysis : finding empty arrays with comparisons
+ New analysis : using strict with in_array or not
+ New analysis : no default for referenced parameter
+ New analysis : No clone constant before PHP 8.1
+ New analysis : Complete enum cases with definition to value and name
+ Refactored analysis : better handling of clone in Variable Typehint
+ Refactored analysis : cleaned some false positives with Undefined Properties
+ Refactored analysis : Unresolved use now uses stubs; upgrade in function/const coverage
+ Removed analysis : ext/recode, ext/runkit, ext/ming
+ Refactored analysis : Better coverage for 1 + []
+ Refactored analysis : Difference preference has gremlin upgraded
+ New analysis : Ext/random (PHP 8.2)
+ New analysis : IP inventory
+ Refactored analysis : JsonSerialize and ReturnTypeWIllChange cover new methods

+ Tokenizer
+ Added support for -> out of Enum cases (with name and value)
+ Added new classes from PHP 8.2
+ Fixed missing fullnspath for attributes with absolute path
+ Added all attributes to properties

**Version 2.4.6 (Li Yuanji, 2022-07-20)**


+ Architecture
+ Skip loading of WS property when only doing an audit (speed up loading)
+ Finished moved to Gremlin 3.6

+ Cobbler
+ New cobbler : adds brackets to single-instruction commands

+ Report
+ Ambassador : refactored trait matrix

+ Analysis
+ Refactored analysis : Wrong Type Hint with First Class Callable
+ New analysis : PHP 8.2 new functions
+ Refactored analysis : Useless Cast takes advantages of const types

+ Tokenizer
+ Typed all internal atoms
+ Added types to internal loading engine

**Version 2.4.5 (Li Yuanji, 2022-07-07)**


+ Architecture
+ Docs : fixed presentation for cobblers

+ Cobbler
+ New cobbler : remove abstract option

+ Report
+

+ Analysis
+ Refactored analysis : No Pss Outside Class also checks for static closures
+ New analysis : Report errors in sprintf() formats
+ New analysis : Report methods and properties with the same name in a class
+ New analysis : Report invalid chars in date scanning formats
+ Refactored analysis : Useless Coalesce applied to PHP native methods
+ New analysis : Report Abstract Private methods in traits (php 8.0-)
+ Refactored analysis : Dynamic New now also works on parenthesis
+ New analysis : Report Utf8_encode() and utf8_decode() deprecation
+ Refactored analysis : Create Default Values checks on self-transforming variables
+ Refactored analysis : Missing Typehint skips constructor and destructor
+ Refactored analysis : Useless constructor skip one that has other constructor calling it
+ New analysis : Some Magic methods have compulsory return types
+ Refactored analysis : Overwritten const is extended to classes without constants (but in their parent or interfaces)
+ Refactored analysis : Nested ternaries now checks assignations, New parameter to set the min depth
+ Refactored analysis : Instantiating Abstract now uses PDFF
+ Refactored analysis : $this may be OK in closures (they can be rebinded later)
+ Refactored analysis : Adding 'Void' returntype when possible
+ Refactored analysis : Don't Collect Void was upgraded with methods returning nothing.
+ Refactored analysis : Identical Expressions, now checks = and omits short assignations
+ New analysis : If Then Return Favorite
+ Refactored analysis : Useless Casting checks % distinctly
+ Refactored analysis : Add Zero skips variables more often
+ New analysis : Could Be Resource
+ New analysis : DateTime Immutable is not immutable

+ Tokenizer
+ Fixed namespace's names dectection for older PHP versions
+ Fixed Functioncall detection inside a new operator.

**Version 2.4.4 (Li Jiancheng, 2022-06-23)**


+ Architecture
+ Upgraded to Gremlin 3.6.0 (tinkergraph)
+ Prepared engine to work with GSneo4j 3.6.0

+ Cobbler
+ New cobbler : turn ${a} into {$a} for PHP 8.2 compatibility
+ Refactored cobbler : Adds null type to nullable parameters

+ Report
+

+ Analysis
+ Refactored analysis : Non nullable setter skip properties set in constructor
+ Removed analysis : ext/ffmpeg, ext/fdf, ext/xcache, ext/yis, ext/cairo
+ Refactored analysis : ext/rdkafka, ext/zookeeper now uses PDFF
+ Refactored analysis : Should Preprocess, now include local constant strings
+ Refactored analysis : Undefined Interface, now not reporting extra Types
+ New analysis : retyped reference, when a parameter with a type, eventually get a new type
+ Refactored analysis : Static methods called from object, modernization
+ Refactored analysis : New Analyzers, omits local defaults values
+ Refactored analysis : Access Protected now takes into account PDFF
+ Refactored analysis : Null type detection includes null defaut value for parameters.
+ New analysis : Report type error for default values
+ Refactored analysis : 'ds', 'ssh2' were upgraded to PDFF
+ Checked unit tests : 4373 / 4349 test pass (99.5% pass)
+ New analysis : Ice framework
+ New analysis : taint

+ Tokenizer
+ Fixed 'constant' bug with functioncall on a nsname
+ Upgraded Typehint detection to handle clone() calls
+ Upgraded Typehint inference for properties and variables

**Version 2.4.3 (Emperor Gaozu of Tang, 2022-06-02)**


+ Architecture
+ Doctor failed to copy the tinkergraph configuration files
+ Removed old connector GSneo4j/Tinkergraph
+ Refactored starting/emptying of gremlin database
+ Testing on PHP 8.2

+ Cobbler
+ Added suggestions when the -P is not found
+ New cobbler : add Final to classes
+ New cobbler : removes Final from classes
+ Upgraded cobbler : removes Readonly from classes

+ Report
+ Ambassador, Emissary, Diplomat : removed link to the source code.
+ Ambassador, Emissary, Diplomat : fixed link to online documentation

+ Analysis
+ Fixed analysis : Undefined Classes and Trait where affected by the recent Complete/Returntyping
+ Refactored analysis : 'Variables Used Once' not omit inherited parameters.
+ Refactored analysis : 'Functions without return' not skip methods with Never and methods that throw in the main sequence.
+ New analysis : 'Parent is not Static', but rather self
+ Refactored analysis : 'Use This'
+ Refactored analysis : 'Extension/Extxhprof' to PDFF
+ Refactored analysis : Removing usage of methods, moving to PDFF
+ New analysis : 'No magic method for Enums'
+ Refactored analysis : 'Multiple Identical Keys' now also processes automated index
+ New analysis : 'Modifying Readonly' (WIP)
+ Refactored analysis : 'Could use short assignation' skips usage of ??
+ New analysis : 'Readonly Can only be assigned in defining class'
+ Refactored analysis : 'Runkit7' was upgraded to PDFF
+ Refactored analysis : 'Gnupg' was upgraded to PDFF
+ Refactored analysis : 'xdiff' was upgraded to PDFF
+ Refactored analysis : 'event' was upgraded to PDFF
+ New analysis : ext/stomp, ext/csv
+ New analysis : Suggestion making the default assignation in property definition
+ Refactored analysis : 'Redefined private properties' now covers PDFF too
+ Refactored analysis : 'Failing Stubstr Comparison' now accepts != <>
+ Refactored analysis : 'Insufficient typehint' extended with class constants
+ Refactored analysis : 'Unused constant' takes advantage of hierarchy
+ Refactored analysis : 'Useless Abstract' extended to include single extended classes
+ Refactored analysis : 'Mismatched Default Value' now omits parameters without default value
+ New analysis : method is identity
+ New analysis : report overloaded existing names in use, from PDFF
+ New analysis : collect incoming date inventory
+ New analysis : collect vendor's API usage
+ New analysis : report Array addition usage
+ Checked unit tests : 4373 / 4349 test pass (99.5% pass)

+ Tokenizer
+ Added support for PHP 8.2 readonly classes
+ Fixed bug that made VariableTypehint automatically isPHP

**Version 2.4.2 (Li Chunfeng, 2022-05-18)**


+ Analysis
+ Refactored analysis : 'Raised access Level' now supports PDFF files
+ Refactored analysis : 'Cant Extends Final' also Works with anonymous classes
+ New analysis : Report 'Lowered access levels'
+ Refactored analysis : 'Final methods' extended to traits
+ Refactored analysis : 'Overwritten Methods' fixed bug with Traits
+ New analysis : 'Cant extends Final Methods'
+ Refactored analysis : 'Cant extends Final Constants' with PDFF support
+ New analysis : 'Extension Excimer'
+ New analysis : 'Report implicit float to int conversions'
+ Refactored analysis : 'Is always false' is extended to typed properties
+ New analysis : 'Report inegalities with different types'
+ New analysis : Report traits used once
+ Refactored analysis : 'Is Not Implements' now supports PDFF; support for trait added.
+ Refactored analysis : 'Wrong name with paramter' : added support for PDFF
+ Fixed analysis : 'Overwritten Methods' skipped some interfaces
+ Refactored analysis : 'Fossilized methods' was counting methods that are defined with Virtualmethod
+ Refactored analysis : 'Fix bug' when missing fqn in New for Classes/WrongTypedPropertyInit
+ New analysis : Report unknown locales.
+ New analysis : ext/pkcs11
+ New analysis : ext/spx
+ Checked unit tests : 4314 / 4317 test pass (99% pass)
+ Refactored analysis : 'Basename suffix' detection extended

+ Tokenizer
+ Fixed bug with float and power
+ Fixed bug in global variable creation
+ Create all possible links to static keyword
+ Speed up creation of links to $GLOBALS

**Version 2.4.1 (Yuan Tiangang, 2022-05-04)**


+ Architecture
+ New Dump : collect all stub's structures

+ Report
+ Sarif : Fixed URI (no initial /) and Exakat version
+ Unused : report unused stuff in the code
+ Ambassador : upgrade presentation of the Exception Treephp

+ Analysis
+ New analysis : Deprecated String interpolation in PHP 8.2
+ Refactored analysis : Spaceship features is used for isRead property
+ Refactored analysis : Skip analysis of returntypes for methods with throw/assert/trigger_error()
+ New analysis : Report unused Enumeration Cases
+ Refactored analysis : Can't instantiate class now takes local class into account
+ Refactored analysis : Many new examples extracted from the docs
+ Refactored analysis : fixed bug with 'Wrong Type With Call'
+ Refactored analysis : Conditional structures now includes Enums too.
+ New analysis : Don't throw raw exceptions
+ New analysis : Useless Coalesce operator (when there is a type available)
+ New analysis : ext/yar
+ Refactored analysis : 'Wrong number of argument' now includes methods defined in a trait in a PDFF
+ Refactored analysis : moved ext/amqp to PDFF

**Version 2.4.0 (Yin Kaishan, 2022-04-20)**


+ Report
+ Ambassador : suggest literals to be turned into a constant, based on assignation and comparison

+ Analysis
+ Refactored analysis : 'Classes/WrongCase' reported too many arguments
+ New analysis : No constructor in interfaces
+ Refactored analysis : Bail Out Early also report if/then when in last position of an sequence
+ Refactored analysis : Useless Casting also checks for double application of typehint/cast
+ New analysis : Could Be A constant (in Dump)
+ New analysis : Could Be Spaceship
+ Refactored analysis : Vendors/Concrete5 is updated to Concrete5 v9.0
+ New analysis : Vendors Sylius
+ Refactored analysis : Vendors/Joomla is updated to Joomla 4.2.0
+ Refactored analysis : Wrong Number Of Arguments supports Constructors and methods (static and normal)

**Version 2.3.9 (Fu Yi, 2022-04-06)**


Expand All @@ -322,6 +33,9 @@ Here is the release note of exakat.
+ Cobbler
+ New cobbler : adds 'function array_key_exists' to the list of use statements to speed up array_key_exists.

+ Report
+

+ Analysis
+ Refactored analysis : Fixed bug with 'each' and namespaces in Php/Deprecated
+ Refactored analysis : Next Month Trap was updated with support for datetime (Immutable)
Expand All @@ -343,10 +57,9 @@ Here is the release note of exakat.
+ Refactored analysis : Upgraded Property analysis to use PDFF
+ Refactored analysis : 'Multiple identical keys' now has an array size limit (15000)
+ New analysis : Constant favorite : use or not?
+ Refactored analysis : Upgraded 'Unresolved classes' with Pdff support

+ Tokenizer
+ Fixed isPhp/isExt/isStub detection for catch classes
+

**Version 2.3.8 (Xiao Yu, 2022-03-23)**

Expand Down
4 changes: 2 additions & 2 deletions Introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Introduction
============

This is the documentation of the Exakat engine, version 2.4.7 (Build 1382), on Tue, 02 Aug 2022 16:51:02 +0000.
This is the documentation of the Exakat engine, version 2.3.9 (Build 1308), on Sat, 26 Mar 2022 06:32:19 +0000.

What is Exakat ?
----------------
Expand Down Expand Up @@ -86,7 +86,7 @@ Platforms

`Exakat <http://www.exakat.io/>`_ is an Open Source tool. The code is available on `Github.com/exakat/exakat <https://github.com/exakat/exakat>`_, as `Docker image <https://hub.docker.com/r/exakat/exakat/>`_ and `Vagrant file <https://github.com/exakat/exakat-vagrant>`_. It is also available as a phar `download <https://www.exakat.io/download-exakat/>`_.

`Exakat Cloud <https://www.exakat.io/exakat-cloud/>`_ is a SaaS platform, offering exakat audits on code, anytime, at reduced cost.
`Exakat cloud <https://www.exakat.io/exakat-cloud/>`_ is a SaaS platform, offering exakat audits on code, anytime, at reduced cost.

`Exakat SAS <https://www.exakat.io/get-php-expertise/>`_ is a Service company, providing consulting and training services around automated analysis and code quality for PHP.

Expand Down

0 comments on commit 8ce5c53

Please sign in to comment.