US20160034275A1 - Coding convention discovery and enforcement - Google Patents

Coding convention discovery and enforcement Download PDF

Info

Publication number
US20160034275A1
US20160034275A1 US14/448,301 US201414448301A US2016034275A1 US 20160034275 A1 US20160034275 A1 US 20160034275A1 US 201414448301 A US201414448301 A US 201414448301A US 2016034275 A1 US2016034275 A1 US 2016034275A1
Authority
US
United States
Prior art keywords
coding
source code
conventions
convention
templates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US14/448,301
Other versions
US9678746B2 (en
Inventor
Kelly Abuelsaad
Shane B. McElligott
Hien Q. Nguyen
Jeffrey D. Young
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyndryl Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US14/448,301 priority Critical patent/US9678746B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MCELLIGOTT, SHANE B., ABUELSAAD, KELLY, YOUNG, JEFFREY D., NGUYEN, HIEN Q.
Publication of US20160034275A1 publication Critical patent/US20160034275A1/en
Application granted granted Critical
Publication of US9678746B2 publication Critical patent/US9678746B2/en
Assigned to KYNDRYL, INC. reassignment KYNDRYL, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Definitions

  • the present invention relates to discovery and enforcement of coding conventions among a group of developers. Specifically, the present invention relates to coding pattern recognition and coding standards generation based upon an associated weight and approval level of the coding pattern.
  • Coding conventions are a set of guidelines and recommended programming styles for a given programming language. These conventions usually cover file organization, indentation, comments, declarations, statements, naming conventions, common patterns, programming practices, programming principles, programming rules of thumb, architectural best practices, etc. These are guidelines for software structural quality. By writing consistent code, developers help both themselves and, more importantly, other developers who work in the same codebase.
  • the coding conventions may be formalized into a documented set of rules or an informal set or practices for a development group to follow. Formal coding conventions are a top-down approach, often recommended and enforced long after program development is underway.
  • embodiments of the invention provide an approach to discover and enforce coding conventions among a group of developers. Specifically, source code files for a group of developers are imported from a code repository. The source code files are analyzed to discover the commonly used coding conventions of the group. Convention templates are generated based on these coding conventions. Each convention template is assigned a weighted value, and the convention templates are reviewed and approved based on the weighted value.
  • the method comprises: analyzing a set of source code files; detecting one or more coding conventions based on the analysis; generating a set of coding templates based on the one or more coding conventions; and assigning a weighted value for each coding template in the set of coding templates.
  • a system for discovering and enforcing a coding convention standard comprising: a memory medium comprising program instructions; a bus coupled to the memory medium; and a processor, for executing the program instructions, coupled to the memory medium that when executing the program instructions causes the system to: analyze a set of source code files; detect one or more coding conventions based on the analysis; generate a set of coding templates based on the one or more coding conventions; and assign a weighted value for each coding template in the set of coding templates.
  • the computer program product comprises a computer readable storage device, and program instructions stored on the computer readable storage device, to: analyze a set of source code files; detect one or more coding conventions based on the analysis; generate a set of coding templates based on the one or more coding conventions; and assign a weighted value for each coding template in the set of coding templates.
  • FIG. 1 depicts a computerized implementation according to an embodiment of the present invention
  • FIG. 2 shows a more detailed view of an example system diagram for implementing a discovery phase according to an embodiment of the present invention
  • FIG. 3 depicts a method flow diagram for coding convention discovery according to an embodiment of the present invention
  • FIG. 4 depicts a more detailed view of an example system diagram for implementing an enforcement phase according to an embodiment of the present invention.
  • FIG. 5 depicts a method flow diagram for coding convention enforcement according to an embodiment of the present invention.
  • the term “developer” refers to any person who writes computer software. The term can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software.
  • embodiments of the invention provide an approach to discovery and enforcement of coding conventions among a group of developers. Specifically, source code files for a group of developers are imported from a code repository. The source code files are analyzed to discover the commonly used coding conventions of the group. Convention templates are generated based on these coding conventions. Each convention template is assigned a weighted value, and the convention templates are reviewed and approved based on the weighted value.
  • FIG. 1 depicts a computerized implementation 100 according to an embodiment of the present invention.
  • implementation 100 includes computer system 104 deployed within a computer infrastructure 102 .
  • This is intended to demonstrate, among other things, that the present invention could be implemented within a network environment (e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.), or on a stand-alone computer system.
  • a network environment e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.
  • communication throughout the network can occur via any combination of various types of communications links.
  • the communication links can comprise addressable connections that may utilize any combination of wired and/or wireless transmission methods.
  • connectivity could be provided by conventional TCP/IP sockets-based protocol, and an Internet service provider could be used to establish connectivity to the Internet.
  • computer infrastructure 102 is intended to demonstrate that some or all of the components of implementation 100 could be deployed, managed, serviced, etc., by a service provider who offers to implement, deploy, and/or perform the functions of the present invention for others.
  • Computer system 104 is intended to represent any type of computer system that may be implemented in deploying/realizing the teachings recited herein.
  • computer system 104 represents an illustrative system for providing a passport according to the present invention. It should be understood that any other computers implemented under the present invention may have different components/software, but will perform similar functions.
  • computer system 104 includes a processing unit 106 , memory 108 for storing a coding convention tool 150 , a bus 110 , and device interfaces 112 .
  • Processing unit 106 collects and routes signals representing outputs from external devices 115 (e.g., a keyboard, a pointing device, a display, a graphical user interface, etc.) to coding convention tool 150 .
  • the signals can be transmitted over a LAN and/or a WAN (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), wireless links (802.11, Bluetooth, etc.), and so on.
  • the signals may be encrypted using, for example, trusted key-pair encryption.
  • Different external devices may transmit information using different communication pathways, such as Ethernet or wireless networks, direct serial or parallel connections, USB, Firewire®, Bluetooth®, or other proprietary interfaces. (Firewire is a registered trademark of Apple Computer, Inc. Bluetooth is a registered trademark of Bluetooth Special Interest Group (SIG)).
  • SIG Bluetooth Special Interest Group
  • processing unit 106 executes computer program code, such as program code for operating coding convention tool 150 , which is stored in memory 108 and/or code repository 160 . While executing computer program code, processing unit 106 can read and/or write data to/from memory 108 , code repository 160 , user profile database 162 , and/or convention templates database 164 .
  • Code repository 160 , user profile database 162 , and convention templates database 164 can include VCRs, DVRs, RAID arrays, USB hard drives, optical disk recorders, flash storage devices, or any other similar storage device.
  • computer system 104 could also include I/O interfaces that communicate with one or more external devices 115 that enable a user to interact with computer system 104 .
  • coding conventions With respect to informal coding conventions, it is common for a group of developers to fall into habitual, undocumented code practices. In small, fast moving code bases, or extremely large code bases, coding conventions may spring up organically.
  • an existing code repository associated with a group e.g., a predefined team
  • the code repository is inspected to discover a development group's informal coding conventions, and guides subsequent development along those conventions.
  • Use of common conventions among developers allows for debugging of code to be simpler. Also, novice developers can increase productivity and efficiency, as the proposed system will help them discover and use the coding conventions of the group.
  • FIG. 2 depicts a more detailed view of an example system diagram 200 for implementing a discovery phase according to an embodiment of the present invention.
  • Example system diagram 200 consists of coding convention tool 250 , code repository 260 , user profile database 262 , and/or convention templates database 264 .
  • Coding convention tool 250 includes convention discovery engine 205 , and program language interpreter 210 .
  • Approvers 220 are also shown. Approvers 220 may include developers, quality assurance (QA) engineers, managers, business analysts, enterprise architects, project managers, and others. The operations of system diagram 200 will be described in more detail with reference to a method flow diagram of FIG. 3 .
  • QA quality assurance
  • FIGS. 2-3 a method flow diagram 300 for coding convention discovery according to an embodiment of the present invention is depicted.
  • an analysis of code repository is done to establish convention template database 264 , which will be used to enforce future convention usage in a development environment.
  • the convention discovery engine 205 imports the source code files residing in code repository 260 .
  • the program language interpreter 210 analyzes the code and logically identifies which source code files are written in the same language. For example, some code files may be written in Java®, others in Python®, and so on. (Java is a registered trademark of Oracle Corporation. Python is a registered trademark of the Python Software Foundation). The program language interpreter 210 logically identifies the source code files and groups each code file into an appropriate language category.
  • the convention discovery engine 205 discovers the coding conventions commonly used by the group of developers. Of the source code files that share a common language, the convention discovery engine 205 searches for coding conventions among the different coding styles that are used.
  • the coding conventions may include, but are not limited to, the constructs used (e.g., “If” statements, “For Loop” statements, “Switch” statements, etc.), format of constructs used (e.g., in-line or multi-line format), naming conventions, frequency of public and private methods and variables per class, style of comments, style of header information, and so on.
  • constructs used e.g., “If” statements, “For Loop” statements, “Switch” statements, etc.
  • format of constructs used e.g., in-line or multi-line format
  • naming conventions e.g., frequency of public and private methods and variables per class, style of comments, style of header information, and so on.
  • the examples listed are illustrative only and not intended
  • the convention discovery engine 205 From the detected coding conventions, the convention discovery engine 205 generates a set of convention templates based on the detected coding conventions.
  • Convention templates may include, among other things, commonly used syntax, code patterns and constructs, and common variable names. The examples listed are illustrative only and not intended to be limiting.
  • the convention templates may be stored in convention template database 264 .
  • the convention engine 205 assigns a weighted value to each convention template. In one example, a convention template that is used by a majority of senior developers may be assigned a higher weighted value (e.g., a value of ‘8’) than a coding convention that is used primarily by novice developers (e.g., a value of ‘1’).
  • Information relating to each developer may be stored in user profile database 262 .
  • the user profile database 262 may be populated using a human resources database or by other means.
  • a convention template that conforms to established industry coding standards may be assigned a high weighted value (e.g., a value of ‘10’).
  • approvers 220 may approve one or more convention templates based on the weighted value of each respective convention template.
  • Each approved convention template is integrated into a set of standards of the software development environment associated with the group of developers.
  • FIG. 4 depicts a more detailed view of an example system diagram 400 for implementing an enforcement phase according to an embodiment of the present invention. Similar to FIG. 2 , example system diagram 400 consists of coding convention tool 450 , code repository 460 , user profile database 462 , and/or convention templates database 464 . Coding convention tool 450 includes convention discovery engine 405 , program language interpreter 410 , convention comparator 415 , and convention visualizer 420 . Developer 470 is also shown. The operations of system diagram 400 will be described in more detail with reference to a method flow diagram of FIG. 5 .
  • FIGS. 4-5 a method flow diagram 500 for coding convention enforcement according to an embodiment of the present invention is depicted.
  • the convention comparator 415 can cross-check the source code file with the group's coding conventions stored in convention template database 464 .
  • the convention comparator 415 detects or is notified of a source code file delivery request to code repository 460 .
  • the program language interpreter 410 logically identifies the source code file and groups the source code file into an appropriate language category.
  • the convention comparator 415 processes the source code file against the convention templates stored in convention template database 464 .
  • the convention comparator 415 generates output indicating any issues found within the source code file that do not conform to the coding standards.
  • the output may include warnings and/or recommendations to assist the developer in conforming to the coding standards.
  • the recommendations may include links or snippets of the generalized syntax proposed, or a reference to another location in the code base to use as an example or guide. Group members using this style may be listed as well.
  • the convention visualizer 420 provides a graphical analysis of the output.
  • the user may modify the source code file to comply with the group's coding conventions based on the graphical analysis that is provided.
  • each portion of each flowchart may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
  • each block of each flowchart illustration can be implemented by special purpose hardware-based systems that perform the specified functions or acts.
  • coding convention tool 150 can be provided, and one or more systems for performing the processes described in the invention can be obtained and deployed to computer infrastructure 102 ( FIG. 1 ).
  • the deployment can comprise one or more of (1) installing program code on a computing device, such as a computer system, from a computer-readable storage medium; (2) adding one or more computing devices to the infrastructure; and (3) incorporating and/or modifying one or more existing systems of the infrastructure to enable the infrastructure to perform the process actions of the invention.
  • the exemplary computer system 104 may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
  • program modules include routines, programs, people, components, logic, data structures, and so on, which perform particular tasks or implement particular abstract data types.
  • Exemplary computer system 104 may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote computer storage media including memory storage devices.
  • a system or unit may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components.
  • a system or unit may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
  • a system or unit may also be implemented in software for execution by various types of processors.
  • a system or unit or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions, which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified system or unit need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the system or unit and achieve the stated purpose for the system or unit.
  • a system or unit of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices.
  • operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices and disparate memory devices.
  • systems/units may also be implemented as a combination of software and one or more hardware devices.
  • coding convention tool 150 may be embodied in the combination of a software executable code stored on a memory medium (e.g., memory storage device).
  • a system or unit may be the combination of a processor that operates on a set of operational data.
  • CMOS complementary metal oxide semiconductor
  • BiCMOS bipolar CMOS
  • Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chip sets, and so forth.
  • processors microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chip sets, and so forth.
  • ASIC application specific integrated circuits
  • PLD programmable logic devices
  • DSP digital signal processors
  • FPGA field programmable gate array
  • registers registers, semiconductor devices, chips, micro
  • the software may be referenced as a software element.
  • a software element may refer to any software structures arranged to perform certain operations.
  • the software elements may include program instructions and/or data adapted for execution by a hardware element, such as a processor.
  • Program instructions may include an organized list of commands comprising words, values, or symbols arranged in a predetermined syntax that, when executed, may cause a processor to perform a corresponding set of operations.
  • the present invention may also be a computer program product.
  • the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
  • the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
  • the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
  • a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
  • RAM random access memory
  • ROM read-only memory
  • EPROM or Flash memory erasable programmable read-only memory
  • SRAM static random access memory
  • CD-ROM compact disc read-only memory
  • DVD digital versatile disk
  • memory stick a floppy disk
  • a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
  • a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
  • Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
  • the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
  • a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
  • Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
  • the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
  • These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

Abstract

In general, embodiments of the invention provide an approach to discover and enforce coding conventions among a group of developers. Specifically, source code files for a group of developers are imported from a code repository. The source code files are analyzed to discover the commonly used coding conventions of the group. Convention templates are generated based on these coding conventions. Each convention template is assigned a weighted value, and the convention templates are reviewed and approved based on the weighted value.

Description

    TECHNICAL FIELD
  • The present invention relates to discovery and enforcement of coding conventions among a group of developers. Specifically, the present invention relates to coding pattern recognition and coding standards generation based upon an associated weight and approval level of the coding pattern.
  • BACKGROUND
  • Coding conventions are a set of guidelines and recommended programming styles for a given programming language. These conventions usually cover file organization, indentation, comments, declarations, statements, naming conventions, common patterns, programming practices, programming principles, programming rules of thumb, architectural best practices, etc. These are guidelines for software structural quality. By writing consistent code, developers help both themselves and, more importantly, other developers who work in the same codebase. The coding conventions may be formalized into a documented set of rules or an informal set or practices for a development group to follow. Formal coding conventions are a top-down approach, often recommended and enforced long after program development is underway.
  • In today's development environments, coding conventions are enforced within the environment, but those conventions must already exist as a part of a development methodology, which is known to a group of developers. Often times though, developers tend to develop their own coding conventions that they wish others in the group to adapt in order that the programming code remains consistent and easy to follow. Today's convention enforcements do not provide a means for discovering and subsequently enforcing a coding convention that is unique to the group.
  • SUMMARY
  • In general, embodiments of the invention provide an approach to discover and enforce coding conventions among a group of developers. Specifically, source code files for a group of developers are imported from a code repository. The source code files are analyzed to discover the commonly used coding conventions of the group. Convention templates are generated based on these coding conventions. Each convention template is assigned a weighted value, and the convention templates are reviewed and approved based on the weighted value.
  • In one embodiment, there is a method for discovering and enforcing a coding convention standard. In this embodiment, the method comprises: analyzing a set of source code files; detecting one or more coding conventions based on the analysis; generating a set of coding templates based on the one or more coding conventions; and assigning a weighted value for each coding template in the set of coding templates.
  • In a second embodiment, there is a system for discovering and enforcing a coding convention standard, comprising: a memory medium comprising program instructions; a bus coupled to the memory medium; and a processor, for executing the program instructions, coupled to the memory medium that when executing the program instructions causes the system to: analyze a set of source code files; detect one or more coding conventions based on the analysis; generate a set of coding templates based on the one or more coding conventions; and assign a weighted value for each coding template in the set of coding templates.
  • In a third embodiment, there is computer program product for discovering and enforcing a coding convention standard. In this embodiment, the computer program product comprises a computer readable storage device, and program instructions stored on the computer readable storage device, to: analyze a set of source code files; detect one or more coding conventions based on the analysis; generate a set of coding templates based on the one or more coding conventions; and assign a weighted value for each coding template in the set of coding templates.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings in which:
  • FIG. 1 depicts a computerized implementation according to an embodiment of the present invention;
  • FIG. 2 shows a more detailed view of an example system diagram for implementing a discovery phase according to an embodiment of the present invention;
  • FIG. 3 depicts a method flow diagram for coding convention discovery according to an embodiment of the present invention;
  • FIG. 4 depicts a more detailed view of an example system diagram for implementing an enforcement phase according to an embodiment of the present invention; and
  • FIG. 5 depicts a method flow diagram for coding convention enforcement according to an embodiment of the present invention.
  • The drawings are not necessarily to scale. The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements.
  • DETAILED DESCRIPTION
  • Example embodiments will now be described more fully herein with reference to the accompanying drawings, in which example embodiments are shown. This disclosure may, however, be embodied in many different forms and should not be construed as limited to the example embodiments set forth herein. Rather, these example embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope of this disclosure to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
  • The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of this disclosure. As used herein, the singular forms “a”, “an”, and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Furthermore, the use of the terms “a”, “an”, etc., do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced items. It will be further understood that the terms “comprises” and/or “comprising”, or “includes” and/or “including”, when used in this specification, specify the presence of stated features, regions, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, regions, integers, steps, operations, elements, components, and/or groups thereof. Furthermore, the term “developer” refers to any person who writes computer software. The term can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software.
  • As indicated above, embodiments of the invention provide an approach to discovery and enforcement of coding conventions among a group of developers. Specifically, source code files for a group of developers are imported from a code repository. The source code files are analyzed to discover the commonly used coding conventions of the group. Convention templates are generated based on these coding conventions. Each convention template is assigned a weighted value, and the convention templates are reviewed and approved based on the weighted value.
  • FIG. 1 depicts a computerized implementation 100 according to an embodiment of the present invention. As depicted, implementation 100 includes computer system 104 deployed within a computer infrastructure 102. This is intended to demonstrate, among other things, that the present invention could be implemented within a network environment (e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.), or on a stand-alone computer system. In the case of the former, communication throughout the network can occur via any combination of various types of communications links. For example, the communication links can comprise addressable connections that may utilize any combination of wired and/or wireless transmission methods. Where communications occur via the Internet, connectivity could be provided by conventional TCP/IP sockets-based protocol, and an Internet service provider could be used to establish connectivity to the Internet. Still yet, computer infrastructure 102 is intended to demonstrate that some or all of the components of implementation 100 could be deployed, managed, serviced, etc., by a service provider who offers to implement, deploy, and/or perform the functions of the present invention for others.
  • Computer system 104 is intended to represent any type of computer system that may be implemented in deploying/realizing the teachings recited herein. In this particular example, computer system 104 represents an illustrative system for providing a passport according to the present invention. It should be understood that any other computers implemented under the present invention may have different components/software, but will perform similar functions. As shown, computer system 104 includes a processing unit 106, memory 108 for storing a coding convention tool 150, a bus 110, and device interfaces 112.
  • Processing unit 106 collects and routes signals representing outputs from external devices 115 (e.g., a keyboard, a pointing device, a display, a graphical user interface, etc.) to coding convention tool 150. The signals can be transmitted over a LAN and/or a WAN (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), wireless links (802.11, Bluetooth, etc.), and so on. In some embodiments, the signals may be encrypted using, for example, trusted key-pair encryption. Different external devices may transmit information using different communication pathways, such as Ethernet or wireless networks, direct serial or parallel connections, USB, Firewire®, Bluetooth®, or other proprietary interfaces. (Firewire is a registered trademark of Apple Computer, Inc. Bluetooth is a registered trademark of Bluetooth Special Interest Group (SIG)).
  • In general, processing unit 106 executes computer program code, such as program code for operating coding convention tool 150, which is stored in memory 108 and/or code repository 160. While executing computer program code, processing unit 106 can read and/or write data to/from memory 108, code repository 160, user profile database 162, and/or convention templates database 164. Code repository 160, user profile database 162, and convention templates database 164 can include VCRs, DVRs, RAID arrays, USB hard drives, optical disk recorders, flash storage devices, or any other similar storage device. Although not shown, computer system 104 could also include I/O interfaces that communicate with one or more external devices 115 that enable a user to interact with computer system 104.
  • With respect to informal coding conventions, it is common for a group of developers to fall into habitual, undocumented code practices. In small, fast moving code bases, or extremely large code bases, coding conventions may spring up organically. In one embodiment of the present invention, an existing code repository associated with a group (e.g., a predefined team) of developers is analyzed. The code repository is inspected to discover a development group's informal coding conventions, and guides subsequent development along those conventions. Use of common conventions among developers allows for debugging of code to be simpler. Also, novice developers can increase productivity and efficiency, as the proposed system will help them discover and use the coding conventions of the group.
  • FIG. 2 depicts a more detailed view of an example system diagram 200 for implementing a discovery phase according to an embodiment of the present invention. Example system diagram 200 consists of coding convention tool 250, code repository 260, user profile database 262, and/or convention templates database 264. Coding convention tool 250 includes convention discovery engine 205, and program language interpreter 210. Approvers 220 are also shown. Approvers 220 may include developers, quality assurance (QA) engineers, managers, business analysts, enterprise architects, project managers, and others. The operations of system diagram 200 will be described in more detail with reference to a method flow diagram of FIG. 3.
  • Referring now to FIGS. 2-3, a method flow diagram 300 for coding convention discovery according to an embodiment of the present invention is depicted. During this discovery phase, an analysis of code repository is done to establish convention template database 264, which will be used to enforce future convention usage in a development environment. At 302, the convention discovery engine 205 imports the source code files residing in code repository 260.
  • At 304, the program language interpreter 210 analyzes the code and logically identifies which source code files are written in the same language. For example, some code files may be written in Java®, others in Python®, and so on. (Java is a registered trademark of Oracle Corporation. Python is a registered trademark of the Python Software Foundation). The program language interpreter 210 logically identifies the source code files and groups each code file into an appropriate language category.
  • At 306, the convention discovery engine 205 discovers the coding conventions commonly used by the group of developers. Of the source code files that share a common language, the convention discovery engine 205 searches for coding conventions among the different coding styles that are used. The coding conventions may include, but are not limited to, the constructs used (e.g., “If” statements, “For Loop” statements, “Switch” statements, etc.), format of constructs used (e.g., in-line or multi-line format), naming conventions, frequency of public and private methods and variables per class, style of comments, style of header information, and so on. The examples listed are illustrative only and not intended to be limiting.
  • At 308, from the detected coding conventions, the convention discovery engine 205 generates a set of convention templates based on the detected coding conventions. Convention templates may include, among other things, commonly used syntax, code patterns and constructs, and common variable names. The examples listed are illustrative only and not intended to be limiting. The convention templates may be stored in convention template database 264. At 310, the convention engine 205 assigns a weighted value to each convention template. In one example, a convention template that is used by a majority of senior developers may be assigned a higher weighted value (e.g., a value of ‘8’) than a coding convention that is used primarily by novice developers (e.g., a value of ‘1’). Information relating to each developer may be stored in user profile database 262. The user profile database 262 may be populated using a human resources database or by other means. In another example, a convention template that conforms to established industry coding standards may be assigned a high weighted value (e.g., a value of ‘10’).
  • At 312, approval of each generated convention template by approvers 220 is required prior to being accepted as a standard to be used in future program development by the group of developers. In one example, approvers 220 may approve one or more convention templates based on the weighted value of each respective convention template. Each approved convention template is integrated into a set of standards of the software development environment associated with the group of developers.
  • FIG. 4 depicts a more detailed view of an example system diagram 400 for implementing an enforcement phase according to an embodiment of the present invention. Similar to FIG. 2, example system diagram 400 consists of coding convention tool 450, code repository 460, user profile database 462, and/or convention templates database 464. Coding convention tool 450 includes convention discovery engine 405, program language interpreter 410, convention comparator 415, and convention visualizer 420. Developer 470 is also shown. The operations of system diagram 400 will be described in more detail with reference to a method flow diagram of FIG. 5.
  • Referring now to FIGS. 4-5, a method flow diagram 500 for coding convention enforcement according to an embodiment of the present invention is depicted. When a user is creating or modifying a source code file, the convention comparator 415 can cross-check the source code file with the group's coding conventions stored in convention template database 464. At 502, the convention comparator 415 detects or is notified of a source code file delivery request to code repository 460.
  • At 504, the program language interpreter 410 logically identifies the source code file and groups the source code file into an appropriate language category. At 506, the convention comparator 415 processes the source code file against the convention templates stored in convention template database 464. At 506, the convention comparator 415 generates output indicating any issues found within the source code file that do not conform to the coding standards. The output may include warnings and/or recommendations to assist the developer in conforming to the coding standards. The recommendations may include links or snippets of the generalized syntax proposed, or a reference to another location in the code base to use as an example or guide. Group members using this style may be listed as well. At 510, the convention visualizer 420 provides a graphical analysis of the output. At 512, the user may modify the source code file to comply with the group's coding conventions based on the graphical analysis that is provided.
  • It will be appreciated that the method process flow diagrams 300 and 500 of FIGS. 3 and 5, respectively, represent one possible implementation of a process flow for coding convention discovery, and that other process flows are possible within the scope of the invention. The method process diagrams discussed above illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each portion of each flowchart may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It will also be noted that each block of each flowchart illustration can be implemented by special purpose hardware-based systems that perform the specified functions or acts.
  • Further, it can be appreciated that the approaches disclosed herein can be used within a computer system for discovering and enforcing a coding convention standard. In this case, as shown in FIGS. 1-2, coding convention tool 150 can be provided, and one or more systems for performing the processes described in the invention can be obtained and deployed to computer infrastructure 102 (FIG. 1). To this extent, the deployment can comprise one or more of (1) installing program code on a computing device, such as a computer system, from a computer-readable storage medium; (2) adding one or more computing devices to the infrastructure; and (3) incorporating and/or modifying one or more existing systems of the infrastructure to enable the infrastructure to perform the process actions of the invention.
  • The exemplary computer system 104 (FIG. 1) may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, people, components, logic, data structures, and so on, which perform particular tasks or implement particular abstract data types. Exemplary computer system 104 may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
  • Some of the functional components described in this specification have been labeled as systems or units in order to more particularly emphasize their implementation independence. For example, a system or unit may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A system or unit may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like. A system or unit may also be implemented in software for execution by various types of processors. A system or unit or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions, which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified system or unit need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the system or unit and achieve the stated purpose for the system or unit.
  • Further, a system or unit of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices and disparate memory devices.
  • Furthermore, systems/units may also be implemented as a combination of software and one or more hardware devices. For instance, coding convention tool 150 may be embodied in the combination of a software executable code stored on a memory medium (e.g., memory storage device).
  • In a further example, a system or unit may be the combination of a processor that operates on a set of operational data.
  • As noted above, some of the embodiments may be embodied in hardware. The hardware may be referenced as a hardware element. In general, a hardware element may refer to any hardware structures arranged to perform certain operations. In one embodiment, for example, the hardware elements may include any analog or digital electrical or electronic elements fabricated on a substrate. The fabrication may be performed using silicon-based integrated circuit (IC) techniques, such as complementary metal oxide semiconductor (CMOS), bipolar, and bipolar CMOS (BiCMOS) techniques, for example. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chip sets, and so forth. However, the embodiments are not limited in this context.
  • Also noted above, some embodiments may be embodied in software. The software may be referenced as a software element. In general, a software element may refer to any software structures arranged to perform certain operations. In one embodiment, for example, the software elements may include program instructions and/or data adapted for execution by a hardware element, such as a processor. Program instructions may include an organized list of commands comprising words, values, or symbols arranged in a predetermined syntax that, when executed, may cause a processor to perform a corresponding set of operations.
  • The present invention may also be a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
  • The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
  • Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
  • Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
  • These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
  • The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • It is apparent that there has been provided with this invention an approach for discovering and enforcing a coding convention standard. While the invention has been particularly shown and described in conjunction with a preferred embodiment thereof, it will be appreciated that variations and modifications will occur to those skilled in the art. Therefore, it is to be understood that the appended claims are intended to cover all such modifications and changes that fall within the true spirit of the invention.

Claims (20)

1. A method for discovering and enforcing a coding convention standard, comprising the computer-implemented steps of:
analyzing a set of source code files coded by a group of programmers;
detecting one or more coding conventions based on the analysis, the detected one or more coding conventions being guidelines and recommended stylistic elements for a given programming language present in a particular piece of source code;
generating a set of coding templates based on the one or more coding conventions that are unique to the group of programmers; and
assigning a weighted value for each coding template in the set of coding templates.
2. The method of claim 1, further comprising importing the set of source code files from a code repository.
3. The method of claim 1, further comprising approving a coding template based on the weighted value of the coding template.
4. The method of claim 1, wherein the weighted value is based on an experience level of a developer.
5. The method of claim 1, further comprising categorizing each of the source code files based on programming language.
6. The method of claim 2, further comprising:
receiving a source file delivery request to have a source file added to the code repository;
comparing the source code file with the set of coding templates; and
providing output based on the comparison.
7. The method of claim 6, wherein the output includes at least one of a warning or recommendation.
8. A system for discovering and enforcing a coding convention standard, comprising:
a memory medium comprising program instructions;
a bus coupled to the memory medium; and
a processor, for executing the program instructions, coupled to the memory medium that when executing the program instructions causes the system to:
analyze a set of source code files coded by a group of programmers;
detect one or more coding conventions based on the analysis the detected one or more coding conventions being guidelines and recommended stylistic elements for a given programming language present in a particular piece of source code;
generate a set of coding templates based on the one or more coding conventions that are unique to the group of programmers; and
assign a weighted value for each coding template in the set of coding templates.
9. The system of claim 8, the memory medium further comprising instructions to import the set of source code files from a code repository.
10. The system of claim 8, the memory medium further comprising instructions to approve a coding template based on the weighted value of the coding template.
11. The system of claim 8, wherein the weighted value is based on an experience level of a developer.
12. The system of claim 8, the memory medium further comprising instructions to categorize each of the source code files based on programming language.
13. The system of claim 9, the memory medium further comprising instructions to:
receive a source file delivery request to have a source file added to the code repository;
compare the source code file with the set of coding templates; and
provide output based on the comparison.
14. The system of claim 13, wherein the output includes at least one of a warning or recommendation.
15. A computer program product for discovering and enforcing a coding convention standard, the computer program product comprising a computer readable storage device, and program instructions stored on the computer readable storage device, to:
analyze a set of source code files coded by a group of programmers;
detect one or more coding conventions based on the analysis, the detected one or more coding conventions being guidelines and recommended stylistic elements for a given programming language present in a particular piece of source code;
generate a set of coding templates based on the one or more coding conventions that are unique to the group of programmers; and
assign a weighted value for each coding template in the set of coding templates.
16. The computer program product of claim 15, further comprising program instructions stored on the computer readable storage device to import the set of source code files from a code repository.
17. The computer program product of claim 15, further comprising program instructions stored on the computer readable storage device to approve a coding template based on the weighted value of the coding template.
18. The computer program product of claim 15, wherein the weighted value is based on an experience level of a developer.
19. The computer program product of claim 16, further comprising program instructions stored on the computer readable storage device to categorize each of the source code files based on programming language.
20. The computer program product of claim 19, further comprising program instructions stored on the computer readable storage device to:
receive a source file delivery request to have a source file added to the code repository;
compare the source code file with the set of coding templates; and
provide output based on the comparison, wherein the output includes at least one of a warning or recommendation.
US14/448,301 2014-07-31 2014-07-31 Coding convention discovery and enforcement Active US9678746B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/448,301 US9678746B2 (en) 2014-07-31 2014-07-31 Coding convention discovery and enforcement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/448,301 US9678746B2 (en) 2014-07-31 2014-07-31 Coding convention discovery and enforcement

Publications (2)

Publication Number Publication Date
US20160034275A1 true US20160034275A1 (en) 2016-02-04
US9678746B2 US9678746B2 (en) 2017-06-13

Family

ID=55180105

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/448,301 Active US9678746B2 (en) 2014-07-31 2014-07-31 Coding convention discovery and enforcement

Country Status (1)

Country Link
US (1) US9678746B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710238A (en) * 2018-12-20 2019-05-03 国云科技股份有限公司 A kind of code generating method based on Spring Cloud
US20190205124A1 (en) * 2016-09-08 2019-07-04 Microsoft Technology Licensing, Llc Systems and methods for determining and enforcing the optimal amount of source code comments
CN110377269A (en) * 2019-06-17 2019-10-25 平安科技(深圳)有限公司 Business approval system configuration method, apparatus and storage medium
CN110427190A (en) * 2019-07-31 2019-11-08 中国工商银行股份有限公司 The recognition methods and its device of application program, electronic equipment and medium
US10817264B1 (en) * 2019-12-09 2020-10-27 Capital One Services, Llc User interface for a source code editor
CN116185379A (en) * 2022-11-17 2023-05-30 北京东方通科技股份有限公司 Method for optimizing code hosting platform

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023210B2 (en) 2019-03-20 2021-06-01 International Business Machines Corporation Generating program analysis rules based on coding standard documents

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243859B1 (en) * 1998-11-02 2001-06-05 Hu Chen-Kuang Method of edit program codes by in time extracting and storing
US20020133812A1 (en) * 2000-10-04 2002-09-19 Todd Little System and method for computer code generation
US20050015747A1 (en) * 2003-07-18 2005-01-20 Bea Systems, Inc. System and method for performing code completion in an integrated development environment
US20080072210A1 (en) * 2006-09-19 2008-03-20 Darren Rush Notification system for source code discovery
US20080320444A1 (en) * 2007-06-21 2008-12-25 Microsoft Corporation Late bound programmatic assistance
US20100050151A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for correcting semantic errors in code using peer submitted code snippets
US20120174061A1 (en) * 2010-12-30 2012-07-05 International Business Machines Corporation Code suggestion in a software development tool
US20120198419A1 (en) * 2011-02-02 2012-08-02 Neill Allan W User input auto-completion
US8739150B2 (en) * 2010-05-28 2014-05-27 Smartshift Gmbh Systems and methods for dynamically replacing code objects via conditional pattern templates

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0247163B1 (en) 1985-11-27 1992-02-05 Trustees Of Boston University Pattern encoding system
US7127704B2 (en) * 2000-06-02 2006-10-24 Sun Microsystems, Inc. Interactive software engineering tool with support for embedded lexical contexts
US7412388B2 (en) * 2003-12-12 2008-08-12 International Business Machines Corporation Language-enhanced programming tools
US7647579B2 (en) * 2004-03-31 2010-01-12 International Business Machines Corporation Method, system and program product for detecting deviation from software development best practice resource in a code sharing system
US20060101435A1 (en) 2004-10-13 2006-05-11 International Business Machines Corporation Detection of code patterns
EP1960869A1 (en) * 2005-12-15 2008-08-27 International Business Machines Corporation Method and system for assisting a software developer in creating source code for a computer program
US8572560B2 (en) * 2006-01-10 2013-10-29 International Business Machines Corporation Collaborative software development systems and methods providing automated programming assistance
US9471282B2 (en) * 2007-03-21 2016-10-18 Ca, Inc. System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component
US8813050B2 (en) * 2008-06-03 2014-08-19 Isight Partners, Inc. Electronic crime detection and tracking
US8782608B2 (en) * 2008-06-17 2014-07-15 International Business Machines Corporation System and method of identifying and tracking software pattern metrics
US8782613B2 (en) 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
US20100175044A1 (en) * 2009-01-07 2010-07-08 Infosys Technologies Limited Method for creating software factory for developing j2ee applications
WO2013060525A1 (en) 2011-10-27 2013-05-02 Siemens Aktiengesellschaft A system and a method to analyze a design for a piece of code
US20140013297A1 (en) * 2012-07-03 2014-01-09 Microsoft Corporation Query-Based Software System Design Representation
US9304760B2 (en) * 2012-11-12 2016-04-05 International Business Machines Corporation Identifying software code experts
US20140173563A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Editor visualizations

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243859B1 (en) * 1998-11-02 2001-06-05 Hu Chen-Kuang Method of edit program codes by in time extracting and storing
US20020133812A1 (en) * 2000-10-04 2002-09-19 Todd Little System and method for computer code generation
US20050015747A1 (en) * 2003-07-18 2005-01-20 Bea Systems, Inc. System and method for performing code completion in an integrated development environment
US20080072210A1 (en) * 2006-09-19 2008-03-20 Darren Rush Notification system for source code discovery
US20080320444A1 (en) * 2007-06-21 2008-12-25 Microsoft Corporation Late bound programmatic assistance
US20100050151A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for correcting semantic errors in code using peer submitted code snippets
US8739150B2 (en) * 2010-05-28 2014-05-27 Smartshift Gmbh Systems and methods for dynamically replacing code objects via conditional pattern templates
US20120174061A1 (en) * 2010-12-30 2012-07-05 International Business Machines Corporation Code suggestion in a software development tool
US20120198419A1 (en) * 2011-02-02 2012-08-02 Neill Allan W User input auto-completion

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Basit, Hamid Abdul, and Stan Jarzabek. "A data mining approach for detecting higher-level clones in software." IEEE Transactions on Software engineering 35.4 (2009): 497-514. *
Li, Zhenmin, and Yuanyuan Zhou. "PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code."ACM SIGSOFT Software Engineering Notes. Vol. 30. No. 5. ACM, 2005. *
Livshits, Benjamin, and Thomas Zimmermann. "DynaMine: finding common error patterns by mining software revision histories." ACM SIGSOFT Software Engineering Notes. Vol. 30. No. 5. ACM, 2005. *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190205124A1 (en) * 2016-09-08 2019-07-04 Microsoft Technology Licensing, Llc Systems and methods for determining and enforcing the optimal amount of source code comments
US10846082B2 (en) * 2016-09-08 2020-11-24 Microsoft Technology Licensing, Llc Systems and methods for determining and enforcing the optimal amount of source code comments
CN109710238A (en) * 2018-12-20 2019-05-03 国云科技股份有限公司 A kind of code generating method based on Spring Cloud
CN110377269A (en) * 2019-06-17 2019-10-25 平安科技(深圳)有限公司 Business approval system configuration method, apparatus and storage medium
CN110427190A (en) * 2019-07-31 2019-11-08 中国工商银行股份有限公司 The recognition methods and its device of application program, electronic equipment and medium
US10817264B1 (en) * 2019-12-09 2020-10-27 Capital One Services, Llc User interface for a source code editor
CN116185379A (en) * 2022-11-17 2023-05-30 北京东方通科技股份有限公司 Method for optimizing code hosting platform

Also Published As

Publication number Publication date
US9678746B2 (en) 2017-06-13

Similar Documents

Publication Publication Date Title
US9678746B2 (en) Coding convention discovery and enforcement
US11899818B2 (en) System and method for code-based protection of sensitive data
US11436337B2 (en) System and method for application security profiling
US20220086179A1 (en) Service access data enrichment for cybersecurity
US9465609B2 (en) Correcting non-compliant source code in an integrated development environment
US20180121320A1 (en) Analysis to check web api code usage and specification
US20200293313A1 (en) Methods and Apparatus for Finding Long Methods in Code
US9959161B2 (en) Automated ticketing analytics
EP3234851B1 (en) A system and method for facilitating static analysis of software applications
US8726245B2 (en) Static analysis of computer software applications having a model-view-controller architecture
CN107391370B (en) Software defect number prediction method based on data oversampling and integrated learning
US20210273970A1 (en) System, method and computer readable medium for identifying missing organizational security detection system rules
US10387288B2 (en) Interactive analysis of a security specification
CN116420135A (en) Continuous integration and development of code in a secure environment
US11030362B2 (en) Modeling and cooperative simulation of systems with interdependent discrete and continuous elements
US8656368B1 (en) System, method, and computer program product for abstract software performance profiling
US9519566B2 (en) Modeling memory use of applications
CN106598825A (en) Electronic equipment, method and device for standardizing logging code output
Kumar et al. Code clone detection and analysis using software metrics and neural network-a literature review
US20230315862A1 (en) Method and apparatus for identifying dynamically invoked computer code using literal values
US20230367911A1 (en) Analyzing scripts to create and enforce security policies in dynamic development pipelines

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ABUELSAAD, KELLY;MCELLIGOTT, SHANE B.;NGUYEN, HIEN Q.;AND OTHERS;SIGNING DATES FROM 20140722 TO 20140729;REEL/FRAME:033436/0468

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

AS Assignment

Owner name: KYNDRYL, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:057885/0644

Effective date: 20210930