[clang] dbb0153 - scan-view: Remove Reporter.py and associated AppleScript files

Tom Stellard via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 21 19:24:48 PST 2020


Author: Tom Stellard
Date: 2020-12-21T19:24:35-08:00
New Revision: dbb01536f6f49fa428f170e34466072ef439b3e9

URL: https://github.com/llvm/llvm-project/commit/dbb01536f6f49fa428f170e34466072ef439b3e9
DIFF: https://github.com/llvm/llvm-project/commit/dbb01536f6f49fa428f170e34466072ef439b3e9.diff

LOG: scan-view: Remove Reporter.py and associated AppleScript files

I'm not exactly sure what this is, but it appears to be a tool for reporting
internal issues at Apple.  These files haven't been meaningfully updated in
12 years, and it doesn't seem like there is any reason to keep them in tree.

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D93565

Added: 
    

Modified: 
    clang/tools/scan-view/CMakeLists.txt

Removed: 
    clang/tools/scan-view/share/FileRadar.scpt
    clang/tools/scan-view/share/GetRadarVersion.scpt
    clang/tools/scan-view/share/Reporter.py


################################################################################
diff  --git a/clang/tools/scan-view/CMakeLists.txt b/clang/tools/scan-view/CMakeLists.txt
index 22edb974bac7..dd3d33439299 100644
--- a/clang/tools/scan-view/CMakeLists.txt
+++ b/clang/tools/scan-view/CMakeLists.txt
@@ -5,10 +5,7 @@ set(BinFiles
 
 set(ShareFiles
       ScanView.py
-      Reporter.py
       startfile.py
-      FileRadar.scpt
-      GetRadarVersion.scpt
       bugcatcher.ico)
 
 if(CLANG_INSTALL_SCANVIEW)

diff  --git a/clang/tools/scan-view/share/FileRadar.scpt b/clang/tools/scan-view/share/FileRadar.scpt
deleted file mode 100644
index 1c7455285ccb..000000000000
Binary files a/clang/tools/scan-view/share/FileRadar.scpt and /dev/null 
diff er

diff  --git a/clang/tools/scan-view/share/GetRadarVersion.scpt b/clang/tools/scan-view/share/GetRadarVersion.scpt
deleted file mode 100644
index e69de29bb2d1..000000000000

diff  --git a/clang/tools/scan-view/share/Reporter.py b/clang/tools/scan-view/share/Reporter.py
deleted file mode 100644
index b1ff16142e27..000000000000
--- a/clang/tools/scan-view/share/Reporter.py
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Methods for reporting bugs."""
-
-import subprocess, sys, os
-
-__all__ = ['ReportFailure', 'BugReport', 'getReporters']
-
-#
-
-class ReportFailure(Exception):
-    """Generic exception for failures in bug reporting."""
-    def __init__(self, value):        
-        self.value = value
-
-# Collect information about a bug.
-
-class BugReport(object):
-    def __init__(self, title, description, files):
-        self.title = title
-        self.description = description
-        self.files = files
-
-# Reporter interfaces.
-
-import os
-
-import email, mimetypes, smtplib
-from email import encoders
-from email.message import Message
-from email.mime.base import MIMEBase
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-
-#===------------------------------------------------------------------------===#
-# ReporterParameter
-#===------------------------------------------------------------------------===#
-
-class ReporterParameter(object):
-  def __init__(self, n):
-    self.name = n
-  def getName(self):
-    return self.name
-  def getValue(self,r,bugtype,getConfigOption):
-     return getConfigOption(r.getName(),self.getName())
-  def saveConfigValue(self):
-    return True
-
-class TextParameter (ReporterParameter):
-  def getHTML(self,r,bugtype,getConfigOption):
-    return """\
-<tr>
-<td class="form_clabel">%s:</td>
-<td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
-</tr>"""%(self.getName(),r.getName(),self.getName(),self.getValue(r,bugtype,getConfigOption))
-
-class SelectionParameter (ReporterParameter):
-  def __init__(self, n, values):
-    ReporterParameter.__init__(self,n)
-    self.values = values
-    
-  def getHTML(self,r,bugtype,getConfigOption):
-    default = self.getValue(r,bugtype,getConfigOption)
-    return """\
-<tr>
-<td class="form_clabel">%s:</td><td class="form_value"><select name="%s_%s">
-%s
-</select></td>"""%(self.getName(),r.getName(),self.getName(),'\n'.join(["""\
-<option value="%s"%s>%s</option>"""%(o[0],
-                                     o[0] == default and ' selected="selected"' or '',
-                                     o[1]) for o in self.values]))
-
-#===------------------------------------------------------------------------===#
-# Reporters
-#===------------------------------------------------------------------------===#
-
-class EmailReporter(object):
-    def getName(self):
-        return 'Email'
-
-    def getParameters(self):
-        return [TextParameter(x) for x in ['To', 'From', 'SMTP Server', 'SMTP Port']]
-
-    # Lifted from python email module examples.
-    def attachFile(self, outer, path):
-        # Guess the content type based on the file's extension.  Encoding
-        # will be ignored, although we should check for simple things like
-        # gzip'd or compressed files.
-        ctype, encoding = mimetypes.guess_type(path)
-        if ctype is None or encoding is not None:
-            # No guess could be made, or the file is encoded (compressed), so
-            # use a generic bag-of-bits type.
-            ctype = 'application/octet-stream'
-        maintype, subtype = ctype.split('/', 1)
-        if maintype == 'text':
-            fp = open(path)
-            # Note: we should handle calculating the charset
-            msg = MIMEText(fp.read(), _subtype=subtype)
-            fp.close()
-        else:
-            fp = open(path, 'rb')
-            msg = MIMEBase(maintype, subtype)
-            msg.set_payload(fp.read())
-            fp.close()
-            # Encode the payload using Base64
-            encoders.encode_base64(msg)
-        # Set the filename parameter
-        msg.add_header('Content-Disposition', 'attachment', filename=os.path.basename(path))
-        outer.attach(msg)
-
-    def fileReport(self, report, parameters):
-        mainMsg = """\
-BUG REPORT
----
-Title: %s
-Description: %s
-"""%(report.title, report.description)
-
-        if not parameters.get('To'):
-            raise ReportFailure('No "To" address specified.')
-        if not parameters.get('From'):
-            raise ReportFailure('No "From" address specified.')
-
-        msg = MIMEMultipart()
-        msg['Subject'] = 'BUG REPORT: %s'%(report.title)
-        # FIXME: Get config parameters
-        msg['To'] = parameters.get('To')
-        msg['From'] = parameters.get('From')
-        msg.preamble = mainMsg
-
-        msg.attach(MIMEText(mainMsg, _subtype='text/plain'))
-        for file in report.files:
-            self.attachFile(msg, file)
-
-        try:
-            s = smtplib.SMTP(host=parameters.get('SMTP Server'),
-                             port=parameters.get('SMTP Port'))
-            s.sendmail(msg['From'], msg['To'], msg.as_string())
-            s.close()
-        except:
-            raise ReportFailure('Unable to send message via SMTP.')
-
-        return "Message sent!"
-
-class BugzillaReporter(object):
-    def getName(self):
-        return 'Bugzilla'
-    
-    def getParameters(self):
-        return [TextParameter(x) for x in ['URL','Product']]
-
-    def fileReport(self, report, parameters):
-        raise NotImplementedError
- 
-
-class RadarClassificationParameter(SelectionParameter):
-  def __init__(self):
-    SelectionParameter.__init__(self,"Classification",
-            [['1', 'Security'], ['2', 'Crash/Hang/Data Loss'],
-             ['3', 'Performance'], ['4', 'UI/Usability'], 
-             ['6', 'Serious Bug'], ['7', 'Other']])
-
-  def saveConfigValue(self):
-    return False
-    
-  def getValue(self,r,bugtype,getConfigOption):
-    if bugtype.find("leak") != -1:
-      return '3'
-    elif bugtype.find("dereference") != -1:
-      return '2'
-    elif bugtype.find("missing ivar release") != -1:
-      return '3'
-    else:
-      return '7'
-
-class RadarReporter(object):
-    @staticmethod
-    def isAvailable():
-        # FIXME: Find this .scpt better
-        path = os.path.join(os.path.dirname(__file__),'../share/scan-view/GetRadarVersion.scpt')
-        try:
-          p = subprocess.Popen(['osascript',path], 
-          stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        except:
-            return False
-        data,err = p.communicate()
-        res = p.wait()
-        # FIXME: Check version? Check for no errors?
-        return res == 0
-
-    def getName(self):
-        return 'Radar'
-
-    def getParameters(self):
-        return [ TextParameter('Component'), TextParameter('Component Version'),
-                 RadarClassificationParameter() ]
-
-    def fileReport(self, report, parameters):
-        component = parameters.get('Component', '')
-        componentVersion = parameters.get('Component Version', '')
-        classification = parameters.get('Classification', '')
-        personID = ""
-        diagnosis = ""
-        config = ""
-
-        if not component.strip():
-            component = 'Bugs found by clang Analyzer'
-        if not componentVersion.strip():
-            componentVersion = 'X'
-
-        script = os.path.join(os.path.dirname(__file__),'../share/scan-view/FileRadar.scpt')
-        args = ['osascript', script, component, componentVersion, classification, personID, report.title,
-                report.description, diagnosis, config] + [os.path.abspath(f) for f in report.files]
-#        print >>sys.stderr, args
-        try:
-          p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        except:
-            raise ReportFailure("Unable to file radar (AppleScript failure).")
-        data, err = p.communicate()
-        res = p.wait()
-
-        if res:
-            raise ReportFailure("Unable to file radar (AppleScript failure).")
-
-        try:
-            values = eval(data)
-        except:
-            raise ReportFailure("Unable to process radar results.")
-
-        # We expect (int: bugID, str: message)
-        if len(values) != 2 or not isinstance(values[0], int):
-            raise ReportFailure("Unable to process radar results.")
-
-        bugID,message = values
-        bugID = int(bugID)
-        
-        if not bugID:
-            raise ReportFailure(message)
-        
-        return "Filed: <a href=\"rdar://%d/\">%d</a>"%(bugID,bugID)
-
-###
-
-def getReporters():
-    reporters = []
-    if RadarReporter.isAvailable():
-        reporters.append(RadarReporter())
-    reporters.append(EmailReporter())
-    return reporters
-


        


More information about the cfe-commits mailing list