Changeset 240402 in webkit


Ignore:
Timestamp:
Jan 23, 2019 6:47:53 PM (5 years ago)
Author:
ddkilzer@apple.com
Message:

check-webkit-style should warn when using soft-linking macros in a header
<https://webkit.org/b/193750>

Reviewed by Darin Adler.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_language): Add softlink/header check by refactoring the
softlink/framework check.
(CppChecker): Enable softlink/header check by default.

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(CppStyleTest.test_softlink_framework): Rename from
CppStyleTest.test_softlink() and change test framework name in
case AVFoundation gets its own AVFoundationSoftLink.{h,mm}
files. Set file_name for macros that only appear in headers.
(CppStyleTest.test_softlink_header): Add tests for using
soft-link macros in headers.

Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r240363 r240402  
     12019-01-23  David Kilzer  <ddkilzer@apple.com>
     2
     3        check-webkit-style should warn when using soft-linking macros in a header
     4        <https://webkit.org/b/193750>
     5
     6        Reviewed by Darin Adler.
     7
     8        * Scripts/webkitpy/style/checkers/cpp.py:
     9        (check_language): Add softlink/header check by refactoring the
     10        softlink/framework check.
     11        (CppChecker): Enable softlink/header check by default.
     12        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
     13        (CppStyleTest.test_softlink_framework): Rename from
     14        CppStyleTest.test_softlink() and change test framework name in
     15        case AVFoundation gets its own AVFoundationSoftLink.{h,mm}
     16        files. Set file_name for macros that only appear in headers.
     17        (CppStyleTest.test_softlink_header): Add tests for using
     18        soft-link macros in headers.
     19
    1202019-01-23  Chris Dumez  <cdumez@apple.com>
    221
  • trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py

    r240299 r240402  
    33333333                break
    33343334
    3335     frameworks_with_soft_links = ['CoreMedia', 'CoreVideo', 'DataDetectorsCore', 'MediaAccessibility', 'MediaRemote', 'PassKit', 'QuickLook', 'UIKit', 'VideoToolbox']
    3336     matched = re.compile('^\s*SOFT_LINK_FRAMEWORK.*\(({})\)'.format('|'.join(frameworks_with_soft_links))).search(line)
     3335    matched = re.compile('^\s*SOFT_LINK_(PRIVATE_)?FRAMEWORK.*\((\S+)\)').search(line)
    33373336    if matched:
    3338         framework_name = matched.group(1)
    3339         if not re.compile('^\s*SOFT_LINK_FRAMEWORK_FOR_(HEADER|SOURCE)(_WITH_EXPORT)?\({}\)'.format(framework_name)).search(line):
     3337        framework_name = matched.group(2)
     3338        if file_extension == 'h' and not search(r'^\s*SOFT_LINK_(PRIVATE_)?FRAMEWORK_FOR_HEADER.*\(', line):
     3339            error(line_number, 'softlink/header', 5,
     3340                  'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create {framework}SoftLink.{{cpp,mm}} instead.'.format(framework=framework_name))
     3341
     3342        frameworks_with_soft_links = ['CoreMedia', 'CoreVideo', 'DataDetectorsCore', 'MediaAccessibility', 'MediaRemote', 'PassKit', 'QuickLook', 'UIKit', 'VideoToolbox']
     3343        if framework_name in frameworks_with_soft_links and not re.compile('^\s*SOFT_LINK_(PRIVATE_)?FRAMEWORK_FOR_(HEADER|SOURCE)(_WITH_EXPORT)?\({}\)'.format(framework_name)).search(line):
    33403344            error(line_number, 'softlink/framework', 5,
    33413345                  'Use {framework}SoftLink.{{cpp,h,mm}} to soft-link to {framework}.framework.'.format(framework=framework_name))
     
    40944098        'security/temp_file',
    40954099        'softlink/framework',
     4100        'softlink/header',
    40964101        'whitespace/blank_line',
    40974102        'whitespace/braces',
  • trunk/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py

    r240299 r240402  
    16891689        self.assert_lint('''RetainPtr<NSDictionary<NSString *, NSArray<NSString *>>> dictionary;''', '')
    16901690
    1691     def test_softlink(self):
    1692         self.assert_lint(
    1693             '''SOFT_LINK_FRAMEWORK(AVFoundation)''',
    1694             '')
    1695         self.assert_lint(
    1696             '''SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)''',
    1697             '')
    1698         self.assert_lint(
    1699             '''SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT(AVFoundation)''',
    1700             '')
    1701         self.assert_lint(
    1702             '''SOFT_LINK_FRAMEWORK_FOR_HEADER(AVFoundation)''',
    1703             '')
    1704         self.assert_lint(
    1705             '''SOFT_LINK_FRAMEWORK_FOR_SOURCE(AVFoundation)''',
    1706             '')
    1707         self.assert_lint(
    1708             '''SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(AVFoundation)''',
     1691    def test_softlink_framework(self):
     1692        self.assert_lint(
     1693            '''SOFT_LINK_FRAMEWORK(Foundation)''',
     1694            '')
     1695        self.assert_lint(
     1696            '''SOFT_LINK_FRAMEWORK_OPTIONAL(Foundation)''',
     1697            '')
     1698        self.assert_lint(
     1699            '''SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT(Foundation)''',
     1700            '')
     1701        self.assert_lint(
     1702            '''SOFT_LINK_FRAMEWORK_FOR_HEADER(Foundation)''',
     1703            '',
     1704             file_name='foo.h')
     1705        self.assert_lint(
     1706            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE(Foundation)''',
     1707            '')
     1708        self.assert_lint(
     1709            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(Foundation)''',
     1710            '')
     1711        self.assert_lint(
     1712            '''SOFT_LINK_PRIVATE_FRAMEWORK_FOR_HEADER(Foundation)''',
     1713            '',
     1714             file_name='foo.h')
     1715        self.assert_lint(
     1716            '''SOFT_LINK_PRIVATE_FRAMEWORK_FOR_SOURCE(Foundation)''',
     1717            '')
     1718        self.assert_lint(
     1719            '''SOFT_LINK_PRIVATE_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(Foundation)''',
    17091720            '')
    17101721
     
    17231734        self.assert_lint(
    17241735            '''SOFT_LINK_FRAMEWORK_FOR_HEADER(UIKit)''',
    1725             '')
     1736            '',
     1737             file_name='foo.h')
    17261738        self.assert_lint(
    17271739            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE(UIKit)''',
     
    17301742            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(UIKit)''',
    17311743            '')
     1744
     1745    def test_softlink_header(self):
     1746        self.assert_lint(
     1747            '''SOFT_LINK_FRAMEWORK(MyFramework)''',
     1748            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyFrameworkSoftLink.{cpp,mm} instead.'
     1749            '  [softlink/header] [5]',
     1750            file_name='foo.h')
     1751        self.assert_lint(
     1752            '''SOFT_LINK_FRAMEWORK_OPTIONAL(MyFramework)''',
     1753            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyFrameworkSoftLink.{cpp,mm} instead.'
     1754            '  [softlink/header] [5]',
     1755            file_name='foo.h')
     1756        self.assert_lint(
     1757            '''SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT(MyFramework)''',
     1758            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyFrameworkSoftLink.{cpp,mm} instead.'
     1759            '  [softlink/header] [5]',
     1760            file_name='foo.h')
     1761        self.assert_lint(
     1762            '''SOFT_LINK_PRIVATE_FRAMEWORK(MyPrivateFramework)''',
     1763            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyPrivateFrameworkSoftLink.{cpp,mm} instead.'
     1764            '  [softlink/header] [5]',
     1765            file_name='foo.h')
     1766
     1767        self.assert_lint(
     1768            '''SOFT_LINK_FRAMEWORK_FOR_HEADER(MyFramework)''',
     1769            '',
     1770            file_name='foo.h')
     1771        self.assert_lint(
     1772            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE(MyFramework)''',
     1773            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyFrameworkSoftLink.{cpp,mm} instead.'
     1774            '  [softlink/header] [5]',
     1775            file_name='foo.h')
     1776        self.assert_lint(
     1777            '''SOFT_LINK_FRAMEWORK_FOR_SOURCE_WITH_EXPORT(MyFramework)''',
     1778            'Never soft-link frameworks in headers. Put the soft-link macros in a source file, or create MyFrameworkSoftLink.{cpp,mm} instead.'
     1779            '  [softlink/header] [5]',
     1780            file_name='foo.h')
    17321781
    17331782    # Variable-length arrays are not permitted.
Note: See TracChangeset for help on using the changeset viewer.