Skip to contentSkip to conversation

classes/insane: Show QA check name

PATCH Superseded Chong Lu 2 participants 5 messages Jul 9, 2014 – Jul 11, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Chong Lu

author
#0 lore raw

cover classes/insane: Show QA check name

The following changes since commit a5531a2b8983318b99c119a87b78a92cf84160b8:

bitbake: fetch2/svn: Add transportuser parameter (2014-07-04 09:28:36 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib chonglu/qacheck
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=chonglu/qacheck

Chong Lu (1):
classes/insane: Show QA check name

 meta/classes/insane.bbclass | 66 ++++++++++++++++++++++-----------------------
 1 file changed, 32 insertions(+), 34 deletions(-)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH 1/1 classes/insane: Show QA check name

QA errors/warnings would show the name of the QA failure in the error/warning message. The format is listed:

[The name of QA] QA Issue: messages

You can see which QA check you need to disable if you want to disable it.

[YOCTO #6160]

---
 meta/classes/insane.bbclass | 66 ++++++++++++++++++++++-----------------------
 1 file changed, 32 insertions(+), 34 deletions(-)
meta/classes/insane.bbclass +32 -34
index c8fa711..5bb8115 100644
@@ -154,24 +154,24 @@ def package_qa_clean_path(path,d):
     """ Remove the common prefix from the path. In this case it is the TMPDIR"""
     return path.replace(d.getVar('TMPDIR',True),"")
 
-def package_qa_write_error(error, d):
+def package_qa_write_error(type, error, d):
     logfile = d.getVar('QA_LOGFILE', True)
     if logfile:
         p = d.getVar('P', True)
         f = file( logfile, "a+")
-        print >> f, "%s: %s" % (p, error)
+        print >> f, "%s: [%s] %s" % (p, type, error)
         f.close()
 
 def package_qa_handle_error(error_class, error_msg, d):
-    package_qa_write_error(error_msg, d)
+    package_qa_write_error(error_class, error_msg, d)
     if error_class in (d.getVar("ERROR_QA", True) or "").split():
-        bb.error("QA Issue: %s" % error_msg)
+        bb.error("[%s] QA Issue: %s" % (error_class, error_msg))
         d.setVar("QA_SANE", False)
         return False
     elif error_class in (d.getVar("WARN_QA", True) or "").split():
-        bb.warn("QA Issue: %s" % error_msg)
+        bb.warn("[%s] QA Issue: %s" % (error_class, error_msg))
     else:
-        bb.note("QA Issue: %s" % error_msg)
+        bb.note("[%s] QA Issue: %s" % (error_class, error_msg))
     return True
 
 QAPATHTEST[libexec] = "package_qa_check_libexec"
@@ -183,7 +183,7 @@ def package_qa_check_libexec(path,name, d, elf, messages):
         return True
 
     if 'libexec' in path.split(os.path.sep):
-        messages.append("%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
+        messages["libexec"] = "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec)
         return False
 
     return True
@@ -211,7 +211,7 @@ def package_qa_check_rpath(file,name, d, elf, messages):
             rpath = m.group(1)
             for dir in bad_dirs:
                 if dir in rpath:
-                    messages.append("package %s contains bad RPATH %s in file %s" % (name, rpath, file))
+                    messages["rpaths"] = "package %s contains bad RPATH %s in file %s" % (name, rpath, file)
 
 QAPATHTEST[useless-rpaths] = "package_qa_check_useless_rpaths"
 def package_qa_check_useless_rpaths(file, name, d, elf, messages):
@@ -241,7 +241,7 @@ def package_qa_check_useless_rpaths(file, name, d, elf, messages):
             if rpath_eq(rpath, libdir) or rpath_eq(rpath, base_libdir):
                 # The dynamic linker searches both these places anyway.  There is no point in
                 # looking there again.
-                messages.append("%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath))
+                messages["useless-rpaths"] = "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath)
 
 QAPATHTEST[dev-so] = "package_qa_check_dev"
 def package_qa_check_dev(path, name, d, elf, messages):
@@ -250,8 +250,8 @@ def package_qa_check_dev(path, name, d, elf, messages):
     """
 
     if not name.endswith("-dev") and not name.endswith("-dbg") and not name.endswith("-ptest") and not name.startswith("nativesdk-") and path.endswith(".so") and os.path.islink(path):
-        messages.append("non -dev/-dbg/-nativesdk package contains symlink .so: %s path '%s'" % \
-                 (name, package_qa_clean_path(path,d)))
+        messages["dev-so"] = "non -dev/-dbg/-nativesdk package contains symlink .so: %s path '%s'" % \
+                 (name, package_qa_clean_path(path,d))
 
 QAPATHTEST[staticdev] = "package_qa_check_staticdev"
 def package_qa_check_staticdev(path, name, d, elf, messages):
@@ -263,8 +263,8 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
     """
 
     if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a"):
-        messages.append("non -staticdev package contains static .a library: %s path '%s'" % \
-                 (name, package_qa_clean_path(path,d)))
+        messages["staticdev"] = "non -staticdev package contains static .a library: %s path '%s'" % \
+                 (name, package_qa_clean_path(path,d))
 
 def package_qa_check_libdir(d):
     """
@@ -318,8 +318,8 @@ def package_qa_check_dbg(path, name, d, elf, messages):
 
     if not "-dbg" in name and not "-ptest" in name:
         if '.debug' in path.split(os.path.sep):
-            messages.append("non debug package contains .debug directory: %s path %s" % \
-                     (name, package_qa_clean_path(path,d)))
+            messages["debug-files"] = "non debug package contains .debug directory: %s path %s" % \
+                     (name, package_qa_clean_path(path,d))
 
 QAPATHTEST[perms] = "package_qa_check_perm"
 def package_qa_check_perm(path,name,d, elf, messages):
@@ -465,15 +465,15 @@ def package_qa_check_arch(path,name,d, elf, messages):
     # Check the architecture and endiannes of the binary
     if not ((machine == elf.machine()) or \
         ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32"))):
-        messages.append("Architecture did not match (%d to %d) on %s" % \
-                 (machine, elf.machine(), package_qa_clean_path(path,d)))
+        messages["arch"] = "Architecture did not match (%d to %d) on %s" % \
+                 (machine, elf.machine(), package_qa_clean_path(path,d))
     elif not ((bits == elf.abiSize()) or  \
         ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32"))):
-        messages.append("Bit size did not match (%d to %d) %s on %s" % \
-                 (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d)))
+        messages["arch"] = "Bit size did not match (%d to %d) %s on %s" % \
+                 (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d))
     elif not littleendian == elf.isLittleEndian():
-        messages.append("Endiannes did not match (%d to %d) on %s" % \
-                 (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d)))
+        messages["arch"] = "Endiannes did not match (%d to %d) on %s" % \
+                 (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d))
 
 QAPATHTEST[desktop] = "package_qa_check_desktop"
 def package_qa_check_desktop(path, name, d, elf, messages):
@@ -485,7 +485,7 @@ def package_qa_check_desktop(path, name, d, elf, messages):
         output = os.popen("%s %s" % (desktop_file_validate, path))
         # This only produces output on errors
         for l in output:
-            messages.append("Desktop file issue: " + l.strip())
+            messages["desktop"] = "Desktop file issue: " + l.strip()
 
 QAPATHTEST[textrel] = "package_qa_textrel"
 def package_qa_textrel(path, name, d, elf, messages):
@@ -509,7 +509,7 @@ def package_qa_textrel(path, name, d, elf, messages):
             sane = False
 
     if not sane:
-        messages.append("ELF binary '%s' has relocations in .text" % path)
+        messages["textrel"] = "ELF binary '%s' has relocations in .text" % path
 
 QAPATHTEST[ldflags] = "package_qa_hash_style"
 def package_qa_hash_style(path, name, d, elf, messages):
@@ -544,7 +544,7 @@ def package_qa_hash_style(path, name, d, elf, messages):
             sane = True
 
     if has_syms and not sane:
-        messages.append("No GNU_HASH in the elf binary: '%s'" % path)
+        messages["ldflags"] = "No GNU_HASH in the elf binary: '%s'" % path
 
 
 QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
@@ -564,7 +564,7 @@ def package_qa_check_buildpaths(path, name, d, elf, messages):
     with open(path) as f:
         file_content = f.read()
         if tmpdir in file_content:
-            messages.append("File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d))
+            messages["buildpaths"] = "File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d)
 
 
 QAPATHTEST[xorg-driver-abi] = "package_qa_check_xorg_driver_abi"
@@ -583,7 +583,7 @@ def package_qa_check_xorg_driver_abi(path, name, d, elf, messages):
         for rdep in bb.utils.explode_deps(d.getVar('RDEPENDS_' + name, True) or ""):
             if rdep.startswith("%sxorg-abi-" % mlprefix):
                 return
-        messages.append("Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
+        messages["xorg-driver-abi"] = "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path))
 
 QAPATHTEST[infodir] = "package_qa_check_infodir"
 def package_qa_check_infodir(path, name, d, elf, messages):
@@ -593,7 +593,7 @@ def package_qa_check_infodir(path, name, d, elf, messages):
     infodir = d.expand("${infodir}/dir")
 
     if infodir in path:
-        messages.append("The /usr/share/info/dir file is not meant to be shipped in a particular package.")
+        messages["infodir"] = "The /usr/share/info/dir file is not meant to be shipped in a particular package."
 
 QAPATHTEST[symlink-to-sysroot] = "package_qa_check_symlink_to_sysroot"
 def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
@@ -606,7 +606,7 @@ def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
             tmpdir = d.getVar('TMPDIR', True)
             if target.startswith(tmpdir):
                 trimmed = path.replace(os.path.join (d.getVar("PKGDEST", True), name), "")
-                messages.append("Symlink %s in %s points to TMPDIR" % (trimmed, name))
+                messages["symlink-to-sysroot"] = "Symlink %s in %s points to TMPDIR" % (trimmed, name)
 
 def package_qa_check_license(workdir, d):
     """
@@ -738,8 +738,8 @@ def package_qa_walk(path, warnfuncs, errorfuncs, skip, package, d):
     target_os   = d.getVar('TARGET_OS', True)
     target_arch = d.getVar('TARGET_ARCH', True)
 
-    warnings = []
-    errors = []
+    warnings = {}
+    errors = {}
     for path in pkgfiles[package]:
             elf = oe.qa.ELFFile(path)
             try:
@@ -752,11 +752,9 @@ def package_qa_walk(path, warnfuncs, errorfuncs, skip, package, d):
                 func(path, package, d, elf, errors)
 
     for w in warnings:
-        bb.warn("QA Issue: %s" % w)
-        package_qa_write_error(w, d)
+        package_qa_handle_error(w, warnings[w], d)
     for e in errors:
-        bb.error("QA Issue: %s" % e)
-        package_qa_write_error(e, d)
+        package_qa_handle_error(e, errors[e], d)
 
     return len(errors) == 0
 
Signature · 1 line
1.9.1
author
#2 lore raw

ping

Quoted 219 lines · Chong Lu

QA errors/warnings would show the name of the QA failure in the error/warning message. The format is listed:

[The name of QA] QA Issue: messages

You can see which QA check you need to disable if you want to disable it.

[YOCTO #6160]

---
  meta/classes/insane.bbclass | 66 ++++++++++++++++++++++-----------------------
  1 file changed, 32 insertions(+), 34 deletions(-)
meta/classes/insane.bbclass +32 -34
index c8fa711..5bb8115 100644
@@ -154,24 +154,24 @@ def package_qa_clean_path(path,d):
      """ Remove the common prefix from the path. In this case it is the TMPDIR"""
      return path.replace(d.getVar('TMPDIR',True),"")
 
-def package_qa_write_error(error, d):
+def package_qa_write_error(type, error, d):
      logfile = d.getVar('QA_LOGFILE', True)
      if logfile:
          p = d.getVar('P', True)
          f = file( logfile, "a+")
-        print >> f, "%s: %s" % (p, error)
+        print >> f, "%s: [%s] %s" % (p, type, error)
          f.close()
 
  def package_qa_handle_error(error_class, error_msg, d):
-    package_qa_write_error(error_msg, d)
+    package_qa_write_error(error_class, error_msg, d)
      if error_class in (d.getVar("ERROR_QA", True) or "").split():
-        bb.error("QA Issue: %s" % error_msg)
+        bb.error("[%s] QA Issue: %s" % (error_class, error_msg))
          d.setVar("QA_SANE", False)
          return False
      elif error_class in (d.getVar("WARN_QA", True) or "").split():
-        bb.warn("QA Issue: %s" % error_msg)
+        bb.warn("[%s] QA Issue: %s" % (error_class, error_msg))
      else:
-        bb.note("QA Issue: %s" % error_msg)
+        bb.note("[%s] QA Issue: %s" % (error_class, error_msg))
      return True
 
  QAPATHTEST[libexec] = "package_qa_check_libexec"
@@ -183,7 +183,7 @@ def package_qa_check_libexec(path,name, d, elf, messages):
          return True
 
      if 'libexec' in path.split(os.path.sep):
-        messages.append("%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
+        messages["libexec"] = "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec)
          return False
 
      return True
@@ -211,7 +211,7 @@ def package_qa_check_rpath(file,name, d, elf, messages):
              rpath = m.group(1)
              for dir in bad_dirs:
                  if dir in rpath:
-                    messages.append("package %s contains bad RPATH %s in file %s" % (name, rpath, file))
+                    messages["rpaths"] = "package %s contains bad RPATH %s in file %s" % (name, rpath, file)
 
  QAPATHTEST[useless-rpaths] = "package_qa_check_useless_rpaths"
  def package_qa_check_useless_rpaths(file, name, d, elf, messages):
@@ -241,7 +241,7 @@ def package_qa_check_useless_rpaths(file, name, d, elf, messages):
              if rpath_eq(rpath, libdir) or rpath_eq(rpath, base_libdir):
                  # The dynamic linker searches both these places anyway.  There is no point in
                  # looking there again.
-                messages.append("%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath))
+                messages["useless-rpaths"] = "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath)
 
  QAPATHTEST[dev-so] = "package_qa_check_dev"
  def package_qa_check_dev(path, name, d, elf, messages):
@@ -250,8 +250,8 @@ def package_qa_check_dev(path, name, d, elf, messages):
      """
 
      if not name.endswith("-dev") and not name.endswith("-dbg") and not name.endswith("-ptest") and not name.startswith("nativesdk-") and path.endswith(".so") and os.path.islink(path):
-        messages.append("non -dev/-dbg/-nativesdk package contains symlink .so: %s path '%s'" % \
-                 (name, package_qa_clean_path(path,d)))
+        messages["dev-so"] = "non -dev/-dbg/-nativesdk package contains symlink .so: %s path '%s'" % \
+                 (name, package_qa_clean_path(path,d))
 
  QAPATHTEST[staticdev] = "package_qa_check_staticdev"
  def package_qa_check_staticdev(path, name, d, elf, messages):
@@ -263,8 +263,8 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
      """
 
      if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a"):
-        messages.append("non -staticdev package contains static .a library: %s path '%s'" % \
-                 (name, package_qa_clean_path(path,d)))
+        messages["staticdev"] = "non -staticdev package contains static .a library: %s path '%s'" % \
+                 (name, package_qa_clean_path(path,d))
 
  def package_qa_check_libdir(d):
      """
@@ -318,8 +318,8 @@ def package_qa_check_dbg(path, name, d, elf, messages):
 
      if not "-dbg" in name and not "-ptest" in name:
          if '.debug' in path.split(os.path.sep):
-            messages.append("non debug package contains .debug directory: %s path %s" % \
-                     (name, package_qa_clean_path(path,d)))
+            messages["debug-files"] = "non debug package contains .debug directory: %s path %s" % \
+                     (name, package_qa_clean_path(path,d))
 
  QAPATHTEST[perms] = "package_qa_check_perm"
  def package_qa_check_perm(path,name,d, elf, messages):
@@ -465,15 +465,15 @@ def package_qa_check_arch(path,name,d, elf, messages):
      # Check the architecture and endiannes of the binary
      if not ((machine == elf.machine()) or \
          ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32"))):
-        messages.append("Architecture did not match (%d to %d) on %s" % \
-                 (machine, elf.machine(), package_qa_clean_path(path,d)))
+        messages["arch"] = "Architecture did not match (%d to %d) on %s" % \
+                 (machine, elf.machine(), package_qa_clean_path(path,d))
      elif not ((bits == elf.abiSize()) or  \
          ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == "linux-gnux32"))):
-        messages.append("Bit size did not match (%d to %d) %s on %s" % \
-                 (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d)))
+        messages["arch"] = "Bit size did not match (%d to %d) %s on %s" % \
+                 (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d))
      elif not littleendian == elf.isLittleEndian():
-        messages.append("Endiannes did not match (%d to %d) on %s" % \
-                 (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d)))
+        messages["arch"] = "Endiannes did not match (%d to %d) on %s" % \
+                 (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d))
 
  QAPATHTEST[desktop] = "package_qa_check_desktop"
  def package_qa_check_desktop(path, name, d, elf, messages):
@@ -485,7 +485,7 @@ def package_qa_check_desktop(path, name, d, elf, messages):
          output = os.popen("%s %s" % (desktop_file_validate, path))
          # This only produces output on errors
          for l in output:
-            messages.append("Desktop file issue: " + l.strip())
+            messages["desktop"] = "Desktop file issue: " + l.strip()
 
  QAPATHTEST[textrel] = "package_qa_textrel"
  def package_qa_textrel(path, name, d, elf, messages):
@@ -509,7 +509,7 @@ def package_qa_textrel(path, name, d, elf, messages):
              sane = False
 
      if not sane:
-        messages.append("ELF binary '%s' has relocations in .text" % path)
+        messages["textrel"] = "ELF binary '%s' has relocations in .text" % path
 
  QAPATHTEST[ldflags] = "package_qa_hash_style"
  def package_qa_hash_style(path, name, d, elf, messages):
@@ -544,7 +544,7 @@ def package_qa_hash_style(path, name, d, elf, messages):
              sane = True
 
      if has_syms and not sane:
-        messages.append("No GNU_HASH in the elf binary: '%s'" % path)
+        messages["ldflags"] = "No GNU_HASH in the elf binary: '%s'" % path
 
 
  QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
@@ -564,7 +564,7 @@ def package_qa_check_buildpaths(path, name, d, elf, messages):
      with open(path) as f:
          file_content = f.read()
          if tmpdir in file_content:
-            messages.append("File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d))
+            messages["buildpaths"] = "File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d)
 
 
  QAPATHTEST[xorg-driver-abi] = "package_qa_check_xorg_driver_abi"
@@ -583,7 +583,7 @@ def package_qa_check_xorg_driver_abi(path, name, d, elf, messages):
          for rdep in bb.utils.explode_deps(d.getVar('RDEPENDS_' + name, True) or ""):
              if rdep.startswith("%sxorg-abi-" % mlprefix):
                  return
-        messages.append("Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
+        messages["xorg-driver-abi"] = "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path))
 
  QAPATHTEST[infodir] = "package_qa_check_infodir"
  def package_qa_check_infodir(path, name, d, elf, messages):
@@ -593,7 +593,7 @@ def package_qa_check_infodir(path, name, d, elf, messages):
      infodir = d.expand("${infodir}/dir")
 
      if infodir in path:
-        messages.append("The /usr/share/info/dir file is not meant to be shipped in a particular package.")
+        messages["infodir"] = "The /usr/share/info/dir file is not meant to be shipped in a particular package."
 
  QAPATHTEST[symlink-to-sysroot] = "package_qa_check_symlink_to_sysroot"
  def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
@@ -606,7 +606,7 @@ def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
              tmpdir = d.getVar('TMPDIR', True)
              if target.startswith(tmpdir):
                  trimmed = path.replace(os.path.join (d.getVar("PKGDEST", True), name), "")
-                messages.append("Symlink %s in %s points to TMPDIR" % (trimmed, name))
+                messages["symlink-to-sysroot"] = "Symlink %s in %s points to TMPDIR" % (trimmed, name)
 
  def package_qa_check_license(workdir, d):
      """
@@ -738,8 +738,8 @@ def package_qa_walk(path, warnfuncs, errorfuncs, skip, package, d):
      target_os   = d.getVar('TARGET_OS', True)
      target_arch = d.getVar('TARGET_ARCH', True)
 
-    warnings = []
-    errors = []
+    warnings = {}
+    errors = {}
      for path in pkgfiles[package]:
              elf = oe.qa.ELFFile(path)
              try:
@@ -752,11 +752,9 @@ def package_qa_walk(path, warnfuncs, errorfuncs, skip, package, d):
                  func(path, package, d, elf, errors)
 
      for w in warnings:
-        bb.warn("QA Issue: %s" % w)
-        package_qa_write_error(w, d)
+        package_qa_handle_error(w, warnings[w], d)
      for e in errors:
-        bb.error("QA Issue: %s" % e)
-        package_qa_write_error(e, d)
+        package_qa_handle_error(e, errors[e], d)
 
      return len(errors) == 0
 
#3 lore raw

Hi Chong,

Quoted 7 lines · On Friday 11 July 2014 09:25:07 Chong Lu wrote:
Quoted 6 lines · Chong Lu

QA errors/warnings would show the name of the QA failure in the error/warning message.>
The format is listed:
[The name of QA] QA Issue: messages

You can see which QA check you need to disable if you want to disable it.

The way I had envisaged this being shown was <message> [QA check name]; since the message is the important part (in general we really want to encourage people to fix the QA issues rather than disabling them). This also matches up with gcc's warning message behaviour.

Cheers,
Paul

Signature · 2 lines
Paul Eggleton
Intel Open Source Technology Centre
author
#4 lore raw
Quoted 9 lines · Paul Eggleton

Hi Chong,

Quoted 6 lines · On Friday 11 July 2014 09:25:07 Chong Lu wrote:
Quoted 5 lines · Chong Lu

QA errors/warnings would show the name of the QA failure in the error/warning message.>
The format is listed:
[The name of QA] QA Issue: messages

Quoted 9 lines
Quoted 1 line
Quoted 1 line

You can see which QA check you need to disable if you want to disable it.

The way I had envisaged this being shown was <message> [QA check name]; since the message is the important part (in general we really want to encourage people to fix the QA issues rather than disabling them). This also matches up with gcc's warning message behaviour.

Cheers,
Paul

Hi Paul,

Thanks your reply. I will change format of message and resend a V2.

Best Regards
Chong