UPSTREAM: Coccinelle: Add misc/boolconv.cocci

Add a script to check for unneeded conversions to bool.

Change-Id: I881d423eb72595b11a861eaf01c0c8eb8f262e05
Signed-off-by: Andrew F. Davis <afd@ti.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 75238b9e6a)
This commit is contained in:
Andrew F. Davis 2016-10-17 11:52:24 -05:00 committed by Huang, Tao
parent 38ceb6a5d2
commit d274d003e3

View File

@ -0,0 +1,90 @@
/// Remove unneeded conversion to bool
///
//# Relational and logical operators evaluate to bool,
//# explicit conversion is overly verbose and unneeded.
//
// Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2.
virtual patch
virtual context
virtual org
virtual report
//----------------------------------------------------------
// For patch mode
//----------------------------------------------------------
@depends on patch@
expression A, B;
symbol true, false;
@@
(
A == B
|
A != B
|
A > B
|
A < B
|
A >= B
|
A <= B
|
A && B
|
A || B
)
- ? true : false
//----------------------------------------------------------
// For context mode
//----------------------------------------------------------
@r depends on !patch@
expression A, B;
symbol true, false;
position p;
@@
(
A == B
|
A != B
|
A > B
|
A < B
|
A >= B
|
A <= B
|
A && B
|
A || B
)
* ? true : false@p
//----------------------------------------------------------
// For org mode
//----------------------------------------------------------
@script:python depends on r&&org@
p << r.p;
@@
msg = "WARNING: conversion to bool not needed here"
coccilib.org.print_todo(p[0], msg)
//----------------------------------------------------------
// For report mode
//----------------------------------------------------------
@script:python depends on r&&report@
p << r.p;
@@
msg = "WARNING: conversion to bool not needed here"
coccilib.report.print_report(p[0], msg)