Ticket #150 (new enhancement)

Opened 7 years ago

Last modified 6 years ago

rpmlint: "artificial ignorance" - suppress errors and warnings that aren't important

Reported by: dmalcolm Owned by:
Priority: major Milestone: Package Update Acceptance Test Plan
Component: tests Keywords:
Cc: mcepl Blocked By:
Blocking:

Description

There are some interesting ideas in here about suppressing a logfile to show up the information that's truly important: http://www.ranum.com/security/computer_security/papers/ai/index.html

I think that the rpmlint test needs to have a set of filters, and should suppress output matching certain patterns. For example

https://fedorahosted.org/pipermail/autoqa-results/2010-April/013903.html

shows:

gnome-python2-gnome.i686: W: spelling-error Summary(en_US) libgnome -> lib gnome, lib-gnome, cognomen

i.e. it's complaining about a reference to "libgnome" within gnome-python2-gnome, which is clearly a false-positive.

For this case we might have a python filtering process that says something like this (caveat: untested):

   patterns = [
       ": W: spelling-error \S+ libgnome .*",
   ]

   def should_ignore(line):
       for pat in patterns
           # May want to precompile the patterns:
           m = re.match(pat, line)
           if m:
                return True
       # No match:
       return False
  

   for line in rpmlint_output
        if not should_ignore(line):
             print(line)

and then gradually grow patterns. The idea is to make it nice and lightweight, and Fedora QA can then easily take ownership of the suppresssions, without having to get patches into rpmlint.

Change History

comment:1 Changed 7 years ago by wwoods

Adding this to the test itself would seem to be a flexible way to filter out unneeded messages distrowide. Which sounds very useful.

Note that we'll probably *also* want some way of applying these sorts of filters as waivers (as per the resultsdb design) on a per-package/per-build basis.

There's some overlap in these two concepts but I don't think either one completely replaces the other.

comment:2 Changed 7 years ago by skvidal

what I was suggesting on irc is - if having the config db to hold those list of patterns, per pkg, is not available in the short run - then have a file in each branch of each pkg in the pkg scm. So before emailing the results from rpmlint to the pkg-owner - it would grab this file - feed the contents of this file in as the patterns in david's code example above and only email whatever was left.

Then it would be packager-controlled, per-branch and wouldn't require any other infrastructure.

comment:3 Changed 7 years ago by kparal

  • Summary changed from "artificial ignorance": suppress errors and warnings that aren't important to rpmlint: "artificial ignorance" - suppress errors and warnings that aren't important
  • Milestone changed from Package Sanity Tests to Package update tests

comment:4 Changed 6 years ago by mcepl

  • Cc mcepl added

well for making a spell checker a bit more sane we don't to develop artificial intelligence ... every spellchecker has some local dictionary, so we could go through our collection of specfiles and collect words which are OK albeit unusual (libgnome is a nice example).

Note: See TracTickets for help on using tickets.