Abstract: A process for judging quality of an application code is disclosed. The process comprises receiving at least a scenario and an application code from a user, providing a custom code based upon the scenario, containerizing the custom code and the application code to yield a first container and a second container respectively. The process then comprises running test cases between the first container and the second container to analyze the quality of the application code. Further, the process includes identifying one or more bugs in the application code.
FIELD OF INVENTION
[001] The present invention discloses a system for judging an application code. More specifically, the present invention discloses a system for application code quality analysis and identification of bugs.
BACKGROUND 5
[002] Code testing (or analysis) has become a crucial job in the field of software development with advancement in the software industry. Manual code analysis is a time consuming process and involves expertise in testing. Therefore, in order to automate the process of code testing, a lot of testing platforms have been introduced. Such platforms simplify the process of code testing by analyzing the 10 quality of a code and/or debugging the code.
[003] However, such conventional automated testing platforms prove to be inefficient as they offer disadvantages such as configuration related problems, are time intensive and complex. Moreover, the conventional platforms do not provide a concise report to a user which includes important and relevant quality related bugs. 15 Further, these platforms do not aid in improvising the coding skills of a developer.
[004] Therefore, an automated testing and code judging platform which overcomes the barriers of the conventional platforms by providing an effective solution for code quality analysis is needed to be devised.
SUMMARY 20
[005] The present invention discloses a process for judging quality of an application code. The process comprises receiving at least a scenario and an application code from a user, providing a custom code based upon the scenario, containerizing the
3
custom code and the application code to yield a user container and a test container respectively. The process then comprises running test cases between the user container and the test container to analyze the quality of the application code. Further, the process includes identifying one or more bugs in the application code.
BRIEF DESCRIPTION OF DRAWINGS 5
[006] The summary above, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the present disclosure, exemplary constructions of the disclosure are shown in the drawings. However, the disclosure is not limited to specific methods and instrumentalities disclosed herein. 10 Moreover, those in the art will understand that the drawings are not to scale. Wherever possible, like elements have been indicated by identical numbers.
[007] FIGs. 1A-1C depict different embodiments of client-server architecture in accordance with an embodiment of the present invention.
[008] FIG. 2 shows a block diagram of software platform in accordance with an 15 embodiment of the present invention.
[009] FIG. 3 represents an exemplary embodiment of steps involved in judging an application code in accordance with an embodiment of the present invention.
[0010] DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
[0011] Methods and systems for judging an application code are disclosed. The 20 following description is presented to enable any person skilled in the art to make and use the invention. For purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present invention. Descriptions of
4
specific applications are provided only as examples. Various modifications to the preferred embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to 5 be accorded the widest scope consistent with the principles and features disclosed herein.
[0012] The embodiments are described below with reference to block diagrams and/or data flow illustrations of methods, apparatus, systems, and computer program products. It should be understood that each block of the block diagrams 10 and/or data flow illustrations, respectively, may be implemented in part by computer program instructions, e.g., as logical steps or operations executing on a processor in a computing system. These computer program instructions may be loaded onto a computer, such as a special purpose computer or other programmable data processing apparatus to produce a specifically-configured 15 machine, such that the instructions which execute on the computer or other programmable data processing apparatus implement the functions specified in the data flow illustrations or blocks.
[0013] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data 20 processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the 5 functionality specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus 25 to cause a series of operational steps to be performed on the computer or other
5
programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide operations for implementing the functions specified in the data flow illustrations or blocks.
[0014] Accordingly, blocks of the block diagrams and data flow illustrations support 5 various combinations for performing the specified functions, combinations of operations for performing the specified functions and program instructions for performing the specified functions. It should also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose 10 hardware-based computer systems that perform the specified functions or operations, or combinations of special purpose hardware and computer instructions.
[0015] Further, applications, software programs or computer readable instructions may be referred to as components or modules. Applications may be hardwired or 15 hardcoded in hardware or take the form of software executing on a general purpose computer such that when the software is loaded into and/or executed by the computer, the computer becomes an apparatus for practicing the invention, or they are available via a web service. Applications may also be downloaded in whole or in part through the use of a software development kit or a toolkit that enables the 20 creation and implementation of the present invention.
[0016] In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention.
6
[0017] The present invention discloses an application code judging platform. The application code judging platform is utilized for the purpose of judging the quality of an application code and providing a list of critical bugs in the application code. Based upon such judging, the application code judging platform further prepares one or more reports on the quality of the application code. The report(s) may aid a user 5 (developer of the said application code) to review and revise his application code to improve his programming skills.
[0018] In an embodiment, the application code judging platform of the present invention requires one or more inputs from the user. Based upon such inputs, the application code judging platform creates at least two containers and the quality of 10 the application code is then analyzed. Further, bugs are also identified and critical bugs are filtered. The end result is presented in the form of e-reports to the user.
[0019] Referring now to the drawings, FIG. 1A is a system 100a configured as a client/server architecture used in an embodiment of the present invention. A “client” is a member of a class or group that uses the services of another class or 15 group to which it is not related. In the context of a computer network, such as the Internet, a client is a process (i.e. roughly a program or task) that requests a service which is provided by another process, known as a server program. The client process uses the requested service without having to know any working details about the server program or the server itself. In networked systems, a client process usually 20 runs on a computer that accesses shared network resources provided by another computer running a corresponding server process.
[0020] A “server” is typically a remote computer system that is accessible over a communication medium such as the Internet. The client process may be active on a second computer system, and communicate with the server process over a 25
7
communication medium that allows multiple clients to take advantage of the information-gathering capabilities of the server. Thus, the server essentially acts as an information provider for a computer network.
[0021] In FIG. 1A, the system 100a for practicing the teachings of the present disclosure, as per an embodiment, includes a device A 102a, an application server 5 104a and a code server 106a, any two of which exchange data through network 10a.
[0022] In the instant figure, device A 102a functions as a client. The device A is a user’s device. Device A 102a is a client computer which can be a laptop, a handheld device such as a mobile phone, a cell phone, a smartphone, a personal digital assistant (PDA), a tablet, a wearable device like a smart watch, etc. The user 10 communicates with the application server 104a and/or Code server 106a with the help of Device A 102a.
[0023] The application server 104a is the server of the application code judging platform 200 of the present invention (also referred as software application). The application code judging platform 200 may be installed on either device A 102a (as 15 shown in FIG. 1A) or any other device known in the art. Alternately, the application code judging platform may be accessed via a host website 101b in the system 100b shown in FIG. 1B.
[0024] The application server 104a may comprise a hardware server including one or more processors, memories, input/output devices, and a network interface, such 20 as a modem. The application server 104a may communicate with one or more server processes (of for example, code servers 106a or a client process of for example, device A 102a over the network 10a that allows multiple servers/clients to take advantage of the information-gathering capabilities of the application server 104a. 25
8
[0025] The application server 104a may communicate with device A 102a via an interface. The interface may include, without limitation, a website, a web application, a web server API based user interface (UI) and an iFrame. It will be appreciated from the description below that the system and method of the present disclosure may be implemented in software that is stored as executable instructions 5 on a computer storage medium, such as memories or mass storage devices, on the application server 104a.
[0026] The application server 104a obtains inputs from device A 102a and/or code server 106a and further processes the obtained inputs to judge the quality of the application code. 10
[0027] The application code judging platform may find applications in, without limitation, judging quality of the application code, identifying bugs, filtering critical bugs, preparation of quality related reports, etc. Such functions may be performed by a plurality of modules included in the application code judging platform (described in detail below). 15
[0028] The code server 106a of the present invention is the server of a Git repository hosting service. The Git repository hosting service may be offered by any website known in the art, say, GitHub. As with the application server, the code server 106a may be a hardware server including one or more processors, memories, input/output devices, a network interface, such as a modem and/or other hardware 20 components elaborated above.
[0029] Network 10a includes without limitation the Internet, a local area network, a wide area network and/or a wireless network. The network 10a may comprise copper transmission cables, optical transmission fibres, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network 25
9
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.
[0030] FIG. 2 illustrates a plurality of modules of the application code judging 5 platform 200 of the application server 104a. The application code judging platform 200 may be accessed by entering account credentials such as a username and password which is specific to a user. Alternately, the application code judging platform 200 is freely accessible.
[0031] The application code judging platform 200 performs various functions, 10 without limitation, importing an application code, containerization of the application code, quality analysis of the application code, identification of bugs, etc. The said functions may be performed by various modules of the application code judging platform 200 as illustrated below.
[0032] The application code judging platform 200, for practicing the teachings of the 15 present disclosure, as per an exemplary embodiment depicted in FIG. 2, may include one or more of, an input module 202, a security module 204, a containerization module 206, a database module 208, an analysis module 210, a bug module 212, and a report module 214.
[0033] The application code judging platform 200 of the present invention may 20 include an input module 202. The input module 202 is configured to receive one or inputs from a user. The inputs may be obtained via an interface like a host website 101b, a mobile application, a widget, etc. of the application code judging platform 200. The inputs may include one or more code links, selection of a scenario, details
10
of the user, etc. as previously mentioned. In an embodiment, the code link is the link of a GitHub code. The code link provides access to the application code of the user.
[0034] The scenarios may be based upon real world problems to be solved by an application code of a user. One or more scenarios may be provided in the application code judging platform 200. The scenarios may include without limitation, 5 billing scenario, delivery scenario, information retrieval scenario, etc. The user is required to select one of the scenarios from the pre-stored scenarios. Further, every predefined scenario saved in the application code judging platform 200 has a corresponding custom code.
[0035] Alternatively, a new scenario (not predefined in the application code judging 10 platform 200) may be entered separately. In order to add a new scenario, the user is required to input a configuration file (for example, json, xml, script, etc). The configuration file specifies the configuration for the custom code which is to evaluate the application code corresponding to that scenario.
[0036] Further, the user may be requested to enter personal details such as name, 15 email id, identification no., registration no., etc. These inputs provided by the user may be temporarily or permanently saved in the database module 208.
[0037] The security module 204 is configured to protect the application code judging platform 200 against any change due to the application code of the user. In certain cases, the application code of the user might affect the operation of the application 20 code judging platform 200. In such cases, the security module 204 safeguards the application code judging platform 200 preventing any change in it. In an embodiment, the security module 204 performs sandboxing the application code of the user to protect the application code judging platform 200.
11
[0038] The containerization module 206 is configured to containerize one or more application codes. The containerization technology may be any technology known in the art. In an exemplary embodiment, Docker is used for containerization. A Docker image may be created from a Docker file and further a container may be spawn from it. 5
[0039] The containerization module 206 of the present invention is responsible for containerizing the application code of the user. Additionally, the containerization module 206 containerizes a custom code. The application code judging platform 200 includes a plurality of custom codes saved in the database module 208. However, the custom code which is containerized by the containerization module 206 depends 10 upon the scenario selected by the user.
[0040] Therefore, the containerization module 206 prepares two containers at a time i.e. a first container for the application code of the user (also referred as a user container) and a second container for the custom code (also referred as a test container). These containers are stand-alone executable packages of software that 15 include codes, runtime codes, system tools, system libraries and/or settings to run it. Therefore, any kind of orchestration complexity is avoided.
[0041] The database module 208 stores all the information and data of the application code judging platform 200. The data pertaining to, without limitation, the inputs of the user, the scenarios and their respective custom codes, reports on 20 quality and critical bugs, etc. are stored and saved by the database module 208. The database module 208 may be hosted with the application code judging platform 200 or may be an external database accessed by the application server 104a (as shown in FIG.1c).
12
[0042] The analysis module 210 is configured to perform a quality analysis of the user container (application code of the user). The analysis is performed by a process in which the test container (custom code) serves as a client to the user container.
[0043] The bug module 212 is configured to identify one or more critical bugs in the application code. The bug module 212 of the present invention operates in two 5 stages. In the first stage, the bug module 212 is utilized to identify one or more bugs in the application code of the user. In the second stage, the bug module 212 further filters the identified bugs to segregate one or more critical bugs from the non-critical bugs in the application code of the user.
[0044] The report module 214 of the present invention prepares one or more 10 reports on the quality of the application code of the user and critical bugs in the application code of the user. The reports may be a concise document which highlights the end result of the quality analysis. Optionally/additionally, the report may include suggestions for the user to improve coding skills.
[0045] The report(s) may be sent to the email id of the user which is provided by the 15 user as an input. Alternatively, the report may be saved in the database by the database module 208. The user may retrieve the report after entering the username and password. In another embodiment, the report is displayed on the device A 102a (or a remote device through the application code judging platform 200 is accessed) as soon as the report is prepared by the report module 214. 20
[0046] FIG. 3 shows exemplary steps involved in judging the quality of the application code of user. The process is initiated at step 302 when a user creates an application code saved on the code server 106a via device A 102. The user may create the application code which may aim to solve a real world problem of the scenario. The user may use any platform and programming language for creating the 25
13
application code. Once the application code is created, the user may retrieve a code link corresponding to the application code from the code server 106a.
[0047] The user then accesses the application server 104a via device A for quality analysis of the application code. At step 304, the user enters one or more inputs in the application code judging platform 200. The user is first required to select a 5 scenario from the available list of pre-stored scenarios. The user then uploads the code link of the application code on the application code judging platform 200. Optionally/additionally, the user may be required to enter the personal details. The input module 202 of the application code judging platform 200 receives the user’s inputs. The inputs may be optionally saved in the database module 208. 10
[0048] At step 306, the application server 104a communicates with the code server 106a for importing the application code via code link. In such a case, the application server acts as a client to the code server 106a. The application code is then retrieved from the code server 106a and further processed by the application code judging platform 200. 15
[0049] The steps 308-316 are internally performed by the application server 106a. At step 308, the security module 204 of the application server 106a performs sandboxing of the application code. The sandboxing of the application code ensures protection of the application code judging platform 200 against any change made by the application code to it. 20
[0050] At step 310, the application server 106a performs containerization of the application code. Further, based upon the scenario selected by the user at step 304, a corresponding custom code is selected and then containerized. The custom code may be retrieved from the database. The containerization module 206 creates two
14
containers i.e. a user container (application code) and a test container (custom code).
[0051] At step 312, the analysis of the application code is performed. The application code is judged for its quality. The custom code is a test case and hence acts as a client to the application code for its analysis. The analysis of the application 5 code is performed by the analysis module 210. In an embodiment, the custom code sends one or more inputs to the application code. Based upon these inputs, the application code is executed. The quality of the application code and the bugs are then identified.
[0052] At step 314, the bug module 212 identifies the bugs in the application code. 10 The identified bugs may be further filtered by the bug module to retain critical bugs from the list of identified bugs.
[0053] At step 316, the report module 214 prepares one or more reports based upon steps 310 and 312. The reports may include charts, tables or any other representative mode to depict the quality of the application code and critical bugs 15 so that the readability of the report is enhanced.
[0054] As should be appreciated from description above, the embodiments may be implemented in various ways, including as methods, apparatus, systems, or computer program products. Accordingly, the embodiments may take the form of an entirely hardware embodiment or an embodiment in which a processor is 20 programmed to perform certain steps. Furthermore, the various implementations may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions embodied in the storage medium. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices. 25
15
[0055] No element, act, or instruction used in the description of the present disclosure should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article "a" is intended to include one or more items. Where only one item is intended, the term "one" or similar language is used.
We claim:
1. A process for judging quality of an application code, the process comprising:
a. receiving at least a scenario and an application code;
b. providing a custom code based upon the scenario;
c. containerizing the custom code and the application code to yield a user 5 container and a test container respectively;
d. running test cases between the user container and the test container to analyze the quality of the application code; and
e. identifying one or more bugs in the application code.
2. The process as claimed in Claim 1 wherein the receiving comprises receiving a 10 configuration file if the scenario is a new scenario.
3. The process as claimed in Claim 1 wherein the receiving comprises obtaining one or more inputs from a user’s device, the one or more inputs include an application code link and selection of the scenario.
4. The process as claimed in Claim 1 wherein the receiving comprises obtaining the 15 application code from a code server via an application code link.
5. The process as claimed in Claim 3 wherein the code server is a GitHub server.
6. The process as claimed in Claim 1 wherein the scenario comprises one of a billing scenario, delivery scenario and information retrieval scenario.
7. The process as claimed in Claim 1 wherein the containerizing comprises preparing 20 containers of the application code and the custom code using Docker.
8. The process as claimed in Claim 1 wherein the process comprises preparing one or more reports.
9. The process as claimed in Claim 8 wherein the one or more reports comprise the quality of the application code, the one or more bugs in the application code and 25 suggestions to improve coding skills.
| # | Name | Date |
|---|---|---|
| 1 | 201711041408-STATEMENT OF UNDERTAKING (FORM 3) [20-11-2017(online)].pdf | 2017-11-20 |
| 2 | 201711041408-FORM 1 [20-11-2017(online)].pdf | 2017-11-20 |
| 3 | 201711041408-DRAWINGS [20-11-2017(online)].pdf | 2017-11-20 |
| 4 | 201711041408-DECLARATION OF INVENTORSHIP (FORM 5) [20-11-2017(online)].pdf | 2017-11-20 |
| 5 | 201711041408-COMPLETE SPECIFICATION [20-11-2017(online)].pdf | 2017-11-20 |
| 6 | abstract.jpg | 2018-01-03 |
| 7 | 201711041408-Proof of Right (MANDATORY) [10-05-2018(online)].pdf | 2018-05-10 |
| 8 | 201711041408-FORM-26 [10-05-2018(online)].pdf | 2018-05-10 |
| 9 | 201711041408-FORM 18 [26-08-2019(online)].pdf | 2019-08-26 |
| 10 | 201711041408-FER.pdf | 2021-10-22 |
| 1 | SearchStrategyE_21-10-2021.pdf |