about summary refs log tree commit diff
path: root/third_party/git/contrib/coccinelle/README
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/contrib/coccinelle/README')
-rw-r--r--third_party/git/contrib/coccinelle/README43
1 files changed, 0 insertions, 43 deletions
diff --git a/third_party/git/contrib/coccinelle/README b/third_party/git/contrib/coccinelle/README
deleted file mode 100644
index f0e80bd7f037..000000000000
--- a/third_party/git/contrib/coccinelle/README
+++ /dev/null
@@ -1,43 +0,0 @@
-This directory provides examples of Coccinelle (http://coccinelle.lip6.fr/)
-semantic patches that might be useful to developers.
-
-There are two types of semantic patches:
-
- * Using the semantic transformation to check for bad patterns in the code;
-   The target 'make coccicheck' is designed to check for these patterns and
-   it is expected that any resulting patch indicates a regression.
-   The patches resulting from 'make coccicheck' are small and infrequent,
-   so once they are found, they can be sent to the mailing list as per usual.
-
-   Example for introducing new patterns:
-   67947c34ae (convert "hashcmp() != 0" to "!hasheq()", 2018-08-28)
-   b84c783882 (fsck: s/++i > 1/i++/, 2018-10-24)
-
-   Example of fixes using this approach:
-   248f66ed8e (run-command: use strbuf_addstr() for adding a string to
-               a strbuf, 2018-03-25)
-   f919ffebed (Use MOVE_ARRAY, 2018-01-22)
-
-   These types of semantic patches are usually part of testing, c.f.
-   0860a7641b (travis-ci: fail if Coccinelle static analysis found something
-               to transform, 2018-07-23)
-
- * Using semantic transformations in large scale refactorings throughout
-   the code base.
-
-   When applying the semantic patch into a real patch, sending it to the
-   mailing list in the usual way, such a patch would be expected to have a
-   lot of textual and semantic conflicts as such large scale refactorings
-   change function signatures that are used widely in the code base.
-   A textual conflict would arise if surrounding code near any call of such
-   function changes. A semantic conflict arises when other patch series in
-   flight introduce calls to such functions.
-
-   So to aid these large scale refactorings, semantic patches can be used.
-   However we do not want to store them in the same place as the checks for
-   bad patterns, as then automated builds would fail.
-   That is why semantic patches 'contrib/coccinelle/*.pending.cocci'
-   are ignored for checks, and can be applied using 'make coccicheck-pending'.
-
-   This allows to expose plans of pending large scale refactorings without
-   impacting the bad pattern checks.