Skip to content

Commit

Permalink
version 2.6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
christopheexakat committed Nov 13, 2023
1 parent d7cb06e commit 1ba2410
Show file tree
Hide file tree
Showing 11 changed files with 473 additions and 450 deletions.
423 changes: 86 additions & 337 deletions Administrator/Installation.rst

Large diffs are not rendered by default.

25 changes: 1 addition & 24 deletions Annex.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,32 +54,24 @@ External links
List of external links mentioned in this documentation.

* `$HTTP_RAW_POST_DATA variable <https://www.php.net/manual/en/reserved.variables.httprawpostdata.php>`_
* `7z <https://www.7-zip.org/7z.html>`_
* `[HttpFoundation] Make sessions secure and lazy #24523 <https://github.com/symfony/symfony/pull/24523>`_
* `Add Exakat To Your CI Pipeline <https://www.exakat.io/add-exakat-to-your-ci-pipeline/>`_
* `Ambassador <https://exakat.readthedocs.io/en/latest/Reports.html#ambassador>`_
* `Aronduby Dump <https://github.com/aronduby/dump>`_
* `Atif Shahab Qureshi <https://twitter.com/Atif__Shahab>`_
* `Backward incompatible changes PHP 7.0 <https://www.php.net/manual/en/migration70.incompatible.php>`_
* `bazaar <https://bazaar.canonical.com/en/>`_
* `Benoit Burnichon <https://twitter.com/BenoitBurnichon>`_
* `Bitwise Operators <https://www.php.net/manual/en/language.operators.bitwise.php>`_
* `Brandon Savage <https://twitter.com/BrandonSavage>`_
* `Carbon <https://carbon.nesbot.com/docs/>`_
* `Carnage <https://twitter.com/giveupalready>`_
* `cat: write error: Broken pipe <https://askubuntu.com/questions/421663/cat-write-error-broken-pipe>`_
* `Classes Abstraction <https://www.php.net/abstract>`_
* `composer <https://getcomposer.org/>`_
* `continue-on-error <https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error>`_
* `curl <http://www.php.net/curl>`_
* `CVS <https://www.nongnu.org/cvs/>`_
* `Data structures <http://docs.php.net/manual/en/book.ds.php>`_
* `DCDFLIB <https://people.sc.fsu.edu/~jburkardt/c_src/cdflib/cdflib.html>`_
* `Deprecate and remove INTL_IDNA_VARIANT_2003 <https://wiki.php.net/rfc/deprecate-and-remove-intl_idna_variant_2003>`_
* `directive error_reporting <https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting>`_
* `Docker <http://www.docker.com/>`_
* `Docker image <https://hub.docker.com/r/exakat/exakat/>`_
* `dotdeb instruction <https://www.dotdeb.org/instructions/>`_
* `download <https://www.exakat.io/download-exakat/>`_
* `Empty Catch Clause <http://wiki.c2.com/?EmptyCatchClause>`_
* `Enchant spelling library <https://www.php.net/manual/en/book.enchant.php>`_
Expand All @@ -92,19 +84,14 @@ List of external links mentioned in this documentation.
* `foreach <https://www.php.net/manual/en/control-structures.foreach.php>`_
* `Frederic Bouchery <https://twitter.com/FredBouchery/>`_
* `George Peter Banyard <https://twitter.com/Girgias>`_
* `Git <https://git-scm.com/>`_
* `Github Action <https://docs.github.com/en/actions>`_
* `Github upload <https://github.com/actions/upload-artifact>`_
* `Github.com/exakat/exakat <https://github.com/exakat/exakat>`_
* `global namespace <https://www.php.net/manual/en/language.namespaces.global.php>`_
* `graphviz <http://www.graphviz.org/>`_
* `Gremlin server <http://tinkerpop.apache.org/>`_
* `hash <http://www.php.net/hash>`_
* `hash_algos <https://www.php.net/hash_algos>`_
* `Holger Woltersdorf <https://twitter.com/hollodotme>`_
* `How to fix Headers already sent error in PHP <http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php>`_
* `https://hub.docker.com/r/exakat/exakat-ga <https://hub.docker.com/r/exakat/exakat-ga>`_
* `https://www.exakat.io/ <https://www.exakat.io/>`_
* `https://www.exakat.io/versions <https://www.exakat.io/versions>`_
* `https://www.exakat.io/versions/index.php?file=latest <https://www.exakat.io/versions/index.php?file=latest>`_
* `ICU <http://site.icu-project.org/>`_
* `IERS <https://www.iers.org/IERS/EN/Home/home_node.html>`_
Expand All @@ -121,7 +108,6 @@ List of external links mentioned in this documentation.
* `Logical Operators <https://www.php.net/manual/en/language.operators.logical.php>`_
* `Marco Pivetta tweet <https://twitter.com/Ocramius/status/811504929357660160>`_
* `mcrypt_create_iv() <https://www.php.net/manual/en/function.mcrypt-create-iv.php>`_
* `mercurial <https://www.mercurial-scm.org/>`_
* `Migration80 <https://exakat.readthedocs.io/en/latest/Reports.html#migration80>`_
* `MongoDB driver <https://www.php.net/mongo>`_
* `mysqli <https://www.php.net/manual/en/book.mysqli.php>`_
Expand All @@ -141,34 +127,25 @@ List of external links mentioned in this documentation.
* `Prepare for PHP migration with Exakat <https://www.exakat.io/prepare-for-php-migration-with-exakat/>`_
* `PSR-3 <https://www.php-fig.org/psr/psr-3>`_
* `RabbitMQ AMQP client library <https://github.com/alanxz/rabbitmq-c>`_
* `rar <https://en.wikipedia.org/wiki/RAR_(file_format)>`_
* `Refactoring code <https://www.jetbrains.com/help/phpstorm/refactoring-source-code.html>`_
* `RFC 7159 <http://www.faqs.org/rfcs/rfc7159>`_
* `RFC 7230 <https://tools.ietf.org/html/rfc7230>`_
* `RFC 822 (MIME) <http://www.faqs.org/rfcs/rfc822.html>`_
* `RFC 959 <http://www.faqs.org/rfcs/rfc959>`_
* `Scope Resolution Operator (::) <https://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php>`_
* `Specification pattern <https://en.wikipedia.org/wiki/Specification_pattern>`_
* `sqlite3 <http://www.php.net/sqlite3>`_
* `Static Keyword <https://www.php.net/manual/en/language.oop5.static.php>`_
* `Svn <https://subversion.apache.org/>`_
* `tetraweb/php <https://hub.docker.com/r/tetraweb/php/>`_
* `Text <https://exakat.readthedocs.io/en/latest/Reports.html#text>`_
* `The main PPA for PHP (8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6) <https://launchpad.net/~ondrej/+archive/ubuntu/php>`_
* `tokenizer <http://www.php.net/tokenizer>`_
* `Tutorial 1: Let’s learn by example <https://docs.phalconphp.com/en/latest/reference/tutorial.html>`_
* `Type Casting <https://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting>`_
* `Type declarations <https://www.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration>`_
* `Type Juggling <https://www.php.net/manual/en/language.types.type-juggling.php>`_
* `unset <https://www.php.net/unset>`_
* `upload artifact <https://github.com/actions/upload-artifact>`_
* `V8 Javascript Engine <https://bugs.chromium.org/p/v8/issues/list>`_
* `Vagrant file <https://github.com/exakat/exakat-vagrant>`_
* `Vladimir Reznichenko <https://twitter.com/kalessil>`_
* `workflow_dispatch <https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow>`_
* `www.exakat.io <https://www.exakat.io/versions/>`_
* `YAML Ain't Markup Language <http://www.yaml.org/>`_
* `zip <https://en.wikipedia.org/wiki/Zip_(file_format)>`_



Expand Down
15 changes: 9 additions & 6 deletions Changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ Here is the release note of exakat.
+

+ Analysis
+ New analysis : report arrays that are used for append and direct index access at the same time
+ New analysis : report get_class() and get_parent_class() without arguments
+ Updated analysis : Literal inventory now reports float, array() and heredocs
+ New analysis : report usage of advanced static variable initialisation
+ New analysis : cannot be readonly
+ New analysis : report triplet stats from the internal graph

+ Tokenizer
+
Expand All @@ -50,6 +44,15 @@ Here is the release note of exakat.
+ Updated analysis : Shell favorite
+ New analysis : Casting Method Favorite
+ Updated analysis : Ellipsis detection improved
+ New analysis : report arrays that are used for append and direct index access at the same time
+ New analysis : report get_class() and get_parent_class() without arguments
+ Updated analysis : Literal inventory now reports float, array() and heredocs
+ New analysis : report usage of advanced static variable initialisation
+ New analysis : cannot be readonly
+ New analysis : report triplet stats from the internal graph
+ New analysis : report static variables outside a method
+ Updated analysis : Missing types are now covering class constants too
+ New analysis : report usage of Deprecated features (CITE, functions, parameters...)

**Version 2.6.0 (, 2023-10-04)**

Expand Down
156 changes: 154 additions & 2 deletions Gettingstarted/Tutorials.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,157 @@
Tutorials
*********

* `Prepare for PHP migration with Exakat <https://www.exakat.io/prepare-for-php-migration-with-exakat/>`_.
* `Installing Exakat to monitor several projects <https://www.exakat.io/installing-exakat-to-monitor-several-projects/>`_
* :ref:`First audit with Exakat <first-audit-local>`
* :ref:`First audit with Exakat (Docker) <first-audit-docker>`
* :ref:`In the code auditing with Exakat <in-code-auditing-local>`
* `Prepare for PHP migration with Exakat <https://www.exakat.io/prepare-for-php-migration-with-exakat/>`_ (=> exakat.io)
* `Installing Exakat to monitor several projects <https://www.exakat.io/installing-exakat-to-monitor-several-projects/>`_ (=> exakat.io)

.. _first-audit-local:

First audit with Exakat
-----------------------

In this tutorial, we'll use an open source project called 'sculpin' as a guinea pig. You can replace it with any accessible source code of yours. The name of the project is also 'sculpin', though this is both self-descriptive and arbitrary.

Init a project
################

::

php exakat.phar doctor
php exakat.phar init -p sculpin -R https://github.com/sculpin/sculpin.git

After this step, there is a folder 'sculpin' inside the 'projects' folder. The files will be stored there.

Run exakat
##########

::

php exakat.phar project -p sculpin -v

This command runs the default configuration over the requested code source. After displaying the different steps, it provides a first report: Diplomat.

Open the report, with a web browser: it is located in projects/sculpin/diplomat.

Congratulations, this is your first audit.

.. _first-audit-docker:

First audit with Exakat (Docker)
--------------------------------

In this tutorial, we'll use an open source project called 'sculpin' as a guinea pig. You can replace it with any accessible source code of yours. The name of the project is also 'sculpin', though this is both self-descriptive and arbitrary.

Init a project
################

::

docker run -it -v $(pwd)/projects:/usr/src/exakat/projects --rm --name my-exakat exakat/exakat exakat init -p sculpin -R https://github.com/sculpin/sculpin.git

After this step, there is a folder 'sculpin' inside the 'projects' folder. The files will be stored there.

::

docker run -it -v /home/my-user/.ssh:/home/exakat/ssh -v $(pwd)/projects:/usr/src/exakat/projects --rm --name my-exakat exakat/exakat exakat project -p sculpin -v


Run exakat
################

::

docker run -it -v $(pwd)/projects:/usr/src/exakat/projects --rm --name my-exakat exakat/exakat exakat project -p sculpin -v

This command runs the default configuration over the requested code source. After displaying the different steps, it provides a first report: Diplomat.

Open the report, with a web browser: it is located in projects/sculpin/diplomat.

Congratulations, this is your first audit.


In Code Auditing With Exakat (Local)
----------------------------------------

In this tutorial, we show how to run exakat within the code source itself, instead of running it with a separate folder.

As a pre requisite, you should have installed Exakat on your system, and, in a different folder, hold some source code that needs to be audited.

Init the project
################

Exakat recognizes the code as an auditable source code when it can find a ``.exakat.ini`` or ``.exakat.yaml`` file in the source.

The ``.exakat.yaml`` file :

::

project = "exakat";
project_reports[] = "Text";


The ``.exakat.yaml`` file :

::
---

project: exakat
project_reports:
- Text

In case both files are found, the ``.INI`` file has precedence.

Run exakat
################

::

php /path/to/installation/exakat.phar project -v

This command runs the default configuration over the code source. It displays immediately the audit as a Text file, directly in the terminal.

Congratulations, this is your first audit.

In Code Auditing With Exakat (Docker)
----------------------------------------

In this tutorial, we show how to run exakat within the code source itself, instead of running it with a separate folder. We'll use a Docker installation for that.

As a pre requisite, you should have pulled the exakat/exakat:latest on your docker installation; and, in a different folder, hold some source code that needs to be audited.

Init the project
################

Exakat recognizes the code as an auditable source code when it can find a ``.exakat.ini`` or ``.exakat.yaml`` file in the source.

The ``.exakat.yaml`` file :

::

project = "exakat";
project_reports[] = "Text";


The ``.exakat.yaml`` file :

::
---

project: exakat
project_reports:
- Text

In case both files are found, the ``.INI`` file has precedence.

Run exakat
###########

::

docker run -it -v $(pwd):/src --rm --name my-exakat exakat/exakat exakat project

This command runs the default configuration over the code source. It displays immediately the audit as a Text file, directly in the terminal.

Congratulations, this is your first audit.
2 changes: 1 addition & 1 deletion 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.6.1 (Build 1492), on Thu, 19 Oct 2023 14:02:40 +0000.
This is the documentation of the Exakat engine, version 2.6.1 (Build 1494), on Thu, 09 Nov 2023 09:39:55 +0000.

What is Exakat ?
----------------
Expand Down

0 comments on commit 1ba2410

Please sign in to comment.