[libvirt] [PATCH 0/9] Add semicolon to macro calls

Cole Robinson crobinso at redhat.com
Wed Jan 23 22:46:07 UTC 2019


Recently I was experimenting with the vim-ale plugin for
basic code validation on file write. For C the simplest
option seemed to be using cppcheck. However cppcheck when
trivially invoked on many files in our codebase will error
if a macro call is missing an ending semicolon. Example:

$ cppcheck -q src/qemu/qemu_command.c
[src/qemu/qemu_command.c:109]: (error) There is an unknown macro here somewhere. Configuration is required. If VIR_ENUM_DECL is a macro then please configure it.

Googling around it sounds like it's generally considered
good practice to end macro calls with a semicolon, and
we have mixed usage throughout the code. So let's standardize
on adding semicolon to a few macro calls.

The first 4 patches add semicolons to all VIR_ENUM_DECL,
VIR_ENUM_IMPL, VIR_LOG_INIT, VIR_ONCE_GLOBAL INIT calls

The next 4 patches rework the macro definitions slightly
so that the compiler will _require_ callers to specify
use a semicolon. I don't know if this is controversial
or not so I kept the patches separate, but they can
be squashed together if desired. The only one that's
kinda suspect is adding a dummy struct to eat the
semicolon in VIR_ONCE_GLOBAL_INIT, maybe someone has a
better suggestion.

The last patch is a bit of a detour but if we are
interested in doing it now is as good a time as we
will get: it changes VIR_ENUM_IMPL to add a newline
after the last entry. This means diffs extending the
enum value list only generate one line diff instead of
two. An example is in the patch description. If people
agree with the idea, it could be squashed into patch #2
to reduce 'git blame' pollution

Thanks,
Cole

Cole Robinson (9):
  Add semicolon to VIR_ENUM_DECL calls
  Add semicolon to VIR_ENUM_IMPL calls
  Add semicolon to VIR_LOG_INIT calls
  Add semicolon to VIR_ONCE_GLOBAL_INIT calls
  Require a semicolon for VIR_ENUM_DECL calls
  Require a semicolon for VIR_ENUM_IMPL calls
  Require a semicolon for VIR_LOG_INIT calls
  Require a semicolon for VIR_ONCE_GLOBAL_INIT calls
  Add newline after last entry in VIR_ENUM_IMPL calls

 src/access/viraccessperm.c              |  30 ++-
 src/bhyve/bhyve_conf.c                  |   2 +-
 src/conf/capabilities.c                 |   9 +-
 src/conf/cpu_conf.c                     |  21 +-
 src/conf/cpu_conf.h                     |  12 +-
 src/conf/domain_capabilities.c          |   5 +-
 src/conf/domain_conf.c                  | 313 ++++++++++++++++--------
 src/conf/domain_conf.h                  | 220 ++++++++---------
 src/conf/domain_event.c                 |   2 +-
 src/conf/interface_conf.c               |   3 +-
 src/conf/interface_conf.h               |   2 +-
 src/conf/netdev_vlan_conf.c             |   3 +-
 src/conf/network_conf.c                 |  17 +-
 src/conf/network_conf.h                 |   8 +-
 src/conf/network_event.c                |   2 +-
 src/conf/node_device_conf.c             |  12 +-
 src/conf/node_device_conf.h             |   8 +-
 src/conf/node_device_event.c            |   2 +-
 src/conf/numa_conf.c                    |   9 +-
 src/conf/numa_conf.h                    |   6 +-
 src/conf/nwfilter_conf.c                |  21 +-
 src/conf/object_event.c                 |   2 +-
 src/conf/secret_event.c                 |   2 +-
 src/conf/snapshot_conf.c                |   6 +-
 src/conf/snapshot_conf.h                |   4 +-
 src/conf/storage_adapter_conf.c         |   3 +-
 src/conf/storage_adapter_conf.h         |   2 +-
 src/conf/storage_conf.c                 |  24 +-
 src/conf/storage_conf.h                 |  16 +-
 src/conf/storage_event.c                |   2 +-
 src/conf/virdomainobjlist.c             |   2 +-
 src/conf/virinterfaceobj.c              |   2 +-
 src/conf/virnetworkobj.c                |   2 +-
 src/conf/virnodedeviceobj.c             |   2 +-
 src/conf/virnwfilterbindingobj.c        |   2 +-
 src/conf/virnwfilterbindingobjlist.c    |   2 +-
 src/conf/virsecretobj.c                 |   2 +-
 src/conf/virstorageobj.c                |   4 +-
 src/datatypes.c                         |   2 +-
 src/interface/interface_backend_netcf.c |   2 +-
 src/libxl/libxl_conf.c                  |   2 +-
 src/libxl/libxl_domain.c                |   2 +-
 src/libxl/libxl_domain.h                |   2 +-
 src/libxl/libxl_migration.c             |   2 +-
 src/locking/lock_daemon.c               |   5 +-
 src/logging/log_daemon.c                |   5 +-
 src/logging/log_handler.c               |   2 +-
 src/lxc/lxc_conf.c                      |   2 +-
 src/lxc/lxc_domain.c                    |   6 +-
 src/lxc/lxc_domain.h                    |   6 +-
 src/lxc/lxc_monitor.c                   |   2 +-
 src/network/leaseshelper.c              |   3 +-
 src/node_device/node_device_udev.c      |   2 +-
 src/qemu/qemu_agent.c                   |   8 +-
 src/qemu/qemu_blockjob.c                |   2 +-
 src/qemu/qemu_capabilities.c            |   2 +-
 src/qemu/qemu_command.c                 |  43 ++--
 src/qemu/qemu_command.h                 |   2 +-
 src/qemu/qemu_conf.c                    |   2 +-
 src/qemu/qemu_domain.c                  |  14 +-
 src/qemu/qemu_domain.h                  |   8 +-
 src/qemu/qemu_driver.c                  |  10 +-
 src/qemu/qemu_extdevice.c               |   2 +-
 src/qemu/qemu_migration.h               |   2 +-
 src/qemu/qemu_migration_cookie.c        |   3 +-
 src/qemu/qemu_migration_params.c        |   4 +-
 src/qemu/qemu_migration_params.h        |   2 +-
 src/qemu/qemu_monitor.c                 |  16 +-
 src/qemu/qemu_monitor.h                 |   8 +-
 src/qemu/qemu_monitor_json.c            |  18 +-
 src/qemu/qemu_tpm.c                     |   2 +-
 src/remote/remote_daemon.c              |   5 +-
 src/rpc/virkeepalive.c                  |   2 +-
 src/rpc/virnetclient.c                  |   2 +-
 src/rpc/virnetclientprogram.c           |   2 +-
 src/rpc/virnetclientstream.c            |   2 +-
 src/rpc/virnetdaemon.c                  |   2 +-
 src/rpc/virnetsaslcontext.c             |   2 +-
 src/rpc/virnetserver.c                  |   2 +-
 src/rpc/virnetserverclient.c            |   2 +-
 src/rpc/virnetserverprogram.c           |   2 +-
 src/rpc/virnetserverservice.c           |   2 +-
 src/rpc/virnetsocket.c                  |   2 +-
 src/rpc/virnettlscontext.c              |   2 +-
 src/test/test_driver.c                  |   2 +-
 src/util/vircgroup.c                    |   3 +-
 src/util/vircgroupbackend.c             |   3 +-
 src/util/vircgroupv1.c                  |   3 +-
 src/util/vircgroupv2.c                  |   3 +-
 src/util/virclosecallbacks.c            |   2 +-
 src/util/virconf.c                      |   3 +-
 src/util/virconf.h                      |   2 +-
 src/util/virdevmapper.c                 |   2 +-
 src/util/virdnsmasq.c                   |   2 +-
 src/util/virerror.c                     |   4 +-
 src/util/virfdstream.c                  |   2 +-
 src/util/virfilecache.c                 |   4 +-
 src/util/virfirewall.c                  |  12 +-
 src/util/virgic.c                       |   2 +-
 src/util/virhash.c                      |   2 +-
 src/util/virhook.c                      |  35 +--
 src/util/virhostdev.c                   |   2 +-
 src/util/viridentity.c                  |   2 +-
 src/util/virkeycode.c                   |   2 +-
 src/util/virlog.c                       |   5 +-
 src/util/virlog.h                       |   2 +-
 src/util/virmdev.c                      |   5 +-
 src/util/virmdev.h                      |   2 +-
 src/util/virnetdev.c                    |   9 +-
 src/util/virnetdev.h                    |   6 +-
 src/util/virnetdevmacvlan.c             |   3 +-
 src/util/virnetdevmacvlan.h             |   2 +-
 src/util/virnetdevvlan.h                |   2 +-
 src/util/virnetdevvportprofile.c        |   6 +-
 src/util/virnetdevvportprofile.h        |   4 +-
 src/util/virpci.c                       |   9 +-
 src/util/virpci.h                       |   4 +-
 src/util/virperf.c                      |   3 +-
 src/util/virportallocator.c             |   2 +-
 src/util/virprocess.c                   |   3 +-
 src/util/virresctrl.c                   |  18 +-
 src/util/virscsi.c                      |   2 +-
 src/util/virscsivhost.c                 |   2 +-
 src/util/virsecret.c                    |   3 +-
 src/util/virsecret.h                    |   2 +-
 src/util/virstorageencryption.c         |   7 +-
 src/util/virstorageencryption.h         |   4 +-
 src/util/virstoragefile.c               |  20 +-
 src/util/virstoragefile.h               |  10 +-
 src/util/virstoragefilebackend.c        |   2 +-
 src/util/virsysinfo.c                   |   3 +-
 src/util/virsysinfo.h                   |   2 +-
 src/util/virthread.h                    |   5 +-
 src/util/virthreadjob.c                 |   2 +-
 src/util/virtypedparam.c                |   3 +-
 src/util/virtypedparam.h                |   2 +-
 src/util/virusb.c                       |   2 +-
 src/util/virutil.c                      |   6 +-
 src/util/virutil.h                      |  10 +-
 src/vmware/vmware_conf.c                |   3 +-
 src/vmware/vmware_conf.h                |   2 +-
 src/vmx/vmx.c                           |   2 +-
 src/vz/vz_driver.c                      |   2 +-
 tests/virfilecachetest.c                |   2 +-
 tools/virsh-domain-monitor.c            |  60 +++--
 tools/virsh-domain.c                    | 102 ++++----
 tools/virsh-network.c                   |  12 +-
 tools/virsh-nodedev.c                   |   4 +-
 tools/virsh-pool.c                      |   8 +-
 tools/virsh-secret.c                    |   4 +-
 tools/virsh-volume.c                    |   6 +-
 tools/virt-admin.c                      |   4 +-
 152 files changed, 861 insertions(+), 622 deletions(-)

-- 
2.20.1




More information about the libvir-list mailing list